LinuxQuestions.org
Latest LQ Deal: Latest LQ Deals
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 04-19-2007, 09:58 PM   #1
suicideducky
Member
 
Registered: Aug 2006
Location: New Zealand
Distribution: Gentoo
Posts: 72

Rep: Reputation: 15
getting back into programming, which language?(solved) which IDE?(unsolved)


Ok well here's a little about me.
I'm 15, live in new zealand and started programming at about the age of 10 or 11 in visual basics 6.0, writing some basic modules and the likes.
I also covered a little bit of visual C++ around the age of twelve.
and early last year I learnt a few basic python and java statements/functions for the sole pupose of being more flexible.

But I have never actually learnt any language in depth, Come on I mean as a 10 year old did I really have the concentration to learn in depth VB.
But this week I have been working at my dads work writing a spreadsheet consolidation module in VBA for my dad's work, this of course is the 1st program I've written in years and also the 1st that has a distinct function and purpose. And it has re-found the reason I love programming, The same reason I love gentoo.
After I finish a program i can point to a line in the code, an output box or even the finished consolidation and say "see that, that right there, I made that"
With gentoo i can point to the panel in gnome and say, "see that, that right there, I compiled that from source"
It just makes you feel impowered I gues.

All my programming experience so far has been in Windows. And regardless of which language I pick up I will be starting from scratch.

But now i would like to step back into programming, And I mean real programming as in patches, applications etc.
But I would like a language more of the likes of C++ or java.

I would also like to be able to use similar (if not the same) programming techniques and code to be able to code on my gentoo box and our home XP PC.
Fot this I was thinking of Java due to it being operating system independant, but I'm still not sure. Ideally i would like to be able to learn both but I can't multitask so one at a time for me.

I have also been looking at a copy of "thinking in C++" at a local bookstore, and having flicked through the online version, was wondering if this book would be worthwhile to purchase?

I just would really like to be able to give something back to the linux community while also inhancing my skills.

Thanks again, Ducky.

P.S. I run Gentoo as my current distro but also have ubuntu on dual boot and have had experience with abut 20+ distros (been using linux from a young age)

Last edited by suicideducky; 04-20-2007 at 12:33 AM.
 
Old 04-19-2007, 10:09 PM   #2
wjevans_7d1@yahoo.co
Member
 
Registered: Jun 2006
Location: Mariposa
Distribution: Slackware 9.1
Posts: 938

Rep: Reputation: 31
Ducky, I'm sure you'll get lots of useful responses here. But along the way, consider learning lisp. It's way different from most other languages. The computing paradigm is quite unusual. It may have no immediate application, but it will make you look at computing in a completely different way. It will enhance your ability to think outside the box.
 
Old 04-19-2007, 10:24 PM   #3
suicideducky
Member
 
Registered: Aug 2006
Location: New Zealand
Distribution: Gentoo
Posts: 72

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by wjevans_7d1@yahoo.co
Ducky, I'm sure you'll get lots of useful responses here. But along the way, consider learning lisp. It's way different from most other languages. The computing paradigm is quite unusual. It may have no immediate application, but it will make you look at computing in a completely different way. It will enhance your ability to think outside the box.
I'm happy to take any suggestions
Lisp? I've seen the name in some text somewhere but never heard much of it, genuinly I would prefer to stick to a well documented language hence C++, java, python etc.
but I'll have a look into lisp

thanks for the suggestion,
Ducky.
 
Old 04-19-2007, 10:27 PM   #4
suicideducky
Member
 
Registered: Aug 2006
Location: New Zealand
Distribution: Gentoo
Posts: 72

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by suicideducky
I'm happy to take any suggestions
Lisp? I've seen the name in some text somewhere but never heard much of it, genuinly I would prefer to stick to a well documented language hence C++, java, python etc.
but I'll have a look into lisp

thanks for the suggestion,
Ducky.
I take back all i said above well documentation, lisp looks quite good actudally I may have to have a look into it,
Would you be able to comment on easyness to learn? portability across OS's and useability?

any other suggestions?

Thanks again, Ducky.
 
Old 04-19-2007, 11:06 PM   #5
tuxdev
Senior Member
 
Registered: Jul 2005
Distribution: Slackware
Posts: 2,012

Rep: Reputation: 115Reputation: 115
Easy to learn? No way. You've got to radically change your outlook to program effectively in lisp, and that is a pretty tough challenge. But being young, you've got a big advantage there.

Lisp is very portable, since there are implementations of ANSI Comman Lisp for every platform you can think of.

As for usability, that's one of the major problems with lisp. Many people (including myself) have never finished step 3 in the process of learning lisp.

*The 3 step process:
1. Learn basic syntax and operations.
2. See the light of lisp's awesomeness.
3. Do something non-trivial and useful with lisp.

Other than lisp, My favourite alternative language right now is Ruby. It's very lispy in nature, but still has C-like syntax.
 
Old 04-19-2007, 11:17 PM   #6
suicideducky
Member
 
Registered: Aug 2006
Location: New Zealand
Distribution: Gentoo
Posts: 72

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by tuxdev
Easy to learn? No way. You've got to radically change your outlook to program effectively in lisp, and that is a pretty tough challenge. But being young, you've got a big advantage there.

Lisp is very portable, since there are implementations of ANSI Comman Lisp for every platform you can think of.

As for usability, that's one of the major problems with lisp. Many people (including myself) have never finished step 3 in the process of learning lisp.

*The 3 step process:
1. Learn basic syntax and operations.
2. See the light of lisp's awesomeness.
3. Do something non-trivial and useful with lisp.

Other than lisp, My favourite alternative language right now is Ruby. It's very lispy in nature, but still has C-like syntax.
Non-trivial and usefull? Well that is actually one of my key goals in re-entering programming

here are the self-proposed goals:
1. Follow through and stick to it!
2. Apply it to a real life problem (new text editor, spreadsheet consolidator-just did this one with VBA , net patch etc.)
3. Be able to use similar, if not the same, techniques over multiple OS's (mainly Xp and Gentoo/linux)
and of course the goals will grow and shrink dependant upon my progress and general mood

As far as I can see, List isn't exactly the language I'm looking for. But I may still learn it anyway...

when you said "You've got to radically change your outlook to program effectively in lisp" what exactly did you mean?
when I say easy to learn I don't mean overnight, I mean that there are enough references around and general livelyness of the language that I can pick up resources somewhere (like my local bookshop for example )

Any other language suggestions?

Thanks again, Ducky

[EDIT]and from what I understand Ruby is high level if not very high level. And is interpreted so doesn't that mean you loose some speed and power (power from it's high level, and speed from real-time interpretation)[/EDIT]

Last edited by suicideducky; 04-19-2007 at 11:20 PM.
 
Old 04-19-2007, 11:29 PM   #7
tuxdev
Senior Member
 
Registered: Jul 2005
Distribution: Slackware
Posts: 2,012

Rep: Reputation: 115Reputation: 115
I'm basically restating what wievens said, that lisp "will make you look at computing in a completely different way".

When it comes to references, Lisp has more than enough. Practical Common Lisp is an excellent book. Lisp took a major hit with the "AI winter", but it's growing more and more alive. We've got a pretty substantial lisper population right here at LQ.

Also, try learning how to use Vim or Emacs, if you haven't already (through system administration). Steep learning curve, but a very valuable skill. I personally prefer Vim.

/me points to Ruby again.
Python is worth a look too, I personally like Ruby more, though.
 
Old 04-19-2007, 11:37 PM   #8
suicideducky
Member
 
Registered: Aug 2006
Location: New Zealand
Distribution: Gentoo
Posts: 72

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by tuxdev
I'm basically restating what wievens said, that lisp "will make you look at computing in a completely different way".

When it comes to references, Lisp has more than enough. Practical Common Lisp is an excellent book. Lisp took a major hit with the "AI winter", but it's growing more and more alive. We've got a pretty substantial lisper population right here at LQ.

Also, try learning how to use Vim or Emacs, if you haven't already (through system administration). Steep learning curve, but a very valuable skill. I personally prefer Vim.

/me points to Ruby again.
Python is worth a look too, I personally like Ruby more, though.
I can already use Vim, had to learn to during fedora core server install for my holiday job, Not a big fan of emacs, but that's personal preference.

Is it viable to learn two languages at once? because I am actually gaining quite alot of interest in Lisp (well common lisp) after reading the wikipedia page and going through some of its links.

I did some python, but it didnt really catch my attention very well. I can do basic fault finding in python but cant really write my own code, but then again all I really need it for is fault finding anyway

But then again i still need what I would refer to as a 'conventional' programming language such as C++, ruby, pythong or java.
I'm thinking C++ simply because I really like the book "thinking in C++" and plus I've done some programming in it before.

Looks like its Lisp AND C++ but this may make things harder....

Thanks, Ducky.
 
Old 04-19-2007, 11:38 PM   #9
tread
LQ Newbie
 
Registered: Feb 2007
Posts: 29

Rep: Reputation: 15
I would start with C - and get yourself a basic Data structures and algorithms book. You can learn C as you code some of the algorithms - and get a really good fundamental base.
 
Old 04-19-2007, 11:43 PM   #10
suicideducky
Member
 
Registered: Aug 2006
Location: New Zealand
Distribution: Gentoo
Posts: 72

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by tread
I would start with C - and get yourself a basic Data structures and algorithms book. You can learn C as you code some of the algorithms - and get a really good fundamental base.
Can you give me a reason why I would choose C over C++?
As I understand it C++ was origionally developed as an extension to C, but then wen't off as its own language. And C++ still supports most C code if Im correct.

thanks again, Ducky
 
Old 04-19-2007, 11:54 PM   #11
archieval
Member
 
Registered: Apr 2007
Location: Philippines
Distribution: Kubuntu, Ubuntu, CentOS
Posts: 289

Rep: Reputation: 41
i think linux is all about (mostly if not) C and not C++.
perl is also a good scripting language.
LISP for me is about AI programming.
I would prefer C and hack some kernel!
 
Old 04-20-2007, 12:03 AM   #12
suicideducky
Member
 
Registered: Aug 2006
Location: New Zealand
Distribution: Gentoo
Posts: 72

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by archieval
i think linux is all about (mostly if not) C and not C++.
perl is also a good scripting language.
LISP for me is about AI programming.
I would prefer C and hack some kernel!
That's one of the key reasons I was thinking of doing C++/C, simply its versatility and widespreas use/acceptance.


Would any one care to recomend some IDE's for linux to use for C++?
and one for lisp?

I think ill just use either visual studio express edition for the small amount of programming I'll do in windows.

Thanks again, Ducky
 
Old 04-22-2007, 02:35 AM   #13
tread
LQ Newbie
 
Registered: Feb 2007
Posts: 29

Rep: Reputation: 15
Quote:
Originally Posted by suicideducky
Can you give me a reason why I would choose C over C++?
As I understand it C++ was origionally developed as an extension to C, but then wen't off as its own language. And C++ still supports most C code if Im correct.

thanks again, Ducky
C++ is quite different, ideologically, than C. There are two trends of thoughts I've seen:
1. Learn C, then learn object oriented programming with C++
2. Start directly with C++, after all everything that's in C is there in C++.

I prefer 1, as a teaching assistant I've seen students learn to code C style structured programs using C++ specific syntax - this is pretty much useless because you miss the whole point of C++. Learning it as a separate language later helps you to concentrate on the differences.
 
Old 04-23-2007, 03:15 PM   #14
skullmunky
Member
 
Registered: Aug 2003
Posts: 42

Rep: Reputation: 15
one vote for C++ from me too, or perhaps C and then C++. up until you get to graphics, UI's, stuff like that it's also portable if you use proper compilers. many people prefer learning programming in Java rather than in C/C++, because it enforces a certain kind of well-organized programming style and saves you from some of the gory details of memory management. this makes it good for making large, stable, maintainable code.

but i kind of prefer actually learning the gory details first, so you know what's really going on in there. what's the line about C? "all the power of assembly language ... with the comfort and convenience of assembly language?"

-skullmunky
 
Old 04-23-2007, 04:53 PM   #15
taylor_venable
Member
 
Registered: Jun 2005
Location: Indiana, USA
Distribution: OpenBSD, Ubuntu
Posts: 892

Rep: Reputation: 43
Check my sig. All of these are fantastic languages, and in my opinion offer much more than the common C / C++ / Java family. While many of them have a specific locus of potential, they're all general-purpose. Let me describe what I think to be their strengths:

Haskell - fully functional, and it takes advantage of this by also being lazy. Data is not evaluated until it is needed. Acquaints the programmer with doing things in a purely functional way, and forces you to think mathematically. It's also strongly typed, and has a very flexible type system, so you're almost sure to have some kind of a successful program if you can get it to compile.

OCaml - Functional, but also supports features of other paradigms. Use recursion when you want, and a while loop when you want. It's strongly typed, like Haskell, and the type system is flexible (though advanced features are more difficult to use until you understand functors). Also, it's object-oriented! And it can be faster than C++ code when compiled to native code, but also has byte-compilation to run on a virtual machine.

Erlang - Two words: strong + multiplexed. The virtual machine has very graceful error handling, allowing you to hotswap code in real time, without bringing down the system. It's also extremely good with multi-programming, using a message-passing paradigm that prohibits shared memory. It's concurrency implementation is considered better than pthreads by most who use it. Also, it has pattern matching, and can even utilize this feature on bit strings to easily extract and deal with low-level data.

Scheme - It's simple, yet highly computable. You can write your own implementation in 48 hours (do a Google search for that one). It has built-in continuation functionality, which lets you do all kinds of cool things like keep track of state or handle exceptions within functional code. More of a neat language than anything else, it will surely teach you a lot about how programs work.

Perl - Great for text processing, of course. And CPAN makes sure that you'll never be lacking for a library to perform some trick or another. Object-orientation is possible, but feels tacked-on. Excellent for one-off scripts, as well as libraries that will be used by one-off scripts.

Python - Fully object-oriented, and very readable. In Python, there's only one way to do it; this along with a well-thought-out method of object-orientation makes it great for programming "in the large". Some complain that it's slow, but it runs in many different environments. It's also a very transparent language, in that you can examine special variables to find out about objects. (This fills the role of the very cumbersome Java reflection features.)

Ruby - If I had to pick one, this is the one I would recommend to someone wanting to get immediate satisfaction in learning a new programming language. Fully object-oriented, with a very flexible hierarchy system that allows for a replacement of multiple-inheritance. Also, flexible and rewritable syntax, along with well-known metaprogramming techniques give it an edge when writing libraries that are intuitive and flexible to use. Lastly, it has blocks, which are really helpful for writing lots of code quickly (e.g. when iterating over a collection).

As I said, each has its strengths. I think Haskell is terribly useful for learning new things, Erlang would be really useful for future industry jobs (taking advantage of its multitasking capabilities and error handling), and Ruby will be helpful getting stuff done now.

But why not learn them all? I'm trying to learn as many technologies as possible. If you know all the solutions people have come up with so far, you're best equipped to always pick the one that will work for you. And if you don't find it, you've got plenty of starting points and ideas from which to write your own!

Oh, and as far as IDE choice goes, no matter what the language is: GNU Emacs or Vim. Why learn an editor for a single language? Learn to use the basic tools (an editor like Vim, a compiler like javac, and a build command like ant), and put them together. I can edit text amazingly fast with Vim, much more so than I could ever do with JBuilder or NetBeans or Eclipse or any other IDE. Plus I can use the same techniques not just for Java, but also for Haskell or Erlang or Scheme or OCaml or Ada or C++ or Perl or Python or Ruby or Bash or any other language I know. Then I run my build command, and my editor identifies the errors and steps through my code to find their origins. OK, so it doesn't work as well with languages like Haskell where type errors are very long and hard to (computationally) decipher, but for languages like Java and C++ it works great. (Besides, can you even find a working Haskell IDE?) My opinions are very strong on the issue, and I hate it when my instructors (used to) mandate that we use JBuilder. I feel like I'm going 20,000 MPH slower when I'm not using Vim.

Last edited by taylor_venable; 04-23-2007 at 05:01 PM. Reason: Added anti-IDE propaganda.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
which programming language is used to do tcp/ip programming?? gajaykrishnan Linux - Networking 9 12-21-2012 05:16 AM
What programming language do you know? zikhermm Programming 11 09-15-2001 10:51 PM
Programming Language Colonel Panic Programming 9 08-10-2001 01:57 AM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 10:53 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration