I love compilers and VMs, and I love Lua. Lua is not as well supported as many other scripting languages, but from a mindset like yours I'm sure you will fall in love with Lua too. I mean it's like lisp, (can do anything lisp can as far as I know), has lots of the main features from ADA, plus it's got meta programming built right in, with functional programming and object oriented programming loose enough to make any type of domain language you might want.
Besides the VM's code is simple C which means you can easily dig right into it to appreciate even at that level. (And it's open-source MIT license).
I doubt it but I don't know. – niXar Oct 14 '08 at 12:55 2 of course, that's old hat for lua.It was originally designed with that specific purpose and later it became a true language.(Was a data language for a Brazilian petrochemical company). But now a days it can also be used as a great way to store data in a Json/Lisp way.
– Robert Gould Oct 14 '08 at 14:22 3 Lua doesn't quite measure up to lisp macros. – TokenMacGuy Apr 28 '09 at 2:54 1 Lua is fairly well known in certain niches (e.g. Popular as a game scripting language, and in general in C/C++), less so in others (a lot of . NET and Java devs have no idea about it.
For my own take on it, I'd say that Lua is JavaScript done right - most of the same concepts, but cleaned up, and much cleaner syntax as well. The language is a pleasure to read, write and parse, and the implementation is a pleasure to use. – Pavel Minaev Dec 1 '09 at 22:55.
I am a fan of the D programming language. Here is a wikipedia article and and intro from the official site. Some snippets from the wikipedia article: The D programming language, also known simply as D, is an object-oriented, imperative, multiparadigm system programming language by Walter Bright of Digital Mars.It originated as a re-engineering of C++, but even though it is predominantly influenced by that language, it is not a variant of C++.
D has redesigned some C++ features and has been influenced by concepts used in other programming languages, such as Java, C# and Eiffel. A stable version, 1.0, was released on January 2, 2007.An experimental version, 2.0, was released on June 17, 2007. On features: D is being designed with lessons learned from practical C++ usage rather than from a theoretical perspective.
Even though it uses many C/C++ concepts it also discards some, and as such is not strictly backward compatible with C/C++ source code.It adds to the functionality of C++ by also implementing design by contract, unit testing, true modules, garbage collection, first class arrays, associative arrays, dynamic arrays, array slicing, nested functions, inner classes, closures2, anonymous functions, compile time function execution, lazy evaluation and has a reengineered template syntax. D retains C++'s ability to do low-level coding, and adds to it with support for an integrated inline assembler. C++ multiple inheritance is replaced by Java style single inheritance with interfaces and mixins.
D's declaration, statement and expression syntax closely matches that of C++.
I guess a lot depends on what you mean by 'non-mainstream'. Would lisp count as non-mainstream?
3 It may not be forgotten, but I think it is one of those languages that most programmers will have heard of, but know almost nothing about. – kaybenleroll Oct 15 '08 at 1:43.
I would suggest having a look at Erlang - it's been getting a bit of press recently, so some of the learning resources are excellent. If you've used OO and/or procedural languages, Erlang will definitely bend your mind in new and exciting ways. Erlang is a pure functional language, with ground-up support for concurrent, distributed and fault-tolerant programs.It has a number of interesting features, including the fact that variables aren't really variables at all - they cannot be changed once declared, and are in fact better understood as a form of pattern.
There is some talk around the blogosphere about building on top of the Erlang platform (OTP) and machine support for other languages like Ruby - Erlang would then become a kind of virtual machine for running concurrent apps, which would be a pretty exciting possibility.
Smalltalk (see discussion linked here). Sort of the grand-daddy of the dynamic languages (with the possible exception of Lisp and SNOBOL). Very nice to work with and sadly trampled by Java and now the newer languages like Python and Ruby.
3 Disagree - Smalltalk is duck typed (you can even override #notImplemented to frig the behaviour of a missed method invocation). Ruby is quite heavily derived from Smalltalk and I don't see Python as being significantly more dynamic either. – ConcernedOfTunbridgeWells Oct 14 '08 at 15:45.
FORTH was a language designed for low level code on early CPU's. Its most notable feature was RPN stack based math operations. The same type of math used on early HP calculators.
For example 1+2+3+4= would be written as 1, 2, 3, 4.
1 FORTH is a highly interesting language to implement - most of what looks like syntax in the language is actually convention. I implemented a subroutine threaded version on my own in a semester as an undergrad - totally worth it. – plinth Oct 14 '08 at 12:55 4 the correct FORTH is 1 2 + 3 + 4 + – TokenMacGuy Apr 28 '09 at 2:56 1 In terms of the operations that are performed, 1 2 + 3 + 4 + is equivalent to 3 1 2 + 4 + + and 4 3 1 2 + + + – Nosredna Jun 23 '09 at 1:57 1 @Daniel an @TokenMacGuy That assumes that the order of evaluation of the infix expression is from left to right.In the mainstream language (say C) that order is undefined, so no postfix expression is truly more correct than other.
– fortran Jan 18 '10 at 14:08.
I've recently fallen in love with Ocaml and functional languages in general. Ocaml, for instance, offers the best of all possible worlds. You get code that compiles to executable native machine language as fast as C, or universally portable byte code.
You get an interpreter to bring REPL-speed to development. You get all the power of functional programming to produce perfectly orthogonal structures, deep recursion, and true polymorphism. Atop all of this is support for Object-Orientation, which in the context of a functional language that already provides everything OOP promises (encapsulation, modularization, orthogonal functions, and polymorphic recyclability), means OOP that is forced to actually prove itself.
Boo targets the . NET framework and is open source. Inspired by Python.
Haskell and REBOL are both fascinating languages, for very different reasons. Haskell can really open your eyes as a developer, with concepts like monads, partial application, pattern matching, algebraic types, etc. It's a smorgasbord for the curious programmer. REBOL is no slouch either.
It's deceptively simple at first, but when you begin to delve into concepts like contexts, PARSE dialects, and Bindology, you realize there's much more than meets the eye. The nice thing about REBOL is that it's much easier to get started with it than with Haskell. I can't decide which I like better.
PROLOG is a rule-based language with back-track functionality. You can produce very human-readable (as in prosa) code.
I find constraint languages interesting, but it is hard to know what constitutes forgotten or unknown. Here are some languages I know about (this is certainly not an exhaustive list of any kind): Ciao, YAP, SWI-Prolog, and GNU Prolog are all Prolog implementations. I think they are all open source.
Ciao, gnu prolog, and probably the others also, as is common in Prolog implementations, support other constraint types. Integer programming for example. Mozart and Mercury are both, as I understand it, alternative logic programming languages.
Alice is more in the ML family, but supports constraint programming using the GECODE C++ library. Drifting a little bit off topic.... Maude is an interesting term rewrite language. HOL and COQ are both mechanized proof systems which are commonly used in the languages community.
Lambda-the-Ultimate is a good place to talk about and learn more about programming languages.
I would have to say Scheme, especially in it's R6RS incarnation.
Modula-2 is the non-mainstream language that I've found most interesting. Looks mainstream, but doesn't quite work like what we're used to. Inherits a lot from Pascal, and yet is different enough to provide interesting learning possibilities.
Have a look at Io at iolanguage.com/ or Lisaac at: https://gna. Org/projects/isaac/ or Self at: self.sourceforge.net/ or Sather (now absolutly forgotten) or Eiffel eiffel.com Why here are a few reasons. Io is absolutly minimalistic and does not even have "control flow elements" as syntacit entities.
Lisaad is a follow-up to Eiffel with many simplifications AFAIKT. Self is a followup to Smalltalk and Io has taken quite alot from Self also. The base thing is that the distinction between Class and Object has been given up.
Sather is a anwer to Eiffel with a few other rules and better support for functional programming (right from the start). And Eiffel is definitly a hallmark for statically typed OO-languages. Eiffel was the first langauge whith support for Design by contract, generics (aka templates) and one of the best ways to handle inheritance.It was and is one of the simpler languages still.
I for my part found the best libraries for Eiffel..... It's creator just has one problem, he did not accept other contributions to the OO field..... Regards.
I recently learned of the existence of Icon from this question. I have since used it in answers to several questions. (1, 2, 3, 4) It's interesting because of its evaluation strategy - it is the only imperative language I know that supports backtracking.It allows some nice succinct code for many things :).
Learning any language that requires you to rethink your programming habits is a must. A sure sign is the pace at which you skim through the documentation of a language's core (not library). Fast meaning fruitless here.My short list would be, in my order of exposure and what were the concepts I learned from them: Assembly, C: great for learning pointers and their arithmetic.
C++: same as C with an introduction to generics, as long as you can stand the incredibly verbose syntax. Ruby/Lua: scripting languages, dynamically typed, writing bindings for existing C libraries. Python/C#/Java: skipped, these languages look to me as a rehash of notions originating elsewhere with a huge standard library.
Sure the whole packages are nice, but you won't learn new concepts here. OCaml: type infererence done right, partial application, compiler infered genericity, immutability as a default, how to handle nulls elegantly. Haskell: laziness by default, monads.
My €.02.
2 None of these are obscure, or forgotten. Most of them aren't even non-mainstream. – Justin Smith Jan 18 '10 at 13:45.
I can't believe Logo is so forgotten. Ok, it's Logo. Sort of like lisp, but with slightly uglier syntax.
Although working with lists in Logo, one encounters the delightfully named 'butfirst' and 'butlast' operations. =P.
ML. Learning it and using it forces you think differently about programming problems differently. It also grants one patience, in most cases.Most.
It's brand new, so it's unknown and not mainstream (yet). It's interesting because the syntax looks like what happens after you put C and pascal into a jar and make 'em fight.
Well once it was called MUMPS but now its called InterSystems Caché intersystems.com/cache.
First answer - Scheme. It's not too widely used, but definitely seems like a solid language to use, especially considering the robustness of DrScheme (which in fact compiles Scheme programs to native binary code). After that - Haskell is incredibly interesting.It's a language which does lazy evaluation right, and the consequences are incredible (including such things as a one-line definition of the fibonnaci sequence).
Going more mainstream, Python is still not really widely accepted in the business circles, but it definitely should be, by now...
Ken Kahn's ToonTalk, a cartoon language with hard-core theoretic underpinnings: toontalk.com/ Prograph: en.wikipedia.org/wiki/Prograph ... seems Prograph lives on as Marten: andescotia.com/products/marten/ Self's IDE was/is a thing of beauty, talk about Flow (in the CsÃkszentmihályi sense)... Overall, though, I'd have to say Haskell is the most interesting, for the potential adavances in computing that it represents.
Harbour for dynamic type. Great opition to business apps.
Mathematica because it is a uniquely successful term-rewrite language (a completely different method of evaluating code! ). Cheers, Jon Harrop.
Reia! wiki.reia-lang.org/wiki/Reia_Programming... It's Erlang made sense, it's beutifull and I'm in love. It's so unknown that it doesn't even have a wikipedia page!
The first major (non-BASIC) language that I learned was Dream Maker, from byond.com. It's somewhat similar to C++ or Java, but it's largely pre-built for designing multiplayer online games. It's very much based on inheritance.It's an intersting language especially as a starting language, it gets gratifying results quicker, and lets be honest, most people who are first learning to program are interested in one thing... games.
I find Factor, Oz and OCaml quite interesting. In fact, I have started using Factor for personal projects.
Rebol of course! It's so simple but so powerfull learn it at reboltutorial.com.
I've recently looked up a lot about Windows PowerShell. While not necessarily just a language. It's an awesome shell that has a built-in scripting language.It's basically a super-beefed up command line shell.
Unlike Unix shells, where everything is string text (which definitely has it's benefits), PowerShell commands (cmdlets) use objects. It's based on the . Net framework so you guys who are familiar with that will have probably already figured out that anything PowerShell returns can be piped and the properties and methods of that object can be used.
It's fun to say "everything is an object! " again just like when OOP was getting big. Very neat stuff.
For the first time, Windows is implementing some of the Unix command-line interface tools similar to grep and the whole bunch.
While not necessarily just a language. It's an awesome shell that has a built-in scripting language. It's basically a super-beefed up command line shell.
Unlike Unix shells, where everything is string text (which definitely has it's benefits), PowerShell commands (cmdlets) use objects.
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.