• Forum
  • Lounge
  • What programming language should I learn

 
What programming language should I learn next?

Hello,

I've been programming in and learning C/C++ for the past 6 years as a hobbyist. I wouldn't call myself advanced or "good" yet (only competent), but I've decided to learn another language that's different from C++. Because C++ is so complex (not hard, just complex), multi - paradigm and low level, I would like a minimalist language (in terms of syntax, standard library size and dependencies) that is highly pure (sticks only to one paradigm and either makes another paradigm impossible or impractical) and high level. It should be well suited to large projects (I have a habit of doing very large projects in my free time), have multiple open - source compilers available, does not require a VM to run and executes relatively quickly.

Thanks,
ndrewxie
Last edited on
Because C++ is so complex (not hard, just complex), multi - paradigm and low level ...


yeah, c++ is complex, and you have kind of direct memory access ("low-lovel"). but no, the language isnt defined as "multi-paradigm", it depends on how you code with it ... you can avoid using classes at all and avoid object-oriented coding, but does that make sense ? in general, i dont think so ...


I would like a minimalist language (in terms of syntax, standard library size and dependencies) that is highly pure (sticks only to one paradigm and either makes another paradigm impossible or impractical) and high level.


c++ can be "highly pure" regarding the paradigm (depends on how you use it) and "high-level" (depends on the "level" of libraries you use).


It should be well suited to large projects (I have a habit of doing very large projects in my free time), have multiple open - source compilers available, does not require a VM to run and executes relatively quickly.


do you consider operating systems, such as MS windows, as "large projects" ? and g++ is open-source.


i personally would learn the language most commonly used out there, so i think i'd choose java + java-script
Last edited on
For what it is worth I see a lot of C# being used.

I know this is not the place for another question but this seems to be the only place I can communicate. Does anyone know of some reason I would not be able to ask a question in any of the Forums? Is there something special you have to do to be able to post a question?
Any registered user can create new posts.
Goto http://www.cplusplus.com/forum/beginner/
There should be a button "New topic" at the top right
Same for all the other topics
[quote=John87Connor (15)]yeah, c++ is complex, and you have kind of direct memory access ("low-lovel"). but no, the language isnt defined as "multi-paradigm", it depends on how you code with it ... you can avoid using classes at all and avoid object-oriented coding, but does that make sense ? in general, i dont think so ...
[/quote]

C++ is multi paradigm, according to Scott Meyers: 1 C programming; 2 OO C++; 3 STL ; 4 Template.

I think there should be a 5th: Template Meta Programming (TMP).
^ also according to Stroustrup himself, although his tone suggests that he doesn't like the buzzwordy-feel of the term.
http://www.stroustrup.com/01chinese.html
The signal strength of C++ is exactly that it supports several effective styles of programming (several paradigms, if you must), and combinations of these styles. Often, the most elegant, most efficient, and the most maintainable solution involves more than one style (paradigm). If you must use fancy words, C++ is a multi-paradigm programming language.
I think it largely depends on what kind of projects you create. C++ is a multi-paradigm programming language that allows you to write in a procedural or object-oriented way (or through a combination of both). In general, since you mentioned that you write large projects, you will almost surely benefit from an object-oriented approach.
ndrewxie wrote:
I would like a minimalist language (in terms of syntax, standard library size and dependencies) that is highly pure (sticks only to one paradigm and either makes another paradigm impossible or impractical) and high level. It should be well suited to large projects (I have a habit of doing very large projects in my free time), have multiple open - source compilers available, does not require a VM to run and executes relatively quickly.


I think those requirements are mostly incompatible. "Highly-pure" languages are generally not suitable for large projects, since reality of software engineering favors flexibility and compromise. Compilation to native code (since you don't want a VM) also removes nearly every "highly-pure" language from the list as well as many industrial languages.

I think Haskell is the closest programming language to satisfying all those points.

minimalist: kind of. Certainly doesn't grow as fast as C++: Haskell 2010 langauge and library definition is 309 pages: https://www.haskell.org/definition/haskell2010.pdf . Haskell 98 was 263 pages: https://www.haskell.org/definition/haskell98-report.pdf (compare to C++11's 1310 pages vs C++98's 748 pages)
highly pure: extremely
high level: extremely
large projects: getting there - https://wiki.haskell.org/Haskell_in_industry
multiple open-source compilers: https://wiki.haskell.org/Implementations
no VM: see compilers above
quick: https://benchmarksgame.alioth.debian.org ... okay, not as good as OCaml, which would've been my runner-up for you, but OCaml seems to have basically just one compiler.
In addition to Cubbi’s Haskell:

Tcl/Tk
http://wiki.tcl.tk/

Scheme
https://racket-lang.org/

Both are suited to large projects. The “purity” of Tcl can be debated, but it is a fairly unique design. Both are high-level and relatively small. Both compile to native code and are very quick.
Last edited on
Registered users can post here. Sign in or register to post.