You are not logged in.

#1 2010-05-02 06:22:32

Galera
Member
From: Argentina
Registered: 2009-09-08
Posts: 31

Languages (Where do I start?)

Hi, I am currently studyng programming at a college, since we're learning from basics, we're learning C and C++. I was hoping you could suggest me a language to learn by "myself", something like Python or Java.
I am really an ignorant to mostly anything related to "high level" programming lenguages, so I am open to comments.
I've studied a little bit of pascal, almost all C and currently in C++.
What language do you thing I should learn? and, why?.
Sorry for my english. I'm kinda in a lost ground here.

Thanks!


--
(1714)

Offline

#2 2010-05-02 10:51:09

karol
Archivist
Registered: 2009-05-06
Posts: 25,440

Re: Languages (Where do I start?)

> What language do you thing I should learn? and, why?
Why do you need to learn more? Just for fun? Python is said to be easy, but there's python 2.x and python3 and there are differences between the two.
Some people say that you should learn a couple different langs, to show you different ways of looking at a problem, f.e.: Lisp/Scheme, Haskell. Other people say that those langs are too exotic to be useful <shrugs>

Don't get me wrong, but learning to speak (and write) English well will surely pay off.

Offline

#3 2010-05-02 11:58:43

Trent
Member
From: Baltimore, MD (US)
Registered: 2009-04-16
Posts: 990

Re: Languages (Where do I start?)

Not Java.  Python for sure.  Although I've heard good things about Scheme (I don't know much).

Offline

#4 2010-05-02 12:37:39

Sirupsen
Member
From: Denmark
Registered: 2009-11-14
Posts: 26
Website

Re: Languages (Where do I start?)

You should try a few different languages. Try Python, try Java, try Ruby, try Lua. And eventually you know what's right for you. smile

Learning Haskell, Lisp or any of these kind of languages may not gain you a new favorite language, but they can certainly help you take new perspectives on problems.

Offline

#5 2010-05-02 14:33:44

yngwin
Member
Registered: 2009-05-08
Posts: 67

Re: Languages (Where do I start?)

Python. It's easy, widely used and has immediate practical use. Also, it is strong in usage for scripting (for example for system administration tasks), for building GUIs (with PyQt and PyGTK), as well as for web development (with popular frameworks ranging from Django to CherryPy).

Offline

#6 2010-05-02 14:42:25

karol
Archivist
Registered: 2009-05-06
Posts: 25,440

Re: Languages (Where do I start?)

@yngwin
What about Python3? Will the frameworks you mentioned migrate to it?

Offline

#7 2010-05-02 16:04:35

Mr.Elendig
#archlinux@freenode channel op
From: The intertubes
Registered: 2004-11-07
Posts: 4,092

Re: Languages (Where do I start?)

It's still too early to really use python3 because of the lack of 3.rd party libs. This years GSoC might help a bit on that tho.
But sticking with 2.6 for now is the best choice. 2.x and 3.x are quite similar so you won't have any big problems moving to 3.x later.

Anyway, another advantage of python is that it's a really small language, so it's easy to learn, and the stdlib contains almost anything you ever need.


Evil #archlinux@libera.chat channel op and general support dude.
. files on github, Screenshots, Random pics and the rest

Offline

#8 2010-05-02 16:09:55

karol
Archivist
Registered: 2009-05-06
Posts: 25,440

Re: Languages (Where do I start?)

You still may learn python 2.6 w/ the goal of eventually moving to python3 in mind: utf handling, print() and several other important things change. There's a helper app to facilitate the transition.
http://docs.python.org/library/2to3.html

Offline

#9 2010-05-02 16:59:53

ewaller
Administrator
From: Pasadena, CA
Registered: 2009-07-13
Posts: 19,827

Re: Languages (Where do I start?)

Most of my coding is done on embedded systems.  I would assert that the majority of programming projects are not for desktops and servers, but are for the myriad of systems out there that use embedded controllers to control their logic.  I refer to everything from sprinkler controllers to anti-lock brake modules, from washing machines to guided missiles.

My experience is that the vast majority of this type of system use C.  As mentioned previously,C is also fundamental to low level system software.

I have, however found that most of these embedded systems require some sort of 'GUI' control panel -- Both for test and debugging, and sometimes for the end user (often as an embedded web server). 

When I write one of the 'control panel' operations,I prefer to use something that works well cross platform (hoping upon hope to one day wean my co-workers from Microsoft pablum)  For this I have come to love Python.  In my case I use PyQt, but PyGtk looks okay to.

The other reason I like Python is because it is the basis of Django, my prefered web framework.  Which leads me to my last point.  If you are interested in projects that  have some sort of web interface, you might want to learn a little about client side web programming in something like javascript.


Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
Sometimes it is the people no one can imagine anything of who do the things no one can imagine. -- Alan Turing
---
How to Ask Questions the Smart Way

Offline

#10 2010-05-02 18:17:13

Galera
Member
From: Argentina
Registered: 2009-09-08
Posts: 31

Re: Languages (Where do I start?)

Thank you all for yout advises.

ewaller wrote:

Most of my coding is done on embedded systems.  I would assert that the majority of programming projects are not for desktops and servers, but are for the myriad of systems out there that use embedded controllers to control their logic.  I refer to everything from sprinkler controllers to anti-lock brake modules, from washing machines to guided missiles.

My experience is that the vast majority of this type of system use C.  As mentioned previously,C is also fundamental to low level system software.

In the C programming classes we've programmed PIC controllers in a few projects, such as a basic security alarm.

yngwin wrote:

Python. It's easy, widely used and has immediate practical use. Also, it is strong in usage for scripting (for example for system administration tasks), for building GUIs (with PyQt and PyGTK), as well as for web development (with popular frameworks ranging from Django to CherryPy).

Sirupsen wrote:

You should try a few different languages. Try Python, try Java, try Ruby, try Lua. And eventually you know what's right for you. smile

Learning Haskell, Lisp or any of these kind of languages may not gain you a new favorite language, but they can certainly help you take new perspectives on problems.

I think I'm going to go in this order you're telling me. Python, Java and Ruby.

karol wrote:

Don't get me wrong, but learning to speak (and write) English well will surely pay off.

I would like very much to be able to communicate myself in a better way, but since english it's not what people around me speaks, it's hard for me to speak it. I think I'm not that bad in the reading/understanding aspect of it, but to write it and speak it, since I don't do a lot of english communication at all, is kind of a pain in the ass to me.
Beasides I live in a third-world country, where it's expensive to get a "good" education, most of english I've learned, I've learned it through movies, music, forum and blogspot readings.
Anyway, I'll tell it again, sorry for my english. (Hope you guys can understand me wink )


--
(1714)

Offline

#11 2010-05-02 18:28:30

karol
Archivist
Registered: 2009-05-06
Posts: 25,440

Re: Languages (Where do I start?)

karol wrote:

Don't get me wrong, but learning to speak (and write) English well will surely pay off.

Galera wrote:

Anyway, I'll tell it again, sorry for my english.

You did get me wrong :-)
I mean: try to practice, write on the English language forums and MLs, comment your code in English etc. It's damn hard to write short descriptions that will be meaningful enough, so commenting your code in a foreign language is a great exercise.
If you know English well and have Internet access you can learn a lot of things from the English language documentation. There may be no Russian, no German and no Polish documentation, but in most cases the will be an English one.

Good luck and have fun.

Offline

#12 2010-05-02 18:35:25

Trent
Member
From: Baltimore, MD (US)
Registered: 2009-04-16
Posts: 990

Re: Languages (Where do I start?)

BTW, when I said "not Java" I was specifically addressing you as someone who needs schooling in the basics, not denigrating Java as a programming language.  Java is a good language for many uses and I definitely support you in learning it later on.  But it's a good idea to be a decent programmer first, which is why I recommended Python first.  Ruby is something I've meant to learn for a while but never got around to it.

Best of luck!

Offline

#13 2010-05-02 18:55:20

Kiwi
Member
Registered: 2008-02-24
Posts: 153

Re: Languages (Where do I start?)

You write better English than a lot of native speakers. tongue

...okay, so that does not really say a lot...

Your English is pretty good considering your situation!

Haskell is pretty awesome, so is Lua, and C is good to know. Ruby is supposed to be a real joy to program in but is "dog slow," as one of my Ruby dev friends puts it. Java is eww, Python I do not like but it is meh, you could do worse. I used to love C++ and now I hate it...

If you know C well Lua is an excellent language to add to your tool bag due to how well they work together. Haskell is really powerful and pretty darn fast, and you can do a lot more in a lot less code than most other languages. If you want to just be a code monkey Java could be good to know, but is not good for much of anything else. C++...well, it pains me to speak of it, let us leave it at that. Python has some uses but can be painfully slow, so if speed is what you desire then...it might not be the best choice. I will give it that it has some awesome libraries, especially for mathematicians, from what I hear, and is good for rapid prototyping.

I was talking to a math professor at uni the other day and he was telling me about some calculations he was doing. He first wrote a program to do them in Python, it took like 20 hours. He rewrote it in C and it takes 5-10 minutes. >.> I cannot remember if he ever got the Python one to be faster or not somewhere in between.

But, Real Programmers use Fortran.
<-- Real Programmer sad

Offline

#14 2010-05-02 22:35:28

Galera
Member
From: Argentina
Registered: 2009-09-08
Posts: 31

Re: Languages (Where do I start?)

karol wrote:

I mean: try to practice, write on the English language forums and MLs, comment your code in English etc. It's damn hard to write short descriptions that will be meaningful enough, so commenting your code in a foreign language is a great exercise.

I'll try that as an excersise!, thanks for the idea. smile

karol wrote:

If you know English well and have Internet access you can learn a lot of things from the English language documentation. There may be no Russian, no German and no Polish documentation, but in most cases the will be an English one.

That's true. In fact, I do most of my archlinux related readings in english (such as wiki or even the forum). Most of the times, the things I look for are not available in spanish, but they are in english, so that helps a lot (even though sometimes I understand half of it, haha).

Trent wrote:

Haskell is pretty awesome, so is Lua, and C is good to know. Ruby is supposed to be a real joy to program in but is "dog slow," as one of my Ruby dev friends puts it. Java is eww, Python I do not like but it is meh, you could do worse. I used to love C++ and now I hate it...

I guess further investigation about Haskell shall be done, then.
Thank you all very much!


--
(1714)

Offline

#15 2010-05-03 00:46:14

yngwin
Member
Registered: 2009-05-08
Posts: 67

Re: Languages (Where do I start?)

karol wrote:

@yngwin
What about Python3? Will the frameworks you mentioned migrate to it?

Sure they will. But for now it is more practical to stick with python 2.6.

Offline

#16 2010-05-03 01:59:19

Trent
Member
From: Baltimore, MD (US)
Registered: 2009-04-16
Posts: 990

Re: Languages (Where do I start?)

@Galera:  You misquoted Kiwi as me there in your last post.

I agree that your written English is pretty good, though! smile

Offline

#17 2010-05-03 03:01:36

stqn
Member
Registered: 2010-03-19
Posts: 1,191
Website

Re: Languages (Where do I start?)

I started programming a small game using D a few weeks ago and thought I'd mention it since noone did. It's quite close to C/C++ but aims to be easier to program (no need to write header files, foreach statements, dynamic arrays, associative arrays) and less bug-prone (garbage collection, unit tests, array bounds checking). The compiler is very fast and supposedly produces code as fast as C/C++.

Available with "pacman -S dmd".

I haven't been using D long enough to say much about it, except I haven't had any significant problem with it and I like it so far smile.

However maybe you'd rather learn Python or Perl (or Bash ?) because they're more popular in Linux land, or another language that is less similar to C++ for your culture (I'll try to have a look at Haskell myself wink).

Last edited by stqn (2010-05-03 03:04:18)

Offline

#18 2010-05-03 06:04:03

Sirupsen
Member
From: Denmark
Registered: 2009-11-14
Posts: 26
Website

Re: Languages (Where do I start?)

Kiwi wrote:

Ruby is supposed to be a real joy to program in but is "dog slow," as one of my Ruby dev friends puts it.

Yeah, that's one of the down sides of Ruby. It's quite slow. However, for most tasks it doesn't matter too much, especially not when this guy is asking for somewhere to start, then it's more important to get into programming, and get into thinking the right way. While not saying a high performance language like C, and Lua for that matter can not do this, it might be a bit harder to get into these to start with, where however later Lua and C provide you with an excellent toolkit. smile

I'm glad he's taking my advice trying out a few languages, I believe it'll do him best finding the language he'd like to start his journey in himself. smile And perhaps find a language or two he'd like to look into more at some point.

Also for the English part, just get a few code buddies and comment your code in English (as a wise man said previously in this thread), these have been my greatest exercises towards learning English. Do everything on the computer in English. wink

For the Haskell part, http://learnyouahaskell.com is supposed to be a great guide.

Last edited by Sirupsen (2010-05-03 06:11:18)

Offline

#19 2010-05-03 16:59:24

marvin
Member
From: Milk Way Galaxy
Registered: 2010-04-26
Posts: 19
Website

Re: Languages (Where do I start?)

Scheme, C and Go, in that order.

Stay away from C++, it damages the brain, and you will never recover. Java is almost as bad.

Offline

#20 2010-05-03 18:12:20

scottman
Member
From: Utah
Registered: 2010-02-12
Posts: 27
Website

Re: Languages (Where do I start?)

I started with Java then have learned Perl and then C++. So i went backwards from high level to low level. I think Java is great, pretty simple has great documentation, frustrates people with compatibility problems and the swing looks ugly unless you modify the UI look and feel.

Python seems like its the thing to do right now, I havnt tried it yet so I cant say anything about it.

Java is great, its pretty dang easy especially with Eclipse as your IDE.

Perl is also a fun language because of all the modules you can play with.

The suggestion on using Lua with C has peaked my interest so I might try that next, or the D language which also has interested me.

Good luck on your choice.

Last edited by scottman (2010-05-03 18:13:09)

Offline

#21 2010-05-03 20:15:41

JezdziecBezNicka
Member
From: Cracow, Poland
Registered: 2009-12-03
Posts: 89

Re: Languages (Where do I start?)

A for python: try both ruby and python, they differ in some key aspects.

I'd always advise starting with C.


This is my signature. If you want to read it, first you need to agree to the EULA.

Offline

#22 2010-05-03 21:56:41

Trent
Member
From: Baltimore, MD (US)
Registered: 2009-04-16
Posts: 990

Re: Languages (Where do I start?)

JezdziecBezNicka wrote:

A for python: try both ruby and python, they differ in some key aspects.

I'd always advise starting with C.

I never recommend C for beginners unless they show extraordinary aptitude or are already familiar with most of the concepts of C.  I usually recommend it as a second or third language after learning something more high-level, like Python or Perl.  The reason is that beginners don't often really know how to go about writing an algorithm or break a problem into subproblems or any of those skills that are pretty fundamental to programming.  I think it's better to learn that kind of thing with a simple syntax, without worrying about memory management or undefined behavior, and with relatively instant feedback.  In my experience, beginning programmers struggle enough with a statement like myNum = 0 without trying to understand why you have to "declare" myNum to be some sort of "type" before storing things in it -- much less why you can't "store" a "floating-point number" into a "variable" of "integer" "type" ... anyway, you get the point.  Dynamic typing, uncluttered syntax, and immediate and helpful feedback are the big things to look for in a beginning language.

That said, I think that with the appropriate guidance, one could learn C as a first language, just as one can learn assembly or Java or whatever else as a first language.  But I've never seen a C book for newbies that treats the subject properly.

Offline

#23 2010-05-04 01:10:21

JezdziecBezNicka
Member
From: Cracow, Poland
Registered: 2009-12-03
Posts: 89

Re: Languages (Where do I start?)

Then start with Pascal. I don't think learning OO and/or a dynamic typed language first is a good choice.

The first language should be static and strong, to emphasize that a variable type is essential. To train the mind into that direction.

Last edited by JezdziecBezNicka (2010-05-04 01:15:21)


This is my signature. If you want to read it, first you need to agree to the EULA.

Offline

#24 2010-05-04 02:54:36

Trent
Member
From: Baltimore, MD (US)
Registered: 2009-04-16
Posts: 990

Re: Languages (Where do I start?)

JezdziecBezNicka wrote:

The first language should be static and strong, to emphasize that a variable type is essential. To train the mind into that direction.

Okay, I'm kind of feeling guilty for highjacking Galera's thread, but now I have to ask: why?  I think that static typing is more confusing than helpful for beginners, especially considering the differences between numeric types (int, float, double for instance) and the odd things that sometimes happen when you operate on them.  FWIW, I am entirely opposed to teaching OO to newbies.

Disclaimer: Java was my first "real" programming language, but my daily life now involves writing Perl (for money) and Python (for kicks).

Last edited by Trent (2010-05-04 02:55:26)

Offline

#25 2010-05-04 03:45:42

Galera
Member
From: Argentina
Registered: 2009-09-08
Posts: 31

Re: Languages (Where do I start?)

JezdziecBezNicka wrote:

I'd always advise starting with C.

I started out with C for school, and it wasn't hard at all. It's just kinda boring since, when you haven't learned archives managment, and pointers, it's not really that much you can do with it (At least for te practical part).
Right now I'm looking at that Haskell website, seems fun.


--
(1714)

Offline

Board footer

Powered by FluxBB