7 ms·
The Grace Programming Language
- mahmud 16y agoIgnoring the numerous typos and the lack of a working implementation, this stands out: "Give the last 20 years experience with C, Java, and other “real” languages, perhaps it is time to reconsider, and instead create a language designed for novices." Such language exists, and it's called Oz. http://en.wikipedia.org/wiki/Oz_(programming_language) http://en.wikipedia.org/wiki/Oz_(programming_language) It's the most mind-expanding, most diverse in the paradigms it supports, and certainly one of the most interesting languages out there. And it's a tiny kernel language the size of Scheme that one can learn piece-meal. You can use it like Pascal, or Scheme, or Prolog, or Self, or Java, or Erlang .. Mozart/Oz can teach newbies, no doubt. But it can't be taught by anyone. It requires an open mind and someone who is a competent programmer, not just an assignment pusher. I don't think most profs and TAs will be able to teach it as well as they should, but students can learn it on their own. http://www.info.ucl.ac.be/~pvr/paradigms.html http://www.info.ucl.ac.be/~pvr/paradigms.html Click on the PDF poster there and see how broad the language is.
- swah 16y ago> and the lack of a working implementation This is great news, I don't actually have to download and play with this one :)
- mahmud 16y agoNot even a specification. By the way, I know a few of the names there and I know how completely different their computing tastes and personalities are. I would love to see the archives for the discussion mailing-list for this one, will be very entertaining .. and informative :-)
- limmeau 16y agoHaving taught/TA'd first-year university programming courses in both Scheme and Java, I find the idea of a teachability-oriented imperative OO programming language quite appealing. Our first-semester course used DrScheme, and the simplicity of language and IDE helped us focus on teaching a structured approach to programming, with unit tests first etc. Also, whenever the program did not behave as expected, we could go through the program with Scheme's eyes and mentally apply the evaluation rules. In the second semester, students are supposed to learn Java, and that was challenging because you really have to understand static methods and String arrays just to write a Helloworld program of which you can explain every line. Also, Java rewards using public field accesses instead of getters&setters (in the short term), which is just the habit you don't want your students to adopt. I could go on with arrays vs. collections, classes in the io package which should be interfaces etc... So if there was a clean statically-typed modern OO language, I'd look forward to using it.
- endergen 16y agoI'm not a fan of Teaching languages, teach algorithms and clean concepts. It takes much time to get good at a language you might as well be using one to learn your algorithms with. And not just the language but the Version Control, Libraries, Documentation Tricks, Culture, and Relationships that come with truly learning a Language.
- limmeau 16y agoAt least version control and writing good documentation are orthogonal to the choice of language.
- stefs 16y ago> (sometimes by way of C or C) > New languages such as C and Scala have learned lessons from Java's design (... blah blah ...), and also retain or duplicate many features for backwards compatibility with C or Java. drunk blogging ftw.
- zephyrfalcon 16y agoI think that somehow a few special characters disappeared here; maybe they were eaten by some kind of text processor or something. I think the first line should be "C or C++", the second one "C# and Scala".
- raganwald 16y agoI don't understand how "suitability for teaching" and "suitability for industry" differ, except that industry naturally wants to stick with whatever it already has. But if you can design a language that serves as an excellent medium for teaching all of the important ideas in Computer Science, why wouldn't you go on to build the libraries and infrastructure you need to make it viable in industry?
- Morendil 16y ago> I don't understand how "suitability for teaching" and "suitability for industry" differ Industry is made up of people who have by necessity cultivated a patience with excessive complexity. In particular, I suspect that many unnecessarily complex or counterintuitive language features arise in imitation of what the designers have learned to live with in other languages, even as their focus is on "improving" some aspect that they think is important for industry. If you did design a language which favored learnability at every opportunity you might not end up with something that flattered everyone's preconceived notions of what is suitable for industry, either. I hesitate to name examples here, as there is a significant risk of trolling...
- cageface 16y agoIt's simple. Designing a language that clearly illustrates CS fundamentals and a designing a language that supports maintenance of huge codebases by teams of programmers of varying ability are two very, very different problems. It's no accident that CS profs love Scheme and banks love Java. What really matters is how well your language supports your primary level of abstraction. The turtles-all-the-way-down nature of elegant languages like Smalltalk or Lisp doesn't really make that much difference when you're mostly manipulating high-level third party APIs and where mature tools and predictable, easily readable code count for more than the ability to roll your own new object system in the core language.
- raganwald 16y agoFirst, I am under the impression that a great many CS professors teach CS using Java. Second, are you suggesting that since banks love Java, then Java is a language that supports maintenance of huge codebases by teams of programmers of varying ability to a greater extent than Scheme or any other language? Third, I am confused by the suggestion that "elegant" languages are somehow unsuitable for writing "predictable, easily readable code." Can you expand on this? Update: Fourth, I forgot the essential point I was implying in my original question. What is there about "maintenance of huge codebases by teams of programmers of varying ability" that isn't a CS fundamental? Sure, if you are talking about Computer Science as a study of the properties of a formal system, this is irrrelevant and lost amidst talk about category theory and turing equivalence. However if you look at CS in a wider context you have professors teaching things like encapsulation, which has certain important implications for the study of formal systems but also has important implications for "maintenance of huge codebases by teams of programmers of varying ability." This is part of the motivation for Wirth expanding Pascal into the Modula family of languages: To create a language that was useful for teaching and practical for the construction of the Lilith workstation. I can't imagine anything about "maintenance of huge codebases by teams of programmers of varying ability" that isn't a suitable topic for teaching and especially research.
- Kilimanjaro 16y agoHere, the simplest language that works: $ 'Hello World!' @ 10 $ 'Hello world' @ 1:10 as i $ i*i ? 2>1 $ 'Two is greater than one' | $ 'No it is not' # fact(n) ? n<2 -> n | -> fact(n) * n $ fact(5) If you can guess its basic constructs then you are already proficient in it. As in python, white space is important.
- Morendil 16y agoBTW, I'm just being a messenger here - I got this link off Twitter and thought it'd be of relevance here. I can't muster much enthusiasm for the initiative myself. My gut reaction is "oh no, as if we needed one more", and I winced at the blog post which said "the most important thing in a new language is that you can println 'Hello world'". I can't find any evidence of design thinking that strives to achieve the lofty objectives set out in the PDF paper. But I'm looking forward to the discussion :)
- xtho 16y agoThe lack of innovation in the design principles (see the abstract) is well reflected in the name: - http://freshmeat.net/search?q=grace http://freshmeat.net/search?q=grace - http://www.google.at/search?q=grace%20software http://www.google.at/search?q=grace%20software Could be a case of the NIH-syndrome. The jury is waiting for some sort of implementation.