4 ms·
Here are my recommendations, each category has a really different programming paradigm than the others: * Procedural: c / pascal / basic / fortran * OO: c++ /
by spapas82 10y ago
Here are my recommendations, each category has a really different programming paradigm than the others:
* Procedural: c / pascal / basic / fortran
* OO: c++ / java / c#
* Dynamic: python / ruby / javascript
* Funcional: lisp / scheme / clojure / haskell
* Logic: prolog
* Query: SQL
* Assembly
Learning something of each category should prepare you for almost everything!
- jghn 10y agoYour OO examples all come from the same portion of the OOP family tree. People should also explore the style of OOP which comes from systems like CLOS & Dylan.
- david-given 10y agoC++, Java and C# aren't really object oriented languages --- they're scalar languages with object systems bolted on. The giveaway is that they're full of types which aren't objects; ints, pointers, floats, booleans, etc. These are handled and implemented entirely differently to the object types. e.g.: compare a Java int (a scalar type) with a Java Integer (an object type). In a proper object-oriented language, everything is an object, including these. That allows you to do some really interesting things which are at the heart of the OO mindset. e.g. Smalltalk avoids having to use conditionals almost completely via dynamic dispatch: b ifTrue: [ 'b is true!' print ] b is a Boolean; ifTrue:block is an abstract method called on Boolean. But the values true and false are actually instances of subclasses of Boolean; True's implementation of ifTrue evaluates the block, and False's doesn't, and that's how you get different behaviour depending on whether b is true or false. The core language neither knows nor cares that booleans are special. (Actually, the bytecode does care, and has special accelerated opcodes to make operations of booleans fast for performance reasons, but that's just an implementation detail.)
- dualogy 10y agoLuckily I first encountered "OO" after having already learned the concept of structs/records in Pascal, this way I did not have to seriously entertain the idea that simple scalars oughta be anything-but..
- nickpsecurity 10y agoOO should be Smalltalk given it's real OO & implementations still exist. Functional should include an ML on it given all the languages influenced by SML and Ocaml. If they'd done functional, then I suggest Mercury for logic language as it's a better Prolog with functional and performance improvements. It's used commercially, too. Query, if logic programming is done, should be SQL followed by Datalog. Assembly should be x86 and one RISC (probably ARM).
- vram22 10y ago> I suggest Mercury for logic language as it's a better Prolog with functional and performance improvements. It's used commercially, too. Any idea what sort of applications the Mercury language is used commercially for? (Only) one I know of is Prince XML (from the Wikipedia article about either one of them). Not saying it's not used for more, just interested to know.
- nickpsecurity 10y agoRegular business apps or processes at Mission Critical IT: http://www.missioncriticalit.com/technology.html http://www.missioncriticalit.com/technology.html You could also use it anywhere Prolog is used. So, you could look up applications or commercial users of Prolog. Here's one in finance that would probably benefit from Mercury: https://dtai.cs.kuleuven.be/CHR/files/Elston_SecuritEase.pdf https://dtai.cs.kuleuven.be/CHR/files/Elston_SecuritEase.pdf
- vram22 10y agoCool, thanks. Good point about Prolog.
- FreeFull 10y agoMy favourite member of the Logic Programming family of languages would be http://picat-lang.org/ http://picat-lang.org/ . As far as implementations of Prolog go, http://www.swi-prolog.org/ http://www.swi-prolog.org/ is a good implementation to go with (It's mature, has a good ecosystem, and good documentation).