Next language advice

  • (2 Pages)
  • +
  • 1
  • 2

19 Replies - 410 Views - Last Post: 21 May 2015 - 10:07 AM

#1 Smartikus  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 2
  • Joined: 27-March 14

Next language advice

Posted 30 April 2015 - 08:48 AM

So, a little background info before we get to the question.

Right now I'm going to a community college and work full time.
I've taken the "Fundamentals of Programming" class to start, which went over the basics of C++. We never got to pointers or vectors, etc.
I'm taking the second half of the class (Fundamentals II, which will also go over C++) and I have the choice between taking C or Java, and Visual Basic or C#.
I will eventually like to get at least a "warm and fuzzy" with all of the said languages, but in regards to classes, I have to choose between them.

So basically I'm wondering if it would be more beneficial to get a variety of languages (VB, Java) or if I should stick with the "C-family" languages (C, C#).

Just looking for some advice, if anyone has done something like this, how did it work out for them, are any of these languages easier/harder than the others, etc.

Is This A Good Question/Topic? 0
  • +

Replies To: Next language advice

#2 modi123_1  Icon User is online

  • Suitor #2
  • member icon



Reputation: 10217
  • View blog
  • Posts: 39,293
  • Joined: 12-June 08

Re: Next language advice

Posted 30 April 2015 - 08:50 AM

If you feel you are lacking in C++ then I would advocate taking the second one of those.

My month to month tends to have me in the majority of those four.
Was This Post Helpful? 0
  • +
  • -

#3 astonecipher  Icon User is offline

  • Dishonored
  • member icon

Reputation: 1037
  • View blog
  • Posts: 4,474
  • Joined: 03-December 12

Re: Next language advice

Posted 30 April 2015 - 11:25 AM

Fortran all the way.
Was This Post Helpful? 0
  • +
  • -

#4 jimblumberg  Icon User is offline

  • member icon


Reputation: 4557
  • View blog
  • Posts: 14,396
  • Joined: 25-December 09

Re: Next language advice

Posted 30 April 2015 - 11:30 AM

COBOL or Basic-A.

This post has been edited by jimblumberg: 30 April 2015 - 11:30 AM

Was This Post Helpful? 0
  • +
  • -

#5 baavgai  Icon User is offline

  • Dreaming Coder
  • member icon

Reputation: 6122
  • View blog
  • Posts: 13,226
  • Joined: 16-October 07

Re: Next language advice

Posted 30 April 2015 - 03:30 PM

Note, C# is NOT part of the "C-family." It basically started out life as a Java for .NET.

So, VB and C# are .NET languages and really only useful in Windows land. I'd prefer C#, because syntax, though they both can do the exact same job in .NET. Microsoft's Visual Studio, the only tool you'd want to use with these languages, is an exceptional IDE.

Java is a nice high level language that is not exclusive to Windows. It's also militantly Object Oriented, so can teach some good habits.

C is a simple language that requires the programmer to do all the work, including cleanup. It matches closest to what you've already learned, but it is distinctly different from the C++ superset.

I don't know if that helps...

Of the choices, I think I'd go with Java. It is a modern language with enough mind share that it will be around forever. C is neat, but C++ will give you all the advantage of C with more toys. While .NET is a lot of fun, it is the gateway to an even more complex ecosystem that changes a lot and sometimes dead ends.
Was This Post Helpful? 0
  • +
  • -

#6 Lemur  Icon User is offline

  • Pragmatism over Dogma
  • member icon


Reputation: 1399
  • View blog
  • Posts: 3,553
  • Joined: 28-November 09

Re: Next language advice

Posted 30 April 2015 - 08:08 PM

View Postbaavgai, on 30 April 2015 - 05:30 PM, said:

Java is a nice high level language that is not exclusive to Windows. It's also militantly Object Oriented, so can teach some good habits.


I'd militantly disagree. You should see what Java programmers do to Ruby, Python, and Javascript. Java is one of a small set of languages I absolutely loathe because of its rigidity and extreme excess of syntax, but to put it into a word why I dislike the so called 'good' habits: AbstractSingletonProxyFactoryBean (http://docs.spring.io/spring-framework/docs/2.5.x/api/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.html)

Because it's so set on OO you have to deal with nonsense like that for what should be a simple thing in a language with any functional roots at all. Granted that things like this are normally only made by card carrying members of the cult of the gang of four, but I see it in the wild enough to be terrified.

The JVM is a fine platform, but Java is a gimped language. Scala and Clojure are far far better both in design and flexibility.

I'm not going to mask that I'm heavily biased against Java. I'd been forced into a team using it for MapReduce/Hadoop and it was an absolute hell, especially considering MapReduce is a functional concept by nature. Ironic that the most anti-functional language out there is shoehorned into a functional concept. Every time I see something like this:

errors.filter(new Function<String, Boolean>() {
  public Boolean call(String s) { return s.contains("MySQL"); }
}).collect();



....I die a little inside. Compare Scala here:
errors.filter(line => line.contains("MySQL")).collect()



Anonymous functions save programmer lives.

</rant>

I'd look into a Dynamic Scripting Language such as Ruby or Python. Javascript is far up there as well, as there's been a recent explosion on that front.

Now as far as what languages you should learn, I would put them more into categories:

Imperative OO - C#, C++
Dynamic OO - Ruby, Python, Perl, Smalltalk
Functional - Scala, Clojure, Elixir, Erlang, OCaml, SML, Haskell
Web - Javascript (yes, technically Ruby and Python for frameworks here as well as others)
Macro - Lisp, Scheme, Racket, Clojure
Logic - Prolog

If I had to pick order of importance from where you are, I would put Dynamic first followed very closely by Functional and Web. Macro languages are normally used to create entirely new languages, Ruby falls slightly into this category with DSLs, but LISP rules the land here. Logic languages are made from various assertions and logical statements, still not versed enough to say beyond that on them.

Functional is critically important as it will teach you an entirely new way of thinking. Haskell is one of the more pure languages on that front and forces you into the style more.
Was This Post Helpful? 0
  • +
  • -

#7 jon.kiparsky  Icon User is online

  • Pancakes!
  • member icon


Reputation: 8472
  • View blog
  • Posts: 14,658
  • Joined: 19-March 11

Re: Next language advice

Posted 30 April 2015 - 10:40 PM

In general, my first instinct in a question like this is that you should stay with the language you've started with until you know it well enough to work in it comfortably. By that I mean, you should be at the point where the language isn't a hindrance to you - you can think about the problem itself, without having to worry about how to express your solutions in the language you're using. Until you hit that point in one language, trying to learn a second doesn't make much sense. If you switch, you're just going to have to go through the hard part again, and you won't be any closer to getting any real work done.

Once you find that you really understand how solutions work in your first language, then it makes sense to branch out to something new. And I would suggest that you look for something properly new. If you're starting with C++, I'd suggest something like Ruby or Scala, which are both quite interesting and useful, and will probably blow your mind pretty nicely when you're coming out of C-world. You could also go straight into the Lisps, common lisp or scheme for example. Probably even more mind-blowing, but not as immediately deployable. Or, if you're not feeling very adventurous, you could go with python. I'd hold off on that one, honestly. You're likely to use it at some point, but Ruby, Scala, or scheme will have much more to teach you at this stage. But the most important thing, and I'll say it again, is that none of them are for right now. Right now, you will profit far more by solidifying your problem-solving skills in a language that you're already invested in, and I suggest you stick with that.
Was This Post Helpful? 1
  • +
  • -

#8 baavgai  Icon User is offline

  • Dreaming Coder
  • member icon

Reputation: 6122
  • View blog
  • Posts: 13,226
  • Joined: 16-October 07

Re: Next language advice

Posted 01 May 2015 - 04:36 AM

View PostLemur, on 30 April 2015 - 11:08 PM, said:

I'd militantly disagree. You should see what Java programmers do to Ruby, Python, and Javascript.


Heh, but how do you really feel? ;) I agree here, thinking like a Java programmer and using those languages will give you crap programs in those languages. However, that's pretty much true of any language.

View PostLemur, on 30 April 2015 - 11:08 PM, said:

loathe because of its rigidity and extreme excess of syntax


I'll agree on excessive syntax. Though I feel the language is a bit of a hot mess, I'd far prefer to write a JVM application in Scala.

However, in the context of learning a new language, I don't see rigidity as a problem, but a virtue. Rigid fundamentals form the base of improvisation. Sonnet to free verse, classic to jazz, realism to cubism, etc.

Looking at the plethora of JVM-not-Java options, it's clear that Java orthodoxy inspires rebellion. But, without it, there would be none.

Java enforces class based OO, whether you like it or not. Single inheritance. Programming to an interface. All rigidly and explicitly implemented. Java follows good OO principals with draconian fervor. In this respect, what people often hate about Java is what they hate about that kind of OOP. However, before you can find your way to that hate, you have to fully understand it. And, hell, some people seem to like it.
Was This Post Helpful? 1
  • +
  • -

#9 Lemur  Icon User is offline

  • Pragmatism over Dogma
  • member icon


Reputation: 1399
  • View blog
  • Posts: 3,553
  • Joined: 28-November 09

Re: Next language advice

Posted 01 May 2015 - 08:58 AM

Then learn Smalltalk, one of the parents of the OO paradigm and a huge inspiration for Ruby's OO.
Was This Post Helpful? 0
  • +
  • -

#10 baavgai  Icon User is offline

  • Dreaming Coder
  • member icon

Reputation: 6122
  • View blog
  • Posts: 13,226
  • Joined: 16-October 07

Re: Next language advice

Posted 01 May 2015 - 10:54 AM

Because Smalltalk is offered on every university campus or because it's so modern and relevant?

Never mind, then. Let's go with ALGOL. :P
Was This Post Helpful? 3
  • +
  • -

#11 jon.kiparsky  Icon User is online

  • Pancakes!
  • member icon


Reputation: 8472
  • View blog
  • Posts: 14,658
  • Joined: 19-March 11

Re: Next language advice

Posted 01 May 2015 - 07:26 PM

Might as well suggest SML.
Was This Post Helpful? 0
  • +
  • -

#12 Lemur  Icon User is offline

  • Pragmatism over Dogma
  • member icon


Reputation: 1399
  • View blog
  • Posts: 3,553
  • Joined: 28-November 09

Re: Next language advice

Posted 01 May 2015 - 09:40 PM

Depends if you're really going for good habits or being industry ready. It can't be done both ways with Java at the helm.
Was This Post Helpful? 0
  • +
  • -

#13 jon.kiparsky  Icon User is online

  • Pancakes!
  • member icon


Reputation: 8472
  • View blog
  • Posts: 14,658
  • Joined: 19-March 11

Re: Next language advice

Posted 01 May 2015 - 10:37 PM

But you're not talking about the language, you're talking about the culture. Java culture encourages horrible naming conventions. This isn't the language, it's the people who use it. I'm guilty of the same thing: the main reason I don't use Haskell is because of Haskell users.

As a language, Java is perfectly acceptable. It's not like PHP, which is just broken from top to bottom, and it's not like MUMPS which actively seeks to sabotage its users. Nor is the Java compiler randomized like the SML/NJ compiler. One thing I like to point out is that Java is one of the only languages that was actively designed to be enterprise-safe - this is the source of most of the things that Java-haters like to hate on. You might not like the way this design ended up, but it's certainly interesting to look at it from that perspective.
Was This Post Helpful? 1
  • +
  • -

#14 Lemur  Icon User is offline

  • Pragmatism over Dogma
  • member icon


Reputation: 1399
  • View blog
  • Posts: 3,553
  • Joined: 28-November 09

Re: Next language advice

Posted 01 May 2015 - 11:07 PM

RPG was also designed with enterprise in mind, do note.
Was This Post Helpful? 0
  • +
  • -

#15 BobaFett  Icon User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 6
  • Joined: 03-May 15

Re: Next language advice

Posted 04 May 2015 - 04:27 AM

Java is a fine language, used widely in the industry. I'd suggest you learn that one.
Was This Post Helpful? 0
  • +
  • -

  • (2 Pages)
  • +
  • 1
  • 2