PDA

View Full Version : Picking up a second language



Flynn555
October 27th, 2008, 01:06 PM
ive been studing C++ in college for about 2 1/2 years now...and now im at the point where i can pick up another language (as an elective) if i want. i have put alot of thought into picking up java because it is derived from C++ and would be easy to pick up ( but what isnt easy after C++?)
but im just not sure..

what do you guys think..

:i listed the available options in the poll..

thx flynn

jespdj
October 27th, 2008, 01:24 PM
The answer depends on what your goals are. I wouldn't invest time in FORTRAN, Pascal or Smalltalk, those are not main stream general-purpose languages (anymore). If you want to learn a programming language that will increase your chances to find a job, then Java is a good choice. If you want to do Linux kernel hacking, learn C.

Your list is missing languages like Python and Ruby. Python is widely used on Ubuntu, many of the desktop applications that you're using on Ubuntu are written in Python.

What do you mean with the choice "Visual"? Is that a programming language? I've never heard of it.

ghostdog74
October 27th, 2008, 01:29 PM
i really think something is wrong.

LaRoza
October 27th, 2008, 01:36 PM
ive been studing C++ in college for about 2 1/2 years now...and now im at the point where i can pick up another language (as an elective) if i want. i have put alot of thought into picking up java because it is derived from C++ and would be easy to pick up ( but what isnt easy after C++?)
but im just not sure..


C++ for 2.5 years? :shock:

What have you taught yourself in the meantime?

sheto
October 27th, 2008, 01:37 PM
I am of the same opinion as jespdj.

LaRoza
October 27th, 2008, 01:39 PM
Your list is missing languages like Python and Ruby. Python is widely used on Ubuntu, many of the desktop applications that you're using on Ubuntu are written in Python.


I think it is the listing of options at the school (weird school though)



What do you mean with the choice "Visual"? Is that a programming language? I've never heard of it.
I think it may refer to Visual Basic...

Flynn555
October 27th, 2008, 01:58 PM
I think it may refer to Visual Basic...
correct-a-mundo.


weird school though
i think their goal is to teach concepts more than syntax...


C++ for 2.5 years? :shock:

What have you taught yourself in the meantime?
...yeah i re-did my math on that C++ and it was really only 1 1/2 years :lolflag: sry.

yeah i have noticed that alot of things in ubuntu are written in python. but i see python/c-shell scripting as kind of like a hobby...something that isn't really syntacticly demanding that i can just pick up in my free time.

I wouldn't invest time in FORTRAN, Pascal or Smalltalk, those are not main stream general-purpose languages (anymore).
yeah i probably wasnt going to take those lol...i think my best bet is java and after that i guess C

what the hell is VB good for anyway?

LaRoza
October 27th, 2008, 02:08 PM
i think their goal is to teach concepts more than syntax...

Then they would have chosen Scheme instead of C++.



...yeah i re-did my math on that C++ and it was really only 1 1/2 years :lolflag: sry.

Um, what kind of school is this?



but i see python/c-shell scripting as kind of like a hobby...something that isn't really syntacticly demanding that i can just pick up in my free time.

That is a fallacy I think. If you see them as not being demanding because of a simple syntax, and therefore "hobby" or "free time" material, you are doing something wrong...

Programming is not about syntax. The syntax of Python is similiar to C++ anyway.

A language with the simplest syntax, Scheme, can be used to explore the most complex facets of computer science.



yeah i probably wasnt going to take those lol...i think my best bet is java and after that i guess C

I don't think it matters.



what the hell is VB good for anyway?

RAD development on Windows.

Flynn555
October 27th, 2008, 02:55 PM
Um, what kind of school is this?



C++ School duh.

sshuber
October 27th, 2008, 03:07 PM
From a pure good-to-know-to-easily-find-a-job-after-school standpoint I'd say learn java since it's used quite a bit in enterprise environments.

In reality, if you're getting a solid theoretical foundation from your schooling, learning a new language is mainly just learning syntax, semantics, and maybe a new IDE.

LaRoza
October 27th, 2008, 03:08 PM
C++ School duh.

I mean, what level of education?



In reality, if you're getting a solid theoretical foundation from your schooling, learning a new language is mainly just learning syntax, semantics, and maybe a new IDE.

Very, very, solid. I don't think C++ would be up to that task, so I doubt that is the foundation.

pp.
October 27th, 2008, 03:18 PM
Why not learn a language that's a bit different from the one you have learned so far? Prolog, any of the Lisps or even Forth might turn out to be more than just a trivial notational variant.

CptPicard
October 27th, 2008, 04:01 PM
( but what isnt easy after C++?)

Languages with broader/different concepts. pp suggested Prolog -- the syntax is easy to learn, "thinking in Prolog" isn't (at least for me it isn't). But some people who get it, swear by it.



i think their goal is to teach concepts more than syntax...

Which is exactly why you need to have a diverse set of languages where differences are not just cosmetic. Of course then you have concepts which are completely language-independent, but different languages tend to take an interestingly different approach to the same problem.


something that isn't really syntacticly demanding that i can just pick up in my free time.

Now, this is a totally misguided statement :)

It's not the syntax, it's the concepts. In particular, languages that are very "syntactically demanding" probably are just contrived and you're just rote-learning lots of "language", and not necessarily "concepts".

The most powerful concepts tend to pop up in the syntactically more simple languages because simple syntax yields generic, powerful primitives... such as in Lisp.



yeah i probably wasnt going to take those lol...i think my best bet is java and after that i guess C

Learn Python, either on your free time or where-ever. It's very flexible and lets you quickly try different approaches and algorithms, has anonymous functions and their closures (albeit these are somewhat lame ones), generators, duck typing... there is more to the language than meets the eye syntactically.



In reality, if you're getting a solid theoretical foundation from your schooling, learning a new language is mainly just learning syntax, semantics, and maybe a new IDE.

This is not *quite* that simple, and we've had some debates on this here... usually the solid theoretical foundation is language-independent, but this doesn't mean that language is just a trivial afterthought. In particular languages like Lisp have been really enlightening for me personally in the "exposing the problem structure" sense, in ways that some C-derivative language could not have done...

apoth
October 27th, 2008, 04:06 PM
Java, then Ruby.

stevescripts
October 27th, 2008, 04:08 PM
Of the languages listed ... (cough) ... you will find JAVA the easiest,
and it is probably the best "ticket-puncher" of the group.

Don't limit yourself - spend some time with some form of Lisp, and learn
a higher level language (Python, Tcl, Ruby ...)

sshuber
October 27th, 2008, 04:29 PM
This is not *quite* that simple, and we've had some debates on this here... usually the solid theoretical foundation is language-independent, but this doesn't mean that language is just a trivial afterthought. In particular languages like Lisp have been really enlightening for me personally in the "exposing the problem structure" sense, in ways that some C-derivative language could not have done...

Actually, good point. In terms of a family of languages (i.e. scripted versus statically typed, etc.) my original mostly holds true, but things like prolog would not follow this.

I also forgot to mention that if you don't mind abuse and torture, Cobol is looking good for job opportunities as well. Check out this slashdot post: here (http://developers.slashdot.org/article.pl?sid=08/10/23/1746254)

Flynn555
October 27th, 2008, 04:46 PM
thanks for all the feedback guys....i know that i will probably end up taking the java class ( java class lol ) mainly just because of


From a pure good-to-know-to-easily-find-a-job-after-school standpoint I'd say learn java since it's used quite a bit in enterprise environments.

but i can definitely see python in my future as well...



I mean, what level of education?


im in my second 3rd semester of college. basically i have taken computer science 1 and 2 and now i am in the 3rd course. i think the main focus of the courses is to introduce the students to the key concepts of OOP (Inheritance, Polymorphism, Abstraction, etc..) and to do that they use C++ as a tool.

well the first course was mainly C++ syntax then the second was "not so complex" data structures (i.e. linked lists, introduction to objects) now in the 3rd course we are learning about 2-3-4 trees, dynamic binding, inherited classes etc...

LaRoza
October 27th, 2008, 04:49 PM
im in my second 3rd semester of college. basically i have taken computer science 1 and 2 and now i am in the 3rd course. i think the main focus of the courses is to introduce the students to the key concepts of OOP (Inheritance, Polymorphism, Abstraction, etc..) and to do that they use C++ as a tool.

well the first course was mainly C++ syntax then the second was "not so complex" data structures (i.e. linked lists, introduction to objects) now in the 3rd course we are learning about 2-3-4 trees, dynamic binding, inherited classes etc...

Well, from your posts, you should be learning more. Don't be a code monkey, learn!

Flynn555
October 27th, 2008, 05:03 PM
Well, from your posts, you should be learning more. Don't be a code monkey, learn!


yeah hopefully in the next couple of years i will have some room for some elective courses...i think there is a pretty good web development course, i might take that. but i really need to be learning alot of stuff on my own to get a head start. the problem is...well i don't have any problems (to solve) i would love to work on projects in my free time i just don't have any ideas...

namegame
October 27th, 2008, 05:41 PM
the problem is...well i don't have any problems (to solve) i would love to work on projects in my free time i just don't have any ideas...

Although it can be redundant in some cases, I have found the best way for me to learn the syntactical nuances of different languages is to work through some of the Project Euler problems. I'm currently working on a few other languages this way.

My Computer Science classes focus on C and C++, so this is a convenient way to learn other languages.

http://www.projecteuler.net

LaRoza
October 27th, 2008, 06:06 PM
yeah hopefully in the next couple of years i will have some room for some elective courses...i think there is a pretty good web development course, i might take that.
Think of school as a place to get a degree. Learning is something you should do all the time, in and out of school.



but i really need to be learning alot of stuff on my own to get a head start.
Well, to catch up. Spending so much time on one language and paradigm...



the problem is...well i don't have any problems (to solve) i would love to work on projects in my free time i just don't have any ideas...
Everyone can get ideas.

nvteighen
October 27th, 2008, 07:47 PM
I voted for C, because if you are restricted to that list and you already have learned an OOP-language, a non OOP-language and a fairly needed one for low-level stuff might be handy. So, that's the reason behind my vote.

But, if you're not restricted to those languages, please try some higher-level languages like Python, Ruby, Perl... And then, C. Scheme or any Lisp dialect will no doubt enhance your horizons too.

jespdj
October 27th, 2008, 10:54 PM
The syntax of Python is similiar to C++ anyway.
Huh?! The syntax of Python is totally different than C++.

LaRoza
October 27th, 2008, 11:29 PM
Huh?! The syntax of Python is totally different than C++.

No it isn't.

jimi_hendrix
October 27th, 2008, 11:37 PM
what the hell is VB good for anyway?

stealing your soul and killing your children...:twisted:

no really...ive read in multiple places that VB programmers are 80% worse than C# programmers...but the chances of picking a good programmer are the same because theres so many VB programmers...

either pick java or C#...both are good for jobs i think

jimi_hendrix
October 27th, 2008, 11:42 PM
No it isn't.

+1

when i learned python i first said "wow its C++ without brackets!!!"

wrtpeeps
October 28th, 2008, 12:06 AM
Then they would have chosen Scheme instead of C++.


Um, what kind of school is this?


That is a fallacy I think. If you see them as not being demanding because of a simple syntax, and therefore "hobby" or "free time" material, you are doing something wrong...

Programming is not about syntax. The syntax of Python is similiar to C++ anyway.

A language with the simplest syntax, Scheme, can be used to explore the most complex facets of computer science.


I don't think it matters.



RAD development on Windows.

I feel I must come and publically renounce this statement. :)

LaRoza
October 28th, 2008, 12:08 AM
+1

when i learned python i first said "wow its C++ without brackets!!!"

Well, yeah, but there are other language features which make a break, like lambda's and list comprehensions.

They follow the same general scheme (not language) like all imperative languages.

Flynn555
October 28th, 2008, 04:42 PM
+1

when i learned python i first said "wow its C++ without brackets!!!"

i experienced a little python scripting when i first downloaded ubuntu haven't messed with it much since but yes i definitely noticed this. :D

curses ftw!

jespdj
October 28th, 2008, 08:32 PM
The syntax of Python is completely different than the syntax of C++. I could sum up numerous differences: in Python you don't use curly braces, you don't need to use parenthesis in the same way as in C++, statements don't need to end with a semi-colon in Python, etc. I don't have to tell you that; you know that Python code looks different from C++ code.

They share a lot of the semantics (the same concepts: classes, objects, inheritance, etc.) but not syntax.

mike_g
October 28th, 2008, 11:39 PM
>> Huh?! The syntax of Python is totally different than C++.
No it isn't.
When I started Python I already knew, Basic, C, C++, Java, Javascript and PHP. And, out of those I'd say Python has the least in common :) Maybe I should get around to learning Lisp or something someday.

LaRoza
October 29th, 2008, 12:01 AM
When I started Python I already knew, Basic, C, C++, Java, Javascript and PHP. And, out of those I'd say Python has the least in common :) Maybe I should get around to learning Lisp or something someday.

Yes, Python is very different from other imperative languages, however, anyone who knows C++ could easily read Python. It isn't foreign.

Now, the best C++/Java programmer would be totally lost when confronted with Scheme.

jimi_hendrix
October 29th, 2008, 12:08 AM
Now, the best C++/Java programmer would be totally lost when confronted with Scheme.

as for the most part am i...lamba-what?

LaRoza
October 29th, 2008, 12:54 AM
as for the most part am i...lamba-what?

lambda ;)

jimi_hendrix
October 29th, 2008, 01:19 AM
lambda ;)

my point exactly

Reiger
October 29th, 2008, 04:52 AM
Lambda is the single most ugly feature of the entire Python language that so far has happened to cross my browser's window.

Ugly as <insert-random-extremity-of-ugliness-here />: reason it's a pure, anonymous mathematical symbol being represented by its name. That's like writing Integer(6).equals(Integer(5)) for the simple 6 == 5 test in Java. Ugh.

Usefull but ugly.

CptPicard
October 29th, 2008, 06:27 AM
Lisps tend to call lambdas lambdas as well.. it's common. They are of course remarkably useful... IMO the most important feature of a high-level language. Python's lambdas are totally lame though as they are limited to being oneliners :(

pmasiar
October 29th, 2008, 03:08 PM
The syntax of Python is completely different than the syntax of C++. I could sum up numerous differences:

Those are trivial differences, anyone who knows any of language from Algol family (Algol. Pascal, C, C++, Java...) can learn Python syntax over weekend or less. For different syntax, try Lisp, or Forth.


Lambda is the single most ugly feature
it just reveals that you did not encountered how brilliant solution it could be.

Recently I found: http://code.activestate.com/recipes/384122/



#definition of an Infix operator class
# x |op| y
# or:
# x <<op>> y


Totally brilliant, and it was available in Python since 1.5! 8-)

nvteighen
October 29th, 2008, 07:16 PM
Lambda is the single most ugly feature of the entire Python language that so far has happened to cross my browser's window.

(...)

Usefull but ugly.

Ok, I have to admit all functional features in Python are there but not too integrated with the rest of the language. They seem to me to be aggregates that, yes are useful and clever, but are somehow weird to see there... and that's why you may think they're ugly.