News for hackers. Stuff that matters.
Re:In 2017, learn every language by spapas82 on Saturday December 31, 2016 @11:55AM (#13291806)
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!

Re:In 2017, learn every language by david-given on Saturday December 31, 2016 @12:20PM (#13291955)
C++, 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.)

Re:In 2017, learn every language by dualogy on Saturday December 31, 2016 @12:30PM (#13292010)
Luckily 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..
Re:In 2017, learn every language by nickpsecurity on Saturday December 31, 2016 @12:25PM (#13291982)
OO 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).
Re:In 2017, learn every language by vram22 on Sunday January 01, 2017 @05:20AM (#13295324)
> 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.

Re:In 2017, learn every language by nickpsecurity on Sunday January 01, 2017 @01:13PM (#13296597)
Regular business apps or processes at Mission Critical IT:

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

Re:In 2017, learn every language by vram22 on Sunday January 01, 2017 @04:04PM (#13297342)
Cool, thanks. Good point about Prolog.
Re:In 2017, learn every language by jghn on Saturday December 31, 2016 @12:18PM (#13291937)
Your 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.
Re:In 2017, learn every language by FreeFull on Saturday December 31, 2016 @02:25PM (#13292655)
My favourite member of the Logic Programming family of languages would be http://picat-lang.org/ . As far as implementations of Prolog go, http://www.swi-prolog.org/ is a good implementation to go with (It's mature, has a good ecosystem, and good documentation).