LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   Programming tools and languages for a programmer (https://www.linuxquestions.org/questions/programming-9/programming-tools-and-languages-for-a-programmer-683107/)

lali.p 11-13-2008 05:59 AM

Programming tools and languages for a programmer
 
Hi
I have been programming in the *NIX environment(mainly Linux and Solaris) for almost a year now. The only language that i have programmed in is C++.
Over this year i have learnt one lesson that a programmer should be very proficient with his tools and learning the right tools makes a lot of difference in your productivity.

Initially i worked on windows for learning programming using VS2007.
But then i switched to Linux(Slackware) and with the active help of you guys and help available on usenet newsgroups(for programming) was able to make a transition smoothly. Thank you all

The purpose of this post is that i want to know what all tools and languages you guys use. Editors, code browsing, detecting memory leaks, debugging and all other stuff.

Here is my the list of tools that i have found them to be very useful
1) Vim with inbuilt support for cscope for code browsing
3) gdb + dbx ,hey do share your experience with using tools for multithreaded applications and which you rate as the best. I have just used SunIDE but i am not very good in the field of debugging and still learning some basics
4) Doxygen for documentation
5) SVN for source code repository
I also use Sunstudio for making Makefiles. Other things on list are learning gnu autoconf and automake tools.



I have heard that eclipse is cool. Whats your opinion ? I have found vim to be fantastic especially once you learn all the major features and use cscope for code browsing.

Languages: In the near future i would also like to learn some other languages like Perl.Initially i was bit confused to make a choice between Perl or Python. But having read in the threads here in this forum, i have planned to go with Perl. Ease of learning language is not a criteria for me to select a language(i have heard that Python is quite easy to learn compared to Perl). I want to learn scripting and other web stuff( just for fun and curiosity, my work mainly revolves around multithreaded programming) and thats why i am choosing Perl.

Hey and also shed some light on Javascript ? What about Erlang( for concurrency ) ? Anyone ever tried his hands on Erlang ? Any other cool stuff / tools you guys use.

PS: Learning curve of a language/tool is certainly not a criteria for me to select something( thanks to Vim for teaching me this lesson

So feel free to share your experience about tools and languages to learn.

Thank you for your patience :)

Regards
Kartik Mahajan

hw-tph 11-13-2008 06:13 AM

Stick to what you're comfortable with. If you work as a programmer you will soon enough find yourself in an environment where your boss will say "These are your tools, now get the job done", so you will have to adapt and learn as you go along. It might be using C in Emacs or it might be using Java in NetBeans/IntelliJ/Eclipse/whatever... Eclipse is, in my personal opinion, incredibly overrated. NetBeans 6.5 is a lot quicker and feels like a more solid work environment. If you find yourself doing Java you will often need to use application servers like Glassfish or Weblogic. Those are beasts in their own right...

Vim is excellent since it is available for pretty much every imaginable platform and you will be able to find your way around vi well, which comes in handy on all *NIX platforms.

Some comments about your wrote:
  • Javascript. Well, if you're going to do anything web related you will need to learn how to use Javascript. Also have a look at the big Javascript libraries (rule number one in programming: Don't reinvent the wheel) like Yahoo's excellent YUI library.
  • Perl vs Python. Python is a much more modern language, but Perl might a tad more versatile. It is however ugly and unstructured (rather the opposite of Python). Also look into Ruby which has gained a tremendous popularity thanks to Rails.

Sergei Steshenko 11-13-2008 01:48 PM

Quote:

Originally Posted by hw-tph (Post 3340502)
Stick to what you're comfortable with. If you work as a programmer you will soon enough find yourself in an environment where your boss will say "These are your tools, now get the job done", so you will have to adapt and learn as you go along. It might be using C in Emacs or it might be using Java in NetBeans/IntelliJ/Eclipse/whatever... Eclipse is, in my personal opinion, incredibly overrated. NetBeans 6.5 is a lot quicker and feels like a more solid work environment. If you find yourself doing Java you will often need to use application servers like Glassfish or Weblogic. Those are beasts in their own right...

Vim is excellent since it is available for pretty much every imaginable platform and you will be able to find your way around vi well, which comes in handy on all *NIX platforms.

Some comments about your wrote:
  • Javascript. Well, if you're going to do anything web related you will need to learn how to use Javascript. Also have a look at the big Javascript libraries (rule number one in programming: Don't reinvent the wheel) like Yahoo's excellent YUI library.
  • Perl vs Python. Python is a much more modern language, but Perl might a tad more versatile. It is however ugly and unstructured (rather the opposite of Python). Also look into Ruby which has gained a tremendous popularity thanks to Rails.

Python is _not_ a much more modern language.

Sergei Steshenko 11-13-2008 01:51 PM

Being myself a Perl guy I would recommend (in addition to Perl) Lua. Looks clean, neat and simple.

And no, Lua does not resemble Perl syntax-wise.

chrism01 11-13-2008 06:00 PM

Yeah, Perl resembles C syntax and I've done a few things multi-threaded in it. (FWIW, I used to use C).
In terms of general Unix stuff, its also worth learning the shell and at least the basics of sed, awk.

http://www.tldp.org/LDP/abs/html/
http://www.grymoire.com/Unix/Awk.html
http://www.grymoire.com/Unix/Sed.html#uh-0

For Perl, these are very good links:
http://perldoc.perl.org/
http://www.perlmonks.org/?node=Tutorials

Good luck
:)

mmarshall 11-19-2008 07:48 PM

I think you would do well to learn a little python. At least skim the book Dive Into Python. (You can read if for free online.) After an hour you'll know enough to be dangerous.

If you're interested in web development, Javascript is great to know. And you shouldn't just 'know' it, you should know it thoroughly. There are too many people out there that think they know it and think they hate it, when in reality they just misunderstand it. (At a minimum you should be able to explain the terms 'closure' and 'prototype inheritance'.) This problem is augmented by the myriad of online tutorials and even published books that treat Javascript as just an extension to HTML. I recommend Douglas Crockford's talks and Javascript: The Definitive Guide.

And no matter what languages you learn, it's greatly helpful to really learn regular expressions. I recommend the book Mastering Regular Expressions.

MWM

pinniped 11-19-2008 09:15 PM

source editing: kate (except for Java, when I use eclipse)
debugging: gdb
memory leaks: valgrind (x86 and x86_64 only)
documentation: Doxygen (but only because cweb doesn't seem as popular)
source control: cvs (but svn, git, and bzr to pull in code from other projects)

AceofSpades19 11-19-2008 09:37 PM

Emacs is better then vim!
(sorry had to say it)

nehaandrew 11-26-2008 10:22 AM

My personal favourite IDE for Java is JDeveloper. Second in line - Eclipse.
:)

Linux

maradnus 11-27-2008 12:15 AM

My tool box:
-------------
Languages: C, C++
Scripting: Bash, sed, awk
Databases: PostgreSQL ( Interfaces: C -> libpq, ecpg)
FrontEnd: Qt
Source COde Control: CVS (easy to adapt)
Debugging: GDB
Testing Tools: gcov, mpatrol, gproff
Programming stubs: multi-tasking, multi-threading, semaphore, sockets
Web: PHP, CGI through C language or bash
--------------------------------------------

Sergei Steshenko 11-27-2008 01:11 AM

Quote:

Originally Posted by hw-tph (Post 3340502)
Stick to what you're comfortable with. If you work as a programmer you will soon enough find yourself in an environment where your boss will say "These are your tools, now get the job done", so you will have to adapt and learn as you go along. It might be using C in Emacs or it might be using Java in NetBeans/IntelliJ/Eclipse/whatever... Eclipse is, in my personal opinion, incredibly overrated. NetBeans 6.5 is a lot quicker and feels like a more solid work environment. If you find yourself doing Java you will often need to use application servers like Glassfish or Weblogic. Those are beasts in their own right...

Vim is excellent since it is available for pretty much every imaginable platform and you will be able to find your way around vi well, which comes in handy on all *NIX platforms.

Some comments about your wrote:
  • Javascript. Well, if you're going to do anything web related you will need to learn how to use Javascript. Also have a look at the big Javascript libraries (rule number one in programming: Don't reinvent the wheel) like Yahoo's excellent YUI library.
  • Perl vs Python. Python is a much more modern language, but Perl might a tad more versatile. It is however ugly and unstructured (rather the opposite of Python). Also look into Ruby which has gained a tremendous popularity thanks to Rails.

No, Python is not a much more modern language.

In fact, Perl as a language is more powerful than Python; also Larry Wall regrets stealing Python OO model - I can point you to the source of this statement.

Perl OO model actually allows to imitate almost any OO model in existence, and there are different OO "dialects" in Perl.

The last one "adopted" by Larry is "Moose.pm" - it is inspired by Ruby.

Similar to the one to be implemented in Perl 6.

Sergei Steshenko 11-27-2008 01:12 AM

Quote:

Originally Posted by maradnus (Post 3356307)
My tool box:
-------------
Languages: C, C++
Scripting: Bash, sed, awk
Databases: PostgreSQL ( Interfaces: C -> libpq, ecpg)
FrontEnd: Qt
Source COde Control: CVS (easy to adapt)
Debugging: GDB
Testing Tools: gcov, mpatrol, gproff
Programming stubs: multi-tasking, multi-threading, semaphore, sockets
Web: PHP, CGI through C language or bash
--------------------------------------------

SVN is definitely more comfortable; I'd still like to decide on HG vs 'git'.

Sergei Steshenko 11-27-2008 01:16 AM

Quote:

Originally Posted by lali.p (Post 3340489)
Hi
I have been programming in the *NIX environment(mainly Linux and Solaris) for almost a year now. The only language that i have programmed in is C++.
Over this year i have learnt one lesson that a programmer should be very proficient with his tools and learning the right tools makes a lot of difference in your productivity.

Initially i worked on windows for learning programming using VS2007.
But then i switched to Linux(Slackware) and with the active help of you guys and help available on usenet newsgroups(for programming) was able to make a transition smoothly. Thank you all

The purpose of this post is that i want to know what all tools and languages you guys use. Editors, code browsing, detecting memory leaks, debugging and all other stuff.

Here is my the list of tools that i have found them to be very useful
1) Vim with inbuilt support for cscope for code browsing
3) gdb + dbx ,hey do share your experience with using tools for multithreaded applications and which you rate as the best. I have just used SunIDE but i am not very good in the field of debugging and still learning some basics
4) Doxygen for documentation
5) SVN for source code repository
I also use Sunstudio for making Makefiles. Other things on list are learning gnu autoconf and automake tools.



I have heard that eclipse is cool. Whats your opinion ? I have found vim to be fantastic especially once you learn all the major features and use cscope for code browsing.

Languages: In the near future i would also like to learn some other languages like Perl.Initially i was bit confused to make a choice between Perl or Python. But having read in the threads here in this forum, i have planned to go with Perl. Ease of learning language is not a criteria for me to select a language(i have heard that Python is quite easy to learn compared to Perl). I want to learn scripting and other web stuff( just for fun and curiosity, my work mainly revolves around multithreaded programming) and thats why i am choosing Perl.

Hey and also shed some light on Javascript ? What about Erlang( for concurrency ) ? Anyone ever tried his hands on Erlang ? Any other cool stuff / tools you guys use.

PS: Learning curve of a language/tool is certainly not a criteria for me to select something( thanks to Vim for teaching me this lesson

So feel free to share your experience about tools and languages to learn.

Thank you for your patience :)

Regards
Kartik Mahajan

Read also about Jocaml.

ghostdog74 11-27-2008 01:37 AM

Quote:

Originally Posted by Sergei Steshenko (Post 3356343)
In fact, Perl as a language is more powerful than Python

Define "powerful".

Sergei Steshenko 11-27-2008 01:40 AM

Quote:

Originally Posted by ghostdog74 (Post 3356363)
Define "powerful".

Ability to do more with less effort from programmer.


All times are GMT -5. The time now is 07:26 AM.