Good tutorials to understand Domain Specific Languages (DSLs) from the scratch , to start a survey thesis [closed] - dsl-tools

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 12 months ago.
Improve this question
My thesis topic is about Domain Specific languages in general, I want to focus on design or implementation for external or internal DSLs but I can't even think or start because I am facing problems with understanding the concept of DSLs ..
I have read and collected so many papers and surveys about this issue but all of them I consider as advanced.. I need a good tutorial ( for beginners ) to understand the whole concept and phases for DSLs from the scratch ..
I have read the first chapter for DSL by Martin Fowler , Fowler started with state machines and hard programming codes from the first page of his book and the problem is that I am not very good in programming in general, I have no experience, my thesis will be a survey about DSLs with no programming work. Until now I don't know what to focus on because the survey should be specific on on area like designing techniques or comparisons in designing or implementing , but because I cant get the big picture I can't even decide. Any suggestions about this issue also I will really appreciate that.
Please help me and thank you very much. I always look at the questions and answers in this great website and I believe that I will find a solution for my nightmare problem here!
Thanks a lot
Nat

This book is Bible for DSL's in my opinion. This book used to be free when it was in draft. You can also find other learning resources there.
Go through this post to find successful DSL's. This post might help you in identifying various flavors and various domains where they are being used.

It will be a lot of work for you if you want to understand it, so if you are not skillful with programming, learn it or choose easier thesis.
I wrote my thesis about model driven software development and domain specific languages withouth even a basic knowledge about modeling etc. It can be done, but I spent much time reading (which I enjoyed).
For the most basic introduction I would recommend se-radio.net podcast episodes 5 and 6 (...and there are many more about more advanced topics on MDSD/DSLs).

I'd read James Neighbors thesis, after reading his executive summary. He's the guy that defined the terms "domain analysis" and "domain engineering" in the context of defining "domain specific languages". And he shows a program generation system, Draco, that generates an astonishing variety of complex application codes based on these ideas. (The thesis is a lot more readable than you might expect, but expect to see some real code!).
You can read some history on this topic, too, and once again, how those who don't know their history are doomed to repeat it.

Related

Can I find another course similar to this UC Berkeley course [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I have been looking online to learn how the current crop of web applications manage their data, on both the server side and client side.
Like, I'm intrigued by Google Suggest, personal recommendations based on my "likes", etc.
So, while I searched for content where I could learn such data structures and algorithms, I came across this course provided by UC Berkeley - http://extension.berkeley.edu/cat/course460.html
The description of this course matches exactly with what I really want to learn.
Study the algorithms that provide the
power behind many of the most
effective Web applications. Where do
the phases come from for lists like
Google suggests? What techniques can
generate personal recommendations? How
do social networking, mash-ups, and
mixed-media sites select and
categorize similar groupings of binary
content? In this course, you gain a
solid understanding of current
algorithms and data structures for
search, recommendations, groupings,
classifications, and combinations of
classifiers.
However, there seems to be no way to find more details about this course.
Can someone here help me find a book / online course / site where I could learn more on this subject ?
Rex Griffiths and I just launched a video podcast about all this stuff this week. You can find it over at http://StatCasts.com. We should bring along the funny as well as teach something. You can follow us on twitter (#StatCastsCom), where we try to link to cool things we're seeing on this front in real time, or just go to the show. We'll have a lot of links for other people's stuff. Plus, Rex and I are both active developers and have quite a bit of open source software that we give away for this kind of thing.
There is the Stanford Course on Machine Learning which is really interesting, but a little hard to follow without some of their offline discussion.
Outside of courses, you could look at software packages or books and the communities that surround them. They tend to fill in the gaps about this sort of thing. So, here's a list of some what's out there:
Mahout, a machine learning library for Hadoop. There's a Manning book out on this as well. This is a good solution if you want to learn how to do this stuff with Big Data.
Modeling with Data, a great book by Ben Klemens who works at the Brookings Institute and explains a really good foundation for this kind of thing.
Weka and a book called Data Mining. This is a great way to get involved without getting lost. Weka has an easy-to-use interface that isn't much harder than a spreadsheet to use.
The R language is an amazing place to go for this kind of thing. You'll usually find anything analytical you want to do in this package. I have a few books kicking around here for that. The R Book is my favorite, though it's a bit expensive.
Octave is the GNU response to MatLab (commercial software). They both have incredible resources behind them.
I think Ben Mabey put together a pretty good pinboard full of good teaching links for this kind of thing.
Finally, my stuff is Fathom, an open source framework for solving these kinds of problems and http://openmobi.us, a website that implements the Fathom library for people that want to get straight to it. With those projects, I'm trying to make it easy for people to get involved with building their own models and using them for their businesses or education.

What are some good UX books? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I am interesting in creating a better User Experience (UX). There are a lot of books out there, what are some that would be useful to a software engineer?
My favorites:
User Interface Design for Programmers by Joel Spolsky. A good first book for programmers. Phrases that will stick in your mind and affect your design, like "People can't control the mouse."
About Face: The Essentials of Interaction Design by Alan Cooper et al. Desktop-centric. Excellent.
Don't Make Me Think by Steve Krug. Web-centric. Short, easy read, good ideas, some remarks on usability testing.
Designing Interfaces: Patterns for Effective Interaction Design by Jennifer Tidwell
The Elements of Friendly Software Design by Paul Heckel (out of print, pre-GUI, still some good principles, like "Avoid frustrating the user")
Designing Visual Interfaces: Communication Oriented Techniques by Kevin Mullet and Darell Sano. Out-of-print, and out-of-date graphics, but still excellent. Good chapter on icons.
The Essential Guide to User Interface Design: An Introduction to GUI Design Principles and Techniques by Wilbert Galitz. Focuses on usage of low-level controls. Good chapter on communicating with the user.
At some point in your career, you may enjoy this wonderful book that draws parallels across multiple fields of design. (For example, the "confirmation" technique occurs both in software design and nuclear launch control.)
Universal Principles of Design by William Lidwell
it's specific to Web UX, but Steve Krug's Don't Make me Think is really interesting (and short, which always helps!). And to be fair, some of it translates to non-web apps too.
As well as giving you advice on the design of the UX, it talks about usability testing, which is something I think a lot more apps should do. (Websites too, but most of them do it already).
The Design of Everyday Things by Don Norman.
I would also recommend The Humane Interface: New Directions for Designing Interactive Systems by Jef Raskin. Has some really inspiring ideas.
Look up "The Design of Every day things", by Donald Norman. It was mandatory reading for the UI courses when I was in university.

Good websites and/or books to learn game algorithms? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I'm interested in learning video game algorithms. (For iPhone particularly, but generally as well. I assume certain concepts are the same.) I am best off (personally) learning from a book but websites are useful too.
What has helped you learn game programming algorithms and concepts?
EDIT:
As per request, I'll clarify the types of algorithms... I was looking for any algorithms really, but I guess I was interested in (top-down view) platformer algorithms, but, now that you mention it, Seth, I do wonder about chess...
EDIT2:
I'm making this a Community Wiki due to the nature of the question.
I am interested in 2D platformer algorithms at the moment. I would like to remake an old video game (a personal favorite, publisher now defunct.)
I'd recommend Realtime Collision Detection by Christer Ericson ( Director of Tools and Technology at Sony Santa Monica Studios - aka God of War ) - despite the title it covers a wider range of approaches than just collison detection including - data structures and algorithms for modern games development.
A lot of computer games coding is also simply good old-fashioned coding i.e data structures + algorithms so don't forget the two classics:
The Art of Computer Programming by Donald Knuth
Programming Pearls by Jon Bentley
There are also some excellent on-line R&D references on games development by many studios such as:
Mike Acton's Blog
Insomniac's R&D Site
Valve's site
DICE's site
There's some information atGamestruction which is a stack exchange based site, or you could ask this question there too.
You could try GameDev.net, DevMaster.net or Gamasutra for various game development resources.
There are various games development wikis including ones at GameDev.net and DevMaster.net and one at GPWiki.org
I don't think there is any one definitive source for game development algorithms, there are so many different ways to approach game development even within a single genre.
The best advice I can give it to learn by playing with existing technology, get a hold of some game frameworks and go through their tutorials. I don't know of many for iPhone but you could look at the Torque Game Engine or Ogre3D for PC based technologies. Microsoft's XNA Framework is also an excellent starting point for console development. Any of those will give you a good idea of the basic structure of a game project and some of the core algorithms like pathfinding, collision detection etc.
If you'd rather read book though, I always recommend the Game Programming Gems series, last I looked they had six or seven volumes but they all contain collections of articles on all aspects fo game development.
Best of Game Programming Gems
These titles are a few years old, but have updated versions at this time. Pay attention specifically to the computational geometry content.
Andre LaMothe - "Tricks of the Windows Game Programming Gurus"
http://www.amazon.com/Andre-Lamothe/e/B000ARBG92/ref=ntt_athr_dp_pel_pop_1
and
Corment, Leiserson, et. al. - "Introduction to Algorithms"
http://www.amazon.com/Introduction-Algorithms-Thomas-Cormen/dp/0072970545/ref=ntt_at_ep_dpi_2
Artificial Intelligence in Game Design
Math and Physics # gamedev.net

Tool or formula for calculating man-hours required for a project [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
Is there a tool or a formula for calculating man-hours required for a certain project? Either by specifying the details, either, even better, input the sources and have it calculate a measure of how many man-hours were put into the project.
Edit:
I often hear about big projects, with components built in parallel by numerous groups, that they took a couple of thousand man-hours to complete, but they were finished in just x days... probably an argument supporting the teams' efficiency... so I think it might be possible to at least estimate these measures. I am convinced that efforts were put into making these estimations automatic, and even though they might not reflect the actual time invested in the project, at least I'd like to know that the "state of the art" is in this kind of endeavour.
There is a whole science to this called Function Point Analysis.
Read through this introductory article.
Or try the Wikipedia article for more references and external links to follow up.
This technique is based on looking at the functions which are to be implemented in the software, and assigning a point count to them. Then you plan on how many points can be achieved per day to figure out a schedule.
There are also techniques that lean more on psychology which involve asking people to estimate the time of of individual tasks in a project with best, worst, most likely, cutting their estimates in half and padding out the end of the project with an unspecified buffer time which can be used for late running tasks, only if needed. This works by giving the developers a short timetable for results, but promising management/customers a longer timetable. It's called Critical Chain Project Management and has been used with success in defense projects.
Introduction to Critical Chain
Wikpedia article
Estimating the man-hours for a new project is more about experience than formulae. When I started programming there was this notional "10 lines per hour of debugged code" that was the yard stick but that figure varies hugely based on the type of code, the language and the experience/skill of the software engineer.
I suggest that you search the internet for articles on estimating software development projects, one example of such an article would be this How to estimate a software project in man-hours?. But it's by no means definitive but does demonstrate the complexities involved.
As for looking at some code and estimating, you might as well stick a wet finger in the air and guess. Only the programmers involved would know and even then I suspect the answer wouldn't be accurate. At the end of the day it's an estimate, not a quote or a fact, and as such often open to wild variations.
Unfortunately general the answer is no -- there is no, ready to use, formula to calculate man-hours for software project.
However, software project estimation, is a huge problem and there are a lot of ways to deal with it.
Many solutions are described in Steve McConnell's book Software Estimation: Demystifying the Black Art.
Steve's company offers also some resources and tools (some of them are free) which help to estimate software project.

Is there any good reference for object oriented|good design in vb6? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
i'm currently in the process of modifying a legacy editor application and i need to add in a few data structures which i have made into a class of it's own which i later add to a collection object. but thus far i'm little bit blurry on where to put all of my functions which is related to that object. i'm thinking maybe OO like design, but i'm not quite sure how to do this in vb6. else all the functions are currently in a module mdl file. which are set as public function.
is there any good reference, book or whatever which i can learn more about how to properly design for vb6 app? for the current work and for future work i guess.
thanks.
Are you familiar with Rocky Lhotka's work? I would recommend reading Visual Basic 6 Business Objects.
Visual Basic 6 Business Objects provides a thorough introduction to employing objects that are used to model real-world business problems.
You can also visit www.lhotka.net
Edit :
I know it sounds like a lot of trouble, but I would really recommend you take the time and read Rocky's book. He talks about simulating OOP principles eg. like simulating inheritance in vb6 ect.
Another good source of information is Deborah Kurata, she's written a series of books about OO coding in VB. Less well known than Rocky Lhotka (who is excellent), and concentrates more on pure OO, not the ORM/DB layer that he does.
All the reference cited so far are good. However the Design Patterns by the Gang Of Four is usable for Visual Basic 6. The trick to remember that most of the pattern talked about in Design Patterns rely on implementing interfaces which VB6 can do well. In fact you will find most design patterns involve implementing interfaces.
This is because most design patterns focus on setting up how various objects interact as opposed to reusing behavior. So interface become much more important.
Design Patterns by the GoF
Patterns by Martin Fowler
The various GUI and presentation patterns is the most applicable in my opinion.
My own application is structured completely as a series of design patterns. For example I use a Passive View for my presentation layer. The various views called command objects which does the actual modifications of the model. I use factories to retrieve the list of reports, file types, and shapes my software support. All done in VB6 using the Design Patterns book by the GoF.
Before getting deep into the theological aspects of OOP those books cover you might begin by simply reading the VB6 documentation. In particular the sections on component design.

Resources