PDA

View Full Version : How to start programming - guides and links for many languages



Wybiral
January 8th, 2007, 08:05 AM
Since there have been a ton of people asking for information and advice on various languages, including the popular "which is best" question, this thread has been started to alleviate those types of post's be providing a comprehensive list of resources on various languages.

Each reply will be a different language, if someone has something they would like to contribute to a language which already exists, please try to PM the original poster of that language instead of adding another reply with your contribution (to keep things readable and simple).

Please do not pollute this thread with questions and side comments, the point of this thread is to be a collection of links and we are trying to keep it as clean as possible. If a language isn't on here, and you know some good links for it, add it to the list. If you'd like to add something to a language that exists, please PM it to the original poster of that language so this thread doesn't become polluted or turn into a flame war or anything... Thanks!


This thread is NOT a chat thread, if you don't have relevant links to post, please don't!!!

~~~ Index ~~~
Ada (http://ubuntuforums.org/showpost.php?p=2914903)
Assembly (http://ubuntuforums.org/showpost.php?p=2167981)
bash (http://ubuntuforums.org/showpost.php?p=3248854)
C (http://ubuntuforums.org/showpost.php?p=2045086)
C++ (http://ubuntuforums.org/showpost.php?p=1983565)
C# (http://ubuntuforums.org/showpost.php?p=2321410)
Common Lisp (http://ubuntuforums.org/showpost.php?p=2224105)
D (http://ubuntuforums.org/showpost.php?p=2709705)
FreeBASIC (http://ubuntuforums.org/showpost.php?p=2712630)
Go (Golang) (http://ubuntuforums.org/showpost.php?p=9005779)
Java (http://ubuntuforums.org/showpost.php?p=1997993)
Objective-C (http://ubuntuforums.org/showpost.php?p=9034348)
OCaml (http://ubuntuforums.org/showpost.php?p=1997138)
Pascal (http://ubuntuforums.org/showpost.php?p=2061629)
Perl (http://ubuntuforums.org/showpost.php?p=2020378)
PHP (http://ubuntuforums.org/showpost.php?p=2327843)
Python (http://ubuntuforums.org/showpost.php?p=1984319)
Ruby (http://ubuntuforums.org/showpost.php?p=1994048)
Scheme (http://ubuntuforums.org/showpost.php?p=2839692)
Squeak (http://ubuntuforums.org/showpost.php?p=2002184)
Tcl (http://ubuntuforums.org/showpost.php?p=1985328)
Vala (http://ubuntuforums.org/showpost.php?p=9029029)
Google (http://www.google.com)


Credit to po0f for the idea to start this post, celsofaf for the idea to create this index, and aks44 for helping me clean it up!


EDIT my slavik: No idea why this wasn't stickied before. Please keep discussion relevant to this thread (Links and info only). For help, start a new thread.

Wybiral
January 8th, 2007, 08:07 AM
C++

Tutorials/references:

GCC compiler documents (http://gcc.gnu.org/onlinedocs/gcc-4.1.1/cpp/): (all) Very useful documentation on Gcc
Thinking in C++ (http://mindview.net/Books/TICPP/ThinkingInCPP2e.html) (beginner): a very good introduction to standard C++; book available for free download; also available in print
Teach Yourself C++ (http://newdata.box.sk/bx/c/index.htm): (beginner-intermediate) A very thorough C++ tutorial (basically a free book)
Programmer Heaven C++ Page (http://www.programmersheaven.com/zone3/index.htm): (beginner-advanced) Tons of useful links
C++ FAQ LITE (http://www.parashift.com/c++-faq-lite/index.html) (intermediate-advanced): covers a wide variety of C++ topics (a C++ introduction is suggested before reading)
cPlusPlus (http://www.cplusplus.com/doc/tutorial/): (intermediate) Great C++ reference (Covers many subjects)
Cpp Reference (http://www.cppreference.com/index.html): (advanced) Covers standard C library, and STL
MakeFile Tutorial (http://mrbook.org/tutorials/make/): (beginner-intermediate) Makefile introduction tutorial
Ubuntu GameDev Wiki (http://ubuntu-gamedev.wikispaces.com/): (intermediate) Helpful game development HOWTO's

Useful library tutorials/homepages:

Linux Journal Article (http://www.linuxjournal.com/article/8497): (advanced) Article on embedding python into C++ programs
wxWidgets (http://www.wxwidgets.org/): Cross platform GUI library
GTK (http://www.gtk.org/): Cross platform GUI library
Lode's Computer Graphics Tutorials (http://student.kuleuven.be/~m0216922/CG/index.html): (advanced) Very interesting graphical tutorials with C++ source code
SDL (http://www.libsdl.org/index.php): Great cross platform library (Graphics (2d/3d), sound, input/output, more...)
LightHouse3d GLUT page (http://www.lighthouse3d.com/opengl/glut/): (intermediate) Great info on GLUT (Cross platform OpenGL toolkit)
NeHe (http://nehe.gamedev.net/): (intermediate) Amazing OpenGL examples (most of which include linux compatible downloads (including makefiles))

I'll add more to this later, and anyone who wants me to add something, PM me a link and a description.


If you're having trouble compiling... Install the build-essential package!!!

finer recliner
January 8th, 2007, 08:19 AM
some of my favorite references:

Lots of Languages:
http://www.freetechbooks.com/
http://freecomputerbooks.com/computerbooks.html

Web Languages/Scripting:
http://w3schools.com/

Cheat Sheets:
http://mypage.bluewin.ch/yuppi/links/cheatsheets.html
http://www.digilife.be/quickreferences/quickrefs.htm

tzulberti
January 8th, 2007, 02:42 PM
C Con Clase (http://c.conclase.net/) (all): Lots of info about C++ in Spanish
CProgramming (http://www.cprogramming.com/) (basic - intermidiate): Info about C++

pmasiar
January 8th, 2007, 03:07 PM
Why Python?

Python (http://en.wikipedia.org/wiki/Python_%28programming_language%29)is a flexible language easier to learn than most other languages, but still powerful enough to be useful for solving real-life problems, used from MIT for learning programming to NASA and Google. Main project homepage is http://python.org/

You don't need to spend much money on Python: Python is open-source and free, including many online books, free GUI IDEs and many, many libraries.

One of reasons why python is so simple to learn is the python shell - interactive environment, where you can enter python statements one by one and evaluate them, try them, try function or methods and see results immediately. So you spend less time reading documentation and more time trying how it works. You can try Python from LiveCD, If you cannot, check Try Python (http://www.mired.org/home/mwm/try_python/) website - please be considerate and don't abuse it!

Python books.


To get the taste of Python: Start with elementary introduction to IDLE (http://hkn.eecs.berkeley.edu/~dyoo/python/idle_intro/) (python shell, no previous knowledge is necessary) and Instant Hacking (http://www.hetland.org/python/instant-hacking.php)
For beginners: this (http://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python) is best tutorial I found. Another good one is **** Baldwin's tutorial (http://www.dickbaldwin.com/tocpyth.htm) or Alan Gauld Tutorial (http://www.freenetpages.co.uk/hp/alan.gauld/). I also maintain Learn Python (http://learnpydia.pbwiki.com/) wiki with links to even more introductory lessons, including data structures and task to solve (both simple and more challenging).
For skilled programmers (people who know another programming language reasonably well):Dive Into Python (http://diveintopython.org/), or Guido van Rossum's tutorial (http://docs.python.org/tut/) will get you started - and you will be surprised how simple programming can be.
Screencast presentations; at showmedo.com (http://showmedo.com/videos/python) - from download/install to 20 minute TurboGears Wiki web app.


Python video
http://showmedo.com/videos/python
Python IDEs

One of the controversial features of Python is - whitespace is significant. As a result, you need to properly indent your code or you have syntax error. Beginners are often baffled by it, but experienced programmers will confirm that properly aligned code is major contribution to readability. Many big projects and big companies using languages with flexible whitespace (C/C++/Java/perl etc) have internal standards of intedation and programs, formatting code to enforce it. So Python standard way of handling whitespace is part of industry best practices, ignored by most languages.

As a result, in Python is very unwise to mix spaces and tabs using plain text editor like notepad. Using decent programming editor, or even better some IDE, is strongly advised. Python comes with standard IDE, called IDLE (it is inside joke from Monty Python (http://en.wikipedia.org/wiki/Monty_python) - yes, Python programmers are serious about having fun). Other good IDEs are SPE and Eric, both installable via apt or Synaptic.

What is Python good for?

Python is universal language, good for anything except kernel hacking. It allows you to use OOP - Object oriented programming, but does not forces you to do it. Even if for your application the raw speed is critical, you can use Python for it: (1) design a prototype in Python. 92)find the bottlenecks (5% of the code taking 80% of the time) and (3) rewrite those in C, which links easily with Python. Or you can compile source to standard executable by PsyCo or ShedSkin.

Python code is compiled at first run into bytecode (optimized for later interpretation), and much attention is given to increase speed of basic functions of the language. Compilers to executables are avilable.

Python comes with many libraries included, and many more external libraries are available, like numpy for numerical processing, RPy for access to R (professional free statistical package), wxPython to build platform-independent GUI apps, many web app frameworks like Django and TurboGears

Python Philosophy
Python has couple of "mantras":


readability is important - Python is optimized to be readable for humans first, even if it makes computer to work extra hard. Not too hard though: syntax is kept very simple by design.
There should be one obvious way to do it right - so most obvious way and shortest (less lines of code ) to do something is often the fastest and most preferred.
batteries included - many usefull libraries are included, and in every new release new libraries are added (after being stable for some time)
speed is not a problem until it is a problem - don't do premature optimization based on your guess what is bottleneck: do it right first, and optimize what you can measure.


Who uses Python

Python is very popular with smart geeks and smart companies: Google, NASA and others (http://www.python.org/about/quotes/). Python is preferred language for Ubuntu development.

eteran
January 8th, 2007, 08:13 PM
Tcl

The Tool Command Language is an easy to learn scripting language, but still very powerful.
Its designed to have self explaining, human readable sourcecode.

References:


The Official Homepage (http://www.tcl.tk)
Tcl Commands Manual (http://www.tcl.tk/man/tcl8.4/TclCmd/contents.htm)
The Tcler's Wiki (http://wiki.tcl.tk)
Wikipedia article (http://en.wikipedia.org/wiki/Tcl) - Includes alot of extra links also
Wikibooks Tcl (http://en.wikibooks.org/wiki/Programming:Tcl)


Interesting Packages:


mysqltcl (http://www.xdobry.de/mysqltcl/mysqltcl.html) - MySQL server access commands for Tcl


Distribution:

ActiveTcl (http://www.activestate.com/Products/ActiveTcl/), is a Tcl/Tk distribution from ActiveState available for Windows, Mac OS X, Linux, Solaris, AIX and HP-UX.

Although you can buy the development kits, the free distribution contains a complete and ready-to-use Tcl/Tk environment with lots of packages and widgets available. Documentation is available as Compiled HTML for Windows or as HTML converted from manual pages, for viewing locally.
Lots of demos for each package are also included.

Any online tutorial should teach the basics of the language, and once you are comfortable with it, all information needed can be found in the HTML documentation.

*note: I will add links for Tk also if you hand me some, as Tcl and Tk are close coupled. I just dont have personal experience with Tk yet.
*the distribution informations were kindly donated by the user Vox754, thanks

derjames
January 10th, 2007, 06:50 PM
RUBY

A brief description of the Ruby programming language by Yukihiro Matsumoto creator of ruby
http://www.informit.com/articles/article.asp?p=18225&redir=1&rl=1

* * * * * * *Online books * * * *
http://www.ruby-lang.org
http://www.humblelittlerubybook.com/book/
http://poignantguide.net/ruby/
http://pine.fm/LearnToProgram/?Chapter=00 thanks to 'Brazen ' for this link...

* * * * * * *web resources * * * *
Try Ruby from any web browser, NO installation required http://tryruby.hobix.com/
Documentation and help for Ruby http://www.ruby-doc.org/
The Pragmatic Programmer's Guide http://www.rubycentral.com/book/
Ruby Central http://www.rubycentral.com/
Ruby on rails http://www.rubyonrails.org/
Ruby user guide and tutorial http://www.rubyist.net/~slagell/ruby/index.html
Ruby Projects at RubyForge http://rubyforge.org/
Ruby bindings for Gnome http://en.wikipedia.org/wiki/Ruby_programming_language
Ruby GArden http://wiki.rubygarden.org/Ruby
Ruby Tutorial by Daniel Carrera http://www.math.umd.edu/~dcarrera/ruby/0.3/index.html
Ruby developer centre at Yahoo! http://developer.yahoo.com/ruby/

Ruby GUI toolkits http://www.trug.ca/Ruby_GUI_Toolkits
Ruby HowTo create a GUI for your application http://www.arachnoid.com/ruby/RubyGUIProject/index.html
The Ruby-Gnome project. GUI programming http://ruby-gnome2.sourceforge.jp/

Ruby IDE for Eclipse platform http://rubyeclipse.sourceforge.net/index.rdt.html

Ruby entry at Wikipedia http://en.wikipedia.org/wiki/Ruby_programming_language
Interview with Yukihiro Matsumoto (Matz) creator of Ruby http://www.linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html
Links and more links... http://rubycentral.com/links/index.html

This Link from Slashdot is about RUby and Lisp however it also includes a lively discussion of lots of languages:
http://it.slashdot.org/it/07/01/14/0336213.shtml

Wybiral
January 11th, 2007, 07:10 AM
OpenGL

It's not a programming language, but a really awesome+free 3d rendering API for multiple languages.

NeHe OpenGL tutorials (http://nehe.gamedev.net/): (beginner-advanced) Very nice tutorials/examples
LightHouse 3d (http://www.lighthouse3d.com/opengl/tutorials.shtml): (intermediate-advanced) More nice tutorials
OpenGL Redbook (http://fly.cc.fer.hr/~unreal/theredbook/): (advanced) Very thorough OpenGL book
OpenGL Bluebook (http://www.rush3d.com/reference/opengl-bluebook-1.0/): (advanced) Very thorough OpenGL reference
GameDev.net (http://www.gamedev.net/reference/list.asp?categoryid=31): (intermediate-advanced) More tutorials from gamedev
Code Sampler (http://www.codesampler.com/): (intermediate) Great tutorials and examples
Cone3d OpenGL Tutorials (http://cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/ogladv/index): (intermediate) Good tutorials/examples
gpWiki OpenGL (http://gpwiki.org/index.php/OpenGL): (intermediate) Game Programming Wiki's OpenGL page
Wikipedia's OpenGL page (http://en.wikipedia.org/wiki/OpenGL): (beginner) Links and info from wikipedia
Mesa3d (http://www.mesa3d.org/): The standard opengl implimentation for linux users
freeGLUT (http://freeglut.sourceforge.net/): The standard implimention of GLUT for linux
SDL (http://www.libsdl.org): A very nice library to enhance your OpenGL experience
Basic4SDL (http://p13.wikispaces.com/B4SDL): An ubuntu friendly BASIC language specially designed for OpenGL+SDL

<mawe>
January 11th, 2007, 07:55 AM
OCaml

General Resources:

http://caml.inria.fr/: OCaml's homepage
http://caml.inria.fr//cgi-bin/hump.en.cgi: The Ocaml Hump, something like Perl's CPAN
http://wiki.cocan.org: The OCaml Alliance, a group of OCaml industry users
http://caml.inria.fr/resources/index.en.html: Resources for OCaml users


Books, Tutorials:

http://caml.inria.fr/pub/docs/oreilly-book/html/index.html: Developing Applications with Objective Caml
http://caml.inria.fr/pub/docs/u3-ocaml/index.html: Using, Understanding and Unraveling the OCaml Language
http://www.ocaml-tutorial.org/: Objective Caml Tutorial
http://files.metaprl.org/doc/ocaml-book.pdf: Very good and up to date tutorial/book.

samjh
January 11th, 2007, 02:23 PM
Java

What is Java?

Official technology website: http://java.sun.com/

Official Java consumer website: http://www.java.com/en/

Wikipedia entry: http://en.wikipedia.org/wiki/Java_%28programming_language%29

Who uses Java?

NASA makes extensive use of Java. Java was its main programming language for the Mars Pathfinder mission, used extensively for data processing. The Hubble Space Telescope's control system interface is written in Java as well. NASA also uses Java for various day-to-day back-end processes in addition to its front-line space exploration programmes.

The number of Java users are too many to list. But a very small subset of larger organisations that use Java for products or research and development include: LG, Nokia, Sony-Ericsson, Apple, IBM, Google, Xerox, Siemens, Motorola and Sun itself.

Various websites use Java and JSPs (Java Server Pages) to drive it:

Electronic Arts: http://www.ea.com/language.jsp
General Motors: http://www.gm.com/
Sun Microsystems: http://www.sun.com/
Walmart: http://www.walmart.com/

Some interesting applications developed purely in Java:

Art of Illusion 3D graphics suite (note: gallery is very outdated): http://www.artofillusion.org/
Azereus bittorrent client: http://azureus.sourceforge.net/
Eclipse IDE and rich client platform: http://www.eclipse.org
Netbeans IDE: http://www.netbeans.org
Tribal Trouble 3D real time strategy game: http://tribaltrouble.com/
Various high-quality Java games: http://www.puppygames.net/
Apache Tomcat web application server: http://tomcat.apache.org/
Jake2 (Java port of Quake2 engine): http://bytonic.de/html/jake2.html
Sillysoft (Risk clones using Java): http://sillysoft.net/
Limewire P2P program: http://www.limewire.com/english/content/home.shtml

So how to develop using Java?

The best basic Java tutorials anywhere on the web:
http://java.sun.com/docs/books/tutorial/index.html

Official documentations:
http://java.sun.com/reference/docs/index.html

API specifications only:
http://java.sun.com/reference/api/

Other tutorials and free e-books:
http://www.javacoffeebreak.com/books/extracts/javanotesv3

Some good Java IDEs:
Eclipse - http://www.eclipse.org/
Netbeans - http://www.netbeans.org/
JEdit - http://www.jedit.org/

Installing Sun's Java in Ubuntu:
https://jdk-distros.dev.java.net/ubuntu-dev.html

garduino
January 12th, 2007, 11:58 AM
Squeak

Official Site: http://www.squeak.org/
Free Smalltalk Books: http://www.iam.unibe.ch/~ducasse/FreeBooks.html
Squeak wiki: http://wiki.squeak.org/squeak/
Seaside site (framework to build state of the art web apps): http://www.seaside.st/
Squeak Scriptaculous Demo: http://scriptaculous.seasidehosting.st/
Squeak fast start: http://www.arsol.net/arte/squeakXXI/squeakXXI.htm
Successful Squeak application: http://www.dabbledb.com/
Lots of sample web squeak-seaside apps: http://www.seasidehosting.st/
Squeak source code repository: http://www.squeaksource.com/
Squeak People: http://people.squeakfoundation.org/
Squeak Foundation: http://www.squeakfoundation.org/
European Smalltalk User Group: http://www.esug.org/
Planet Squeak: http://planet.squeak.org/
Squeak Notes: http://squeak.joyful.com/SqueakNotes
Useful blogs:
http://onsmalltalk.com/
http://weeklysqueak.wordpress.com/

zolly
January 14th, 2007, 10:55 AM
Is Python used for making applications (with GUI) in Ubuntu ?
I'm talking about applications that are installed when I enter in GNOME in Ubuntu.

justin_c18
January 14th, 2007, 11:49 AM
PYTHON


1) Perl To Python Migration - Martin C. Brown (http://www.megaupload.com/?d=B6XAVM97)
2) Introduction to Tkinter - Fredrik Lundh (http://www.megaupload.com/?d=QAFY3270)
3) Python Developer's Handbook - André Dos Santos Lessa (http://www.megaupload.com/?d=N83SQGJR)
4)OReilly - Programming Python 3rd Edition
5) Python 2.1 Bible.pdf (http://www.megaupload.com/?d=USS752YA)
6)Oreilly Python Cookbook 2Nd Edition
7)Python Phrasebook: Essential Code and Commands - Brad Dayley (http://www.megaupload.com/?d=TZQ5LLCH)
8)Apress.Beginning.Python.From.Novice.to.Professio nal (http://www.megaupload.com/?d=IR36UN7E)
9) Dive into Python (http://www.megaupload.com/?d=D733GE6Y)
10)GUI_Programming_with_Python-QT_Edition - Boudewijn Rempt (http://www.megaupload.com/?d=GL643KH8)
11) H.Deitel - Python - How to Program (http://www.megaupload.com/?d=JSU5SXED)
12) New Riders - Python Essential Reference, 2Nd Edition (http://www.megaupload.com/?d=HILELDWL)
13) OReilly - Core Python Programming
14) OReilly - Learning Python 2nd edition
15) OReilly - Python & XML
16) OReilly - Python In A Nutshell
17) OReilly - Python Programming on Win32
18) OReilly - Python Standard Library
19) Python text processing - David Mertz (http://www.megaupload.com/?d=TZQ5LLCH)
20) Thinking in Python - Bruce Eckel (http://www.megaupload.com/?d=75T5KA6N)

UNIX

1) Oreilly Unix CD bookshelf
2) Unix Shells by Example 3rd edition (http://www.megaupload.com/?d=ZMBFXHGP)



Thanks for the URl's dude! they're really going to help my progression :D

po0f
January 14th, 2007, 01:33 PM
zolly & justin_c18,

This isn't a discussion thread. If you have any questions or comments, please post another thread in the forum. Thank you.

Engnome
January 16th, 2007, 11:10 AM
Perl

What is it good for?

Perl (Practical Extraction and Reporting Language) is useful for dealing with lots of data, the scientists (http://www.bioperl.org/wiki/How_Perl_saved_human_genome) that mapped the human genome found it invaluable.

There are many myths about perl. Ten perl myths (http://www.perl.com/pub/a/2000/01/10PerlMyths.html) is a good read if you have only heard about perl from friends without any experience in perl. Perl is more than just simple scripts, you can make interfaces using glade and the gtk bindings (http://gtk2-perl.sourceforge.net/doc/pod/index.html) and create complete programs. Perl is also being used to write CGI scripts. It is known as one of "the three Ps" (Perl, Python, PHP)

Perl is often used as a glue language, tying together systems and interfaces that were not specifically designed to interoperate, and for "data munging", ie. converting or processing large amounts of data for tasks like creating reports. In fact, these strengths are intimately linked. The combination makes perl a popular all-purpose tool for system administrators, particularly as short programs can be entered and run on a single command line.

(copy pasted last paragraph from wikipedia. :cool: which btw makes this text licensed under the GNU doc license. (http://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_Licen se))

Places to go:


Wikipedia article. (http://en.wikipedia.org/wiki/Perl) (very good)

Robert's Perl Tutorial (http://www.sthomas.net/oldpages/roberts-perl-tutorial.htm)

Very short beginners tutorial. (http://cslibrary.stanford.edu/108/)

If you wan't a paperback book. (http://en.wikipedia.org/wiki/Programming_Perl)

The perl documentation. (http://perldoc.perl.org/)

perl modules for alot of things. (http://www.cpan.org/)

runningwithscissors
January 21st, 2007, 08:30 PM
C

Why?
Everyone and their mother knows C. Still a few links are always helpful.

For those who do not know C, unlike their mother, it is a very easy language to learn. It is fast. It is pervasive. It beats the hell out of all those claiming to be its successors.

Okay. This is starting to sound like zealotry. So, a simple reason: There is no good reason to not learn some basic C programming.

Tools
You'll need some tools. I have never used Debian, so I don't know how to install from the Debian repos. :(
Here are some of the best:
The compiler: GCC, of course. (and the toolchain: binutils, glibc etc.) Maybe part of the build-essential package on Debian-based distros.
The editor of legend: vim. http://vim.sourceforge.net/

Links
Surprisingly few, in fact:

First and foremost:
Learn some:
1) http://www.crasseux.com/books/ctutorial/
2) http://www.cprogramming.com/tutorial.html#ctutorial (Mind the zealotry, don't be fooled by the C++ evangelists)
3) http://members.cox.net/midian/articles/ansic1.htm

Try some examples: http://www.paulgriffiths.net/program/c/

A rather compressed but dated resource: HTML (http://publications.gbdirect.co.uk/c_book/) Downloadable
PDF (http://publications.gbdirect.co.uk/c_book/the_c_book.pdf)
Should you be the kind who likes to curl up on the sofa while studying programming:
http://www.amazon.com/C-Programming-Language-2nd/dp/0131103628

Second:
Enhance your knowledge: http://www.gnu.org/software/libc/manual/html_node/index.html

Third:
Clear any doubts: http://www.faqs.org/faqs/C-faq/faq/

Enjoy.

samjh
January 25th, 2007, 01:28 PM
Time to introduce one of my favourite "old-school" languages... Pascal! To those who come from that old-school comp sci background will know what it is. For those who don't... read on.

Pascal

What is Pascal?

Pascal is a highly structured programming language designed in the early 1970s by Dr Nikolaus Wirth.

Pascal grew out of Dr Wirth's desire to develop a highly structured programming language which will be used to teach structured programming to students. It was based on the influential but unsuccessful ALGOL project, in which Dr Wirth was a contributor. He based Pascal on ALGOL, but modified it heavily to remove ALGOL's weaknesses and make it more useful for general-purpose programming.

For the next 20 years, Pascal became a staple programming language for computer scientists and IT professionals. Assembly, C, and Pascal were major competitors in the field of system programming in the 70s and 80s.

Apple was heavy user of Pascal, later introducing object-oriented extensions, known as Object Pascal. Pascal was the principal programming language of the Apple Macintosh. It still has a strong following in the MacOS programming community.

Pascal also became very popular for Windows programming, thanks to Delphi. Delphi was an evolved, object-oriented, RAD tool which grew from the wildly popular Turbo Pascal compiler and IDE. Delphi and its dialect of Pascal competed strongly against Microsoft's Visual Basic for the Windows market, but eventually fell behind due to bad management by Borland during early 2000s. Delphi is still widely regarded as setting the unofficial standard for modern Pascal language features and compiler capability.

What's so special about Pascal?

Pascal is a very structured language, and its code is very easy to manage. Code is easily readable, yet is not heavily verbose. It strikes the balance between hard-to-read terse code (eg. C, C++) and ridiculously verbose code (eg. COBOL, Java, VB).

Most major Pascal compilers allow the integration of Intel or AT&T syntax Assembler within Pascal source. That's right folks: Assembly execution speed within an easy-to-read structured code base.

The combination of the above two features make Pascal as powerful (if not more powerful) as C in terms of system-level control, but without the penalty of archaic source code readability and maintenance.

Even using Pascal code alone will yield very fast executables. Pascal-coded executables compiled using Free Pascal Compiler (FPC) is only slightly slower than C-coded executables compiled using GCC.

Another interesting feature of Pascal is smart linking. This is implemented in Free Pascal, which can statically link only the portions of libraries used by your software. This makes Pascal programs easy to distribute for Unix/Linux based systems. Pascal's compilation process is also designed to be very portable across different processing platforms.

What does it look like?

Here is an example of classic Pascal code for reading ten numbers from console and displaying the sum and average (note that Pascal is not case sensitive):


program Average;

var
num, sum, avg: real;
i : integer;

begin
sum := 0.0;
for i := 1 to 10 do
begin
read(num);
sum := sum + num;
end;
avg := sum/10;
writeln('Sum =', num);
writeln('Average =', avg);
end.

See that the code is very readable and easy to understand, even if you are not familiar with Pascal. Although somewhat verbose for a simple program, the structured layout of the source code and its readability pays dividends for more complex source code. In fact, equally readable C code is similar in its verbosity as the Pascal example shown above.

What flavour of Pascal should I use?

This is dictated by the compiler you use. The best compiler in the free-and-open-source world is Free Pascal, which in my opinion is the best Pascal compiler apart from Borland/Codegear's Delphi. It provides very advanced compilation features, fast and efficient compilation, and compatibility with a wide range of Pascal dialects, including both Apple and Delphi's Object Pascal syntax.

Get Free Pascal here: www.freepascal.org

Free Pascal includes an IDE based on the Free Vision library. Free Vision is the Free Pascal implementation of the Turbo Vision console user interface library. It is similar in appearance to the N-Curses CUI used in some Unix/Linux software.

Easiest way to install is to download the .tar package for Linux. Unpack the .tar file (no need to unpack the other tar files inside it though), and run the install.sh script. Just watch out for prompts where directories are pre-specified in square brackets: these require you to type in a directory for copying files, or just press enter to install to the default directory in the square brackets.

Alternatively, you can use the .deb package download.

If you are into GUI programming or want a RAD environment using Pascal, use the Lazarus IDE: www.lazarus.freepascal.org

Lazarus is built on the Free Pascal Compiler, and uses its own GUI library based on GTK1.2 and Win32 (Qt and GTK2 is WIP). It comes with a visual form designer and various other development tools for rapid GUI creation.

GNU Pascal is also a popular Pascal compiler, distributed as part of the GNU Compiler Collection: http://www.gnu-pascal.de/

Want to find out more?

Wikipedia entry: http://en.wikipedia.org/wiki/Pascal_programming_language
A short introduction to Pascal: http://www.taoyue.com/tutorials/pascal
Free ebook on Pascal: http://www.marcocantu.com/epascal/default.htm
Pascal resource site: http://pascal-central.com/

DarkW0lf
February 17th, 2007, 04:54 AM
Assembly ( HLA )

http://webster.cs.ucr.edu/
http://www.masm32.com/board/
http://www.geocities.com/kahlinor/HLA.html

Assembly ( Gas )

http://tldp.org/HOWTO/Assembly-HOWTO/index.html
http://www.cs.utah.edu/dept/old/texinfo/as/as_toc.html

Dylnuge
February 24th, 2007, 05:14 PM
I would like to add that Java is also nice because it is its own platform, which means that it will run on any system that has the JRE (Java Runtime Environment) installed. So if you want to make small applications that you can show your friends (still running windows), Java apps will run on any system. (Well, at least Windows, Mac, Solaris, Linux).

lnostdal
February 28th, 2007, 05:25 AM
Common Lisp

Why:
http://wiki.alu.org/The_Road_to_Lisp_Survey

How:

http://www.gigamonkeys.com/book/
http://www.lispworks.com/documentation/common-lisp.html
http://sbcl.sourceforge.net/ (manual: http://www.sbcl.org/manual/ ) (front-end: http://common-lisp.net/project/slime/ )

docetes
March 5th, 2007, 12:10 PM
a good object orientated progamming tutorial http://sep.stanford.edu/sep/jon/family/jos/oop/oop1.htm

mixium
March 5th, 2007, 07:12 PM
Hi,

I just wanted to add that in my experience, the single most important part of learning to program is to have a problem that you want to solve before you decide to start learning to program. I myself started and stopped learning several times as I just wanted to know how to program but had not thought out why I wanted to learn in the first place. Apart from the wealth of knowledge these guys are offering, you must find a concrete source of motivation or you will stop learning at the first road block you come to.

Stay motivated, learning is always a good thing.

Michael

cunawarit
March 19th, 2007, 02:02 PM
C#

Why?

Tons of job opportunities.
Nobody has posted it here before
Very similar to Java.
Object Oriented.
Great IDEs available for it.


Why not?

Most jobs will be Windows development.
Last time I checked average salaries were lower than for Java developers.


IDEs

MonoDevelop - Available with most Linux distros: http://www.monodevelop.com
Visual Studio - Windows only - Express is free as in beer: http://msdn.microsoft.com/vstudio/express/


Useful links

Comparison between C# and Java - http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java
Microsoft info for C# noobs - http://msdn2.microsoft.com/en-us/vcsharp/aa336766.aspx
C# articles, code, community - http://www.csharpcorner.com/
Mono - http://www.mono-project.com/Main_Page
.NET Framework - http://msdn2.microsoft.com/en-us/netframework/default.aspx
ASP.NET apps in Linux - http://www.mono-project.com/ASP.NET

Mirrorball
March 20th, 2007, 07:38 PM
PHP

From php.net: PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.

Why?
It's easy to learn.
It's easy to find cheap PHP hosting for your site. If you develop with Ruby, Java, or Python, you will probably have to spend more money.
Lots of PHP scripts are available: content management systems, forum scripts, picture galleries, blog scripts etc. Most of them are open source.
Very large number of users. It's the most popular programming language for developing web applications.
Object-oriented programming is optional, but well supported.Why not?

Companies prefer Java or .NET.
It's very easy to write messy unmaintanable code.IDEs

PDT plugin for Eclipse: http://www.eclipse.org/pdt/
Zend Studio (not free): http://www.zend.com/products/zend_studioBut any text editor with syntax highlighting is good enough for PHP programming.

How to Install Apache + PHP5


sudo apt-get install apache2 libapache2-mod-php5To verify your installation, you can run following script:

<?php
echo phpinfo();Save it as /var/www/phpinfo.php and point your browser to http://localhost/phpinfo.php You should see a lot of information about your PHP installation.
More about setting up a server: https://help.ubuntu.com/6.10/ubuntu/serverguide/C/index.html

Learning and Reference Resources

Always your first resource: http://www.php.net/
Sitepoint: http://www.sitepoint.com/There are lots of PHP resources on the web because PHP is immensely popular. You'll find many others yourself.

Frameworks

If you already know how to program:
Zend Framework: http://framework.zend.com/
Symfony: http://www.symfony-project.com/
CakePHP: http://www.cakephp.org/
Code Igniter: http://codeigniter.com/Scripts

Wordpress: for blogs and simple sites. http://wordpress.org/
Joomla: content management system. http://www.joomla.org/
Drupal: content management system. http://drupal.org/
phpbb: forum script. http://www.phpbb.com/
PunBB: another forum script. http://www.punbb.org/
Vanilla: yet another forum script. http://getvanilla.com/
Gallery: for picture galleries. http://gallery.menalto.com/
Coppermine: also for galleries. http://coppermine.sourceforge.net/

TreeFinger
March 27th, 2007, 04:26 AM
Very nice thread :popcorn:
I am glad I checked the ubuntu forums instead of trying to dig through google's results.
Thank you very much :)

WW
March 30th, 2007, 08:17 AM
In the post about C, this page is suggested: http://www.faqs.org/docs/learnc/

It turns out that the examples in this tutorial are riddled with errors. I don't think this tutorial should be recommended.

Kingsley
April 4th, 2007, 10:02 PM
The third linked C++ tutorial is nice but I keep getting a warning error when I compile its examples;

/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
In summary, it's saying that <iostream.h> is deprecated. Could this particular tutorial be outdated?

po0f
April 4th, 2007, 10:07 PM
Kingsley,

Yes the tutorial is outdated, but this isn't a discussion thread. :)

If you would repost your problem in a new thread, I'm sure people will help you out.

runningwithscissors
April 14th, 2007, 10:13 AM
In the post about C, this page is suggested: http://www.faqs.org/docs/learnc/

It turns out that the examples in this tutorial are riddled with errors. I don't think this tutorial should be recommended.
Which ones?

WW
April 14th, 2007, 04:33 PM
runningwithscissors: Check out this thread: http://ubuntuforums.org/showthread.php?t=396904
In particular, see my post on the second page.

EDIT: Here are some more specifc details of problems in that tutorial. I started browsing in Section 5.


Section 5.3, Example 5-2: more missing semicolons.
Section 5.5, Example 5-3: missing #include <stdio.h>
Section 6.3, Example 6-1: index is out-of-bounds
Section 6.4, Example 6-2: In the for statement, the last character should be ), not }
Section 6.8, Example 6-4: 1. Declaration of 'name' in the Person struct is not correct; it should be
char name[40];
2. Initialization of hero is not correct; should be
struct Person hero = {"Robin Hood", 20, 191};
3. Code declares the variable sidekick but uses john
4. Missing semicolon after
john.name = "John Little"
5. Character arrays can not be assigned with a statement such as
john.name = "John Little";
One way to fix this is to use
strncpy(john.name,"John Little",39);
(But one should also be aware of how strncpy handles null-terminated strings.)
If strncpy is used, add #include <string.h> at the top of the file.
Section 9.3, Example 9-1: The program prints the squares of the numbers 2 through 12, not 0 through 9 as the
author claims.

runningwithscissors
April 14th, 2007, 08:27 PM
runningwithscissors: Check out this thread: http://ubuntuforums.org/showthread.php?t=396904
In particular, see my post on the second page.
Ah, okay. Sorry about that.
Have replaced it with a (hopefully) nicer alternative. :)

pmasiar
April 15th, 2007, 04:30 AM
...

WW, if you enabled PM, I would not have to pollute this thread and would send you private reminder. But alas, I cannot, so here it goes:

Please, don't post here is you want only one person to read the message. Sent PM to that person, and s/he will most likely include your suggestions. Post here only if you cannot agree.

Keep this thread clean. Soon we will need to ask mods to delete irrelevant posts... :-(

And yes, you can send me PM (private message) if you want. I cannot imagine why someone disables that.

Somenoob
April 16th, 2007, 06:10 AM
Who else here finds the "help" statement in the python interpreter the best documentation? everything is pretty well-defined.

forsaken_pariah
May 7th, 2007, 04:05 AM
I think another very good one for Python is How to Think Like a Computer Scientist (http://www.ibiblio.org/obp/thinkCSpy/index.html).

samjh
May 24th, 2007, 01:34 AM
D programming language

D is a relatively young programming language, similar to C and C++, but improving upon the features of the two languages.

Like C and C++, D is a system programming language that can also be used to write high-performance application programs.

Features
Syntax similar to C++. Supports imperative, generic, object-oriented, structured programming paradigms. Data-type bindings to C. Easy integration with C libraries. Automatic memory management (ie. garbage collection). Manual memory management is also supported. Low-level hardware access for system programming. In-line Assembler support. Operator overloading. Compiled language with no need for a virtual machine. Exception handling. Classes and functions only need to be written once (no need for separate header files). Templates Associative arrays, leading to flexible data structures. Statically typed with type checking. ... and more.

D is like an evolution of C and C++, dropping the quirky and error-prone feature of the languages and substituting their power with productivity and safety features from other modern languages like Java, Python, and Ruby.

D's close similarity with C and C++ means that those who come from C/C++/Java backgrounds can easily learn the syntax and coding conventions of the language.

Main website: http://www.digitalmars.com/d/index.html

Wikipedia entry: http://en.wikipedia.org/wiki/D_programming_language

samjh
May 24th, 2007, 04:01 PM
FreeBASIC

FreeBasic is a fast and powerful implementation of the famous BASIC programming language. FreeBasic is designed to be as compatible to Microsoft's classic Q-Basic dialect of the language, as well as adding modern and powerful features. Some of these additional features include:
In-line Assembler. Multi-treading support. Function overloading. Pointers Unicode support Debugging support. Optional parameters Enumerations Dynamic arrays

Currently FreeBasic is a third-generation procedural programming language. Development is currently under way to incorporate object-oriented language features. However, users can still program using object-oriented design by using the types-as-objects trick.

Programs written in FreeBasic are compiled into native executables. The speed of the executables are quite fast, enough to develop applications such as real-time raytracing 3D renderers.

FreeBasic is available under GPL, and its libraries are licensed under LGPL. Supported platforms are Windows, Linux, and MS-DOS. However, the support is currently limited to 32-bit architectures.

FreeBasic boasts a small but powerful set of standard libraries. These include a very capable 2D graphics and console library for graphics applications as well as custom console interfaces. Other capabilities found in Q-Basic are also available. This makes learning to program in FreeBasic a rewarding experience, as nice-looking, sophisticated programs can be created quite quickly, thanks to the language's ease of learning and the useful standard libraries.

Official website: http://www.freebasic.net/

Features: http://www.freebasic.net/index.php/about?section=features

Language documentation: http://www.freebasic.net/wiki/wikka.php?wakka=DocToc

Screenshots of applications developed with FreeBasic: http://www.freebasic.net/index.php/gallery

BeardlessForeigner
June 14th, 2007, 02:04 AM
Scheme

Scheme is a version of Lisp that is used often in educational settings, and can serve as a good intro to computer science in general. MIT OpenCourseWare has entire class lecture notes for its intro computer science class that uses Scheme, and the textbook is somewhat well known and is available free online.

http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-001Spring-2005/CourseHome/index.htm
http://mitpress.mit.edu/sicp/full-text/book/book.html

Edit: In the past year or so MIT switched its intro computer science class over to python (http://www.amk.ca/diary/2006/11/mit_to_try_python_for_introduc.html). But the notes and textbook for the original and infamous Scheme variant are still available. Hopefully in another year or two the python class will be up as well.

samjh
June 26th, 2007, 07:51 AM
Ada

Just realised this little gem hasn't made it into this thread yet. :)

What is it?

Ada is a programming language created by the US Department of Defense between 1974 and 1983. Prior to this, they used mostly C and Assembly for most software projects (along with some 200 others), and found that those programming languages were not successful in producing reliable software for critical applications. The Ada programming language was designed as a system programming language (similar target to C) for mission-critical systems, such as avionics and weapon systems.

Ada is a very popular language for critical systems, and has been widely adopted in the commercial industry, in addition to retaining its traditional foothold in the military and its related industries. The following are notable users of Ada: Boeing British Aerospace European Aeronautic Defence and Space Company Channel Tunnel London Underground Paris Metro and Suburban Rail Raytheon (missile and radar company) 54 air traffic control agencies world-wide.
Although its life began in the US DoD, its influence has now spread to almost every industry that develops or uses critical software systems, even in the former USSR and China!

Design goals of Ada

Ada was designed with the following goals:
Program efficiency System-level access comparable to C Code modularity Code readability by non-programmers Portability Rigorous compile-time and run-time error handling Reduction of programming faults during development

An in-depth 1995 study by Stephen F. Zeigler (http://www.adaic.com/whyada/ada-vs-c/cada_art.html) showed that development in Ada costs about half that of C++. It also suggests that Ada produces "almost 90% fewer bugs for the final customer".

Ada's readability and encouragement of modular programming has made it somewhat popular as a teaching language. Many universities used Ada for its introductory courses until Java came along.

Partial List of Features

Object orientated programming
Strong typing
Abstractions to fit program domain
Generic programming/templates
Exception handling
Facilities for modular organisation of code
Standard libraries for I/O, string handling, numeric computing
Systems programming
Concurrent programming
Real-time programming
Distributed systems programming
Interfaces to other languages (C, COBOL, Fortran)
Unicode support (8/16/32 bit)

Is it Free and Open Source?

Sure is! AdaCore, the leading provider of Ada compilers and development tools, has released its GNAT compiler under GPL since 2002. Even prior to that, older GNAT compilers came with OSI-approved GNAT Modified GPL.

What's more, GNAT uses GCC as its back-end, which makes Ada programs very portable!

You can install GNAT on Ubuntu using this command:

sudo apt-get install gnat

Gedit and Vim supports syntax and keyword highlighting for Ada. KDevelop also supports Ada projects. AdaCore produces GNAT Programming Studio, an IDE for Ada, C, and C++.

How do I learn to use it?

Here are some links to Ada learning resources:

http://en.wikibooks.org/wiki/Ada_Programming

http://linuxgazette.net/issue81/adam2.html

http://www.pegasoft.ca/resources/boblap/book.html

http://stwww.weizmann.ac.il/g-cs/benari/books/ase-pdf.zip

salehid
July 22nd, 2007, 01:29 AM
Thanks ...

But do you have any new link for Jxta ...

Thanks anyway ... the other linkd are really helpfull.

Yes
July 29th, 2007, 07:14 PM
Here's an online textbook for Java: http://math.hws.edu/javanotes/ . It includes everything from if statements to advanced GUIs and threading.

pgar23
August 25th, 2007, 04:42 AM
Bash

Why?

This language is highly relative to Ubuntu. It can assist you in solving some of your own problems relating to Ubuntu or the shell. Simple language to learn. Good for beginners/NOOBS.

Tools

You don't need any compilers or any additional software to learn/apply BASH. All you need is to open a terminal and begin scripting.

Links


Best = http://www.tldp.org/LDP/abs/html/index.html
http://linuxcommand.org/
http://www.gnu.org/software/bash/manual/bashref.html
http://www.ss64.com/bash/
http://linuxhelp.blogspot.com/2005/10/10-seconds-guide-to-bash-shell.html


Enjoy!

santiagoward2000
August 25th, 2007, 04:45 AM
Bash

Why?

This language is highly relative to Ubuntu. It can assist you in solving some of your own problems relating to Ubuntu or the shell. Simple language to learn. Good for beginners/NOOBS.

Tools

You don't need any compilers or any additional software to learn/apply BASH. All you need is to open a terminal and begin scripting.

Links


Best = http://www.tldp.org/LDP/abs/html/index.html
http://linuxcommand.org/
http://www.gnu.org/software/bash/manual/bashref.html
http://www.ss64.com/bash/
http://linuxhelp.blogspot.com/2005/10/10-seconds-guide-to-bash-shell.html


Enjoy!

Hi pgar23. Those links are really usefull! Thanks!

Marat Galiev
August 27th, 2007, 04:36 PM
Hello 2 all!
Where i can find Mono guides?
Please give links.
Sorry for my English:)

pgar23
August 27th, 2007, 04:46 PM
whats a mono guide?

Marat Galiev
August 27th, 2007, 05:06 PM
mmm,for example stetic GUI guide for dummies,or programming with mono for dummies:)
Please no C#,only MONO.

TSP
October 10th, 2007, 06:56 PM
mmm,for example stetic GUI guide for dummies,or programming with mono for dummies:)
Please no C#,only MONO.

that would be great! I am learning C# but i can't find a book to learn ho to use stetic / monodevelop to build a simply GUI

wPwLUi3N
March 16th, 2008, 01:55 AM
If you are interested in C Programming try these links -

C Programming (http://www.cprogramming.com)
C Programming Reference (http://www.cprogrammingreference.com)

noerrorsfound
June 24th, 2008, 08:28 PM
http://iamar3d.com/

Click the link that says "Video Lectures" and there's a series titled Intro to Programming with Python and Tkinter (free, of course;))

escapee
June 25th, 2008, 02:39 PM
Objective-C

Why?

Strict superset of C.
Object-Oriented.
Simple syntax - Mix of C and Smalltalk.
Message sending.
Functions and parameters are very readible.
Generally a very small learning curve if you know C.
gcc contains Objective-C compiler.
Can integrate with C++ (Objective-C++).
Objective-C 2.0 has garbage collection.


Why not?

Most Objective-C frameworks/libraries are Mac only.
GNUStep support on Linux is somewhat limited, but getting better.
Not as popular as other languages.


IDEs

Xcode - Mac only.
Many text editors support Objective-C syntax coloring and gcc can compile Obj-C.


Useful links

Objective-C Wikipedia - http://en.wikipedia.org/wiki/Objective-C
Apple's "The Objective-C 2.0 Programming Language"- http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf
"Object-Oriented Programming and Objective-C" - http://objc.toodarkpark.net/

ahmatti
November 3rd, 2009, 06:33 AM
R

R is a language and software for data analysis and graphics. It is an open source project with very active community and a huge amount of contributed extension packages. You can find a function for almost all purposes and if you can't you can always write your own! http://www.r-project.org

Getting started:

An introduction to R http://cran.r-project.org/doc/manuals/R-intro.pdf
CRAN contributed documentation http://cran.r-project.org/other-docs.html
QuickR http://www.statmethods.net/

Other links:

Creating R Packages: A Tutorial: http://epub.ub.uni-muenchen.de/6175/
Sweave – Dynamic reports with R http://www.statistik.lmu.de/~leisch/Sweave/
The R Inferno http://www.burns-stat.com/pages/Tutor/R_inferno.pdf
http://www.programmingr.com/
http://www.r-cookbook.com/
R on twitter http://twitter.com/#search?q=%23rstats

I'll add more later :)

Commanderkeen777
November 14th, 2009, 11:55 PM
If you are looking for further direction the Craigslist section of this link shows what jobs are in high demand.

http://www.langpop.com/ (http://www.langpop.com/)

jakjoseph
November 15th, 2009, 06:33 PM
Hi i'm new to ubuntu programming. i'm intending to develop a software which can access webcam and process the images coming from it for applications like face recognition color tracking etc. i dont know which language i should start with. please help me to select a programming language for this application. i'm good at c and c++.
thanks in advance

samjh
November 17th, 2009, 03:04 PM
@ jackjoseph

Please start a new thread in the forum for your question.

See in the original post:

Please do not pollute this thread with questions and side comments, the point of this thread is to be a collection of links and we are trying to keep it as clean as possible.

Jekshadow
January 8th, 2010, 05:06 AM
Here is a C tutorial I have found useful:

http://www.iu.hio.no/~mark/CTutorial/CTutorial.html

nvteighen
January 8th, 2010, 10:27 AM
Here is a C tutorial I have found useful:

http://www.iu.hio.no/~mark/CTutorial/CTutorial.html

That's an outdated version of the link #1 mentioned in this post: http://ubuntuforums.org/showpost.php?p=2045086

e_torano
January 18th, 2010, 06:00 PM
I'd just like to point out Aptana Studio with the PDT SDK plugin as a useful IDE for PHP.

AMadDog
January 30th, 2010, 08:17 PM
which one is most linux related, say I wanted to eventually mod linux which one/s would I most likely want to learn to do that?

AMadDog
January 30th, 2010, 08:19 PM
@ jackjoseph

Please start a new thread in the forum for your question.

See in the original post:

sorry just read will start a new thread

markbuntu
February 13th, 2010, 09:54 PM
MIT has a lot of free online courses. It is a little hit or miss but there are a lot of courses that would be of interest to programmers and engineers. It is part of the MITOpenCourseWare project.

http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/index.htm

loyo
February 24th, 2010, 11:53 AM
good theread, it is convenient for us to talking of the special object. but if there are too much reply in one thread , it will be not convenient.

loyo
February 24th, 2010, 11:58 AM
Just reply the mean of the title , if you have not programming experience, you can select one programming book, lay the foundation.

ryniek
March 21st, 2010, 11:52 PM
Google's programming language - Golang

Official website: Golang.org (http://golang.org/)
Golang @ Wikipedia: Go programming language (http://en.wikipedia.org/wiki/Go_(programming_language))
How to - Install: Installation (http://golang.org/doc/install.html)
Tutorial: Golang tutorial (http://golang.org/doc/go_tutorial.html)
Official Golang mail group: Golang-nuts (http://groups.google.com/group/golang-nuts?pli=1)
Unofficial Golang resources: Golang @ Cat-v.org (http://go-lang.cat-v.org/)
IRC: #go-nuts on irc.freenode.net

arkashkin
March 26th, 2010, 06:56 AM
Vala programing language

Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C.

Homepage:
http://live.gnome.org/Vala

schauerlich
March 27th, 2010, 07:49 AM
Objective-C

Learning Objective-C: A Primer (http://developer.apple.com/mac/library/referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/index.html#//apple_ref/doc/uid/TP40007594) - A good first step for getting familiar with ObjC
The Objective-C Programming Language (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html#//apple_ref/doc/uid/TP30001163) - A more detailed introduction to ObjC
Object Oriented Programming and the Objective-C Language (http://objc.toodarkpark.net/) - Another Objective-C tutorial
Object Oriented Programming in Objective-C (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/OOP_ObjC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40005149) - If you're unfamiliar (or just rusty) with OOP
Cocoa Fundamentals Guide (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/Introduction/Introduction.html) - An introduction to Apple's OpenStep based, object oriented application framework
GNUstep (http://www.gnustep.org/) - A free and open source implementation of the OpenStep standard. It has limited compatibility with Cocoa
User Guides (http://wiki.gnustep.org/index.php/User_Guides) - A collection of useful links for those wanting to learn more about GNUstep

praom2104
April 10th, 2010, 06:28 PM
Thanks.. Your thread helped me a lot in learning.
especially the link for cheatsheet by "finer recliner" was awesome.

Thanks.

Jack_Smith
April 23rd, 2010, 01:10 PM
Visual Basic 6 is the most popular programming language . The online tutorial lets you master Visual Basic 6. You can create your own computer programs after following the lessons.:)

Mrshivels
June 2nd, 2010, 01:13 AM
Is there a site that has a list of open source programs and what programing language they are coded in? So that someone can browse a list of C coded programs to see if the program source code is something they want to view and learn from since they just learned the basics of C and want to see it in real use(but based on program type)?

dv3500ea
June 6th, 2010, 02:53 PM
ECMAScript/Javascript
A functional/prototypal language used in dynamic web pages, flash (actionscript) and GNOME 3. It can be used to create GNOME applications through Gjs (http://live.gnome.org/Gjs) or seed (http://live.gnome.org/Seed)
Why?

It is a dynamic language with support for dynamic arrays, objects, lambda calculus/closures and regexps
It uses an elegant prototypal object oriented approach that is more intuitive than the traditional class based approach
It is relatively easy to learn
It is used a lot in up coming technologies eg. GNOME 3 and HTML5

Why Not?

It is a young language and therefore has a number of inconsistencies
There are a wide number of implementations that are not all compatable with each other
The GNOME projects are new and lack documentation
It has a misleading name (javascript) - javascript has little to do with java.

References

Language Website: http://www.ecmascript.org/
Tutorial(web based): http://www.w3schools.com/js/default.asp
Seed project: http://live.gnome.org/Seed
Gjs project: http://live.gnome.org/Gjs
Wikipedia: http://en.wikipedia.org/wiki/ECMAScript
Code checker(very good): http://www.jslint.com/
The good parts(video): http://www.youtube.com/watch?v=hQVTIJBZook
Javascript Library Design(video): http://www.youtube.com/watch?v=0LKDImgRfrg
Eloquent Javascript Ebook: http://eloquentjavascript.net/

geirha
June 12th, 2010, 10:49 PM
BASH
http://mywiki.wooledge.org/BashGuide
http://wiki.bash-hackers.org/doku.php
http://mywiki.wooledge.org/BashFAQ

What NOT to read
The Advanced Bash-Scripting Guide
«The infamous "Advanced" Bash Scripting Guide should be avoided unless you know how to filter out the junk. It will teach you to write bugs, not scripts. In that light, the BashGuide was written: http://mywiki.wooledge.org/BashGuide»
Google
«Google is NOT a preferred source for learning bash, because 90% of the "tutorials" and scripts out there are JUNK.»

The above two quotes are from #bash at irc.freenode.net

Frant
June 18th, 2010, 05:17 PM
PHP Tutorial (http://phpforms.net/tutorial/tutorial.html) - for real beginners

pitiburi
July 2nd, 2010, 02:38 AM
concurrency-oriented programming:

ERLANG
http://www.erlang.org/
http://www.planeterlang.org/
http://www.tryerlang.org/
http://trapexit.org/

Erlang is a language where concurrency belongs to the programming language and not the operating system. Erlang makes parallel programming easy by modeling the world as sets of parallel processes that can interact only by exchanging messages. In the Erlang world, there are parallel processes but no locks, no synchronized methods, and no possibility of shared memory corruption, since there is no shared memory.
Erlang programs can be made from thousands to millions of extremelylightweight processes that can run on a single processor, can run on a multicore processor, or can run on a network of processors.


What is Erlang and OTP?

Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang's runtime system has built-in support for concurrency, distribution and fault tolerance. Originally developed at Ericsson, it was released as open source in 1998.
OTP is a set of Erlang libraries and design principles providing middle-ware to develop these systems. It includes its own distributed database, applications to interface towards other languages, debugging and release handling tools. These tools and applications distributed by Ericsson are complemented by numerous other open source projects



What sort of applications is Erlang particularly suitable for?

Distributed, reliable, soft-real time concurrent systems.


Telecommunication systems, e.g. controlling a switch or converting protocols.
Servers for Internet applications, e.g. a mail transfer agent, an IMAP-4 server, an HTTP server or a WAP Stack.
Telecommunication applications, e.g. handling mobility in a mobile network or providing unified messaging.
Database applications which require soft realtime behaviour.

Check out specially:
http://www.ejabberd.im/
http://yaws.hyber.org/


What’s This All About?
It’s about concurrency. It’s about distribution. It’s about fault tolerance.
It’s about functional programming. It’s about programming a distributed concurrent system without locks and mutexes but using only pure message passing. It’s about speeding up your programs on multicore CPUs. It’s about writing distributed applications that allow people to interact with each other. It’s about design methods and behaviors for writing fault-tolerant and distributed systems. It’s about modeling concurrency and mapping those models onto computer programs, a process of concurrency-oriented programming.


Some books:
http://www.pragprog.com/titles/jaerlang/programming-erlang
http://oreilly.com/catalog/9780596518189
http://www.manning.com/logan/




Gotta say, I love Common Lisp, and I love Erlang.

Dara Javaherian
July 4th, 2010, 06:55 AM
Processing

Why processing?


Electronic sketchpad - used for highly graphical applications
Uses the Java programming language
Open source/free
Simple to install
Over 100 libraries
Great for beginners as all work can be seen graphically easily
Fun!

Links:


http://wiki.processing.org/w/Main_Page
http://processing.org/learning/
http://en.wikipedia.org/wiki/Processing_%28programming_language%29

What processing looks like:

void setup() {
// define the window size & enable anti-aliasing
size(200, 200);
smooth();
// Set "ink" color, font, and alignment for rendering text.
fill(0); // Black
// setup the font (system default sans serif)
textFont(createFont("SansSerif",18));
textAlign(CENTER);
noLoop(); // draw() only once
}

void draw() {
// Draw text to screen using the previously set font.
text("Hello World!", width/2, height/2);
}


http://upload.wikimedia.org/wikipedia/commons/6/6b/Processing_screen_shot.png

curadebt
July 10th, 2010, 09:16 AM
Your post is very impressive and informative. I have read it and agree with your views, ideas and opinions becasue it is the demand of the time. I am a web developer and working on a project of article directory, articleworlddb (http://www.articleworlddb.com) in these days. Therefore i am just putting short views here but after some days i shall go in details and provide complete information regarding the topic. Moreover i want to add some interesting things in my article directory as well.

absolutezero1287
September 18th, 2010, 08:37 PM
What? No haskell? Everything you need to learn about this fabulous purely-functional language can be found at the main site. (http://www.haskell.org/)

A great beginner's tutorial can be found here: learn you a haskell! (http://www.learnyouahaskell.com/)

wkhasintha
September 23rd, 2010, 07:22 AM
Very informative thread. learned a lot of new things. Much obliged sir. :D

wei2912
November 6th, 2010, 07:48 AM
There is another link for java tutorials:
http://www.java-made-easy.com/

Segolene
November 8th, 2010, 04:30 PM
Urbi

General tutorial on Urbi (video): http://www.urbiforge.org/index.php/Main/Tutorial

Documentation:
http://www.gostai.com/downloads/urbi-sdk/2.x/doc/urbi-sdk.htmldir/uobjects.html
http://www.gostai.com/downloads/urbi-sdk/2.x/doc/urbi-sdk.htmldir/urbiscript-user-manual.html

momrocker
January 1st, 2011, 06:31 AM
Just wanted to point out that for the C++ tutorials (http://ubuntuforums.org/showpost.php?p=1983565), the "Teach Yourself C++ in 21 Days" (http://newdata.box.sk/bx/c/htm/ch01.htm) tutorial is really outdated. The examples follow an older standard and wont compile in most compilers anymore. For example, the "hello world" program that the reader is supposed to compile:


#include <iostream.h>

int main()
{
cout<<"Hello World!\n";
return 0;
}has a few problems. In line 1, it should be <iostream> instead of <iostream.h>, line 5 should have std::cout or have a line before int main() reading "using namespace std;", and line 5 doesn't have a tab, while the return does (which is confusing). Overall, the explaining in the guide is good, but the examples are definitely not something that the reader should be dependent on.

EDIT: Also, in "Day 2", the writer claims that main returns void, which is not true; if it returned void, why would it have a return value of int in the examples, and why would you explicitly return 0 if the program is supposed to return void?

SilverTungsten
January 19th, 2011, 03:48 AM
I am a fairly well seasoned PhP developer. I recently ran into a situation on a project where I need to parse a web page that is entirely delivered using javascript. Does anyone know how to get javascript, that is intended to run in a browser, to execute within a shell command?

The server machine is a LAMP installation on Ubuntu 10.10 64bit desktop.

Thanks in advance

F.G.
January 21st, 2011, 03:42 PM
hi,
i'm trying to learn GROOVY at the moment. here's a link:

http://groovy.codehaus.org/

if anyone has any suggestions or knows of any resources I'd be very grateful to know them. google doesn't seem to turn up that much about it.
f.g.

nelsonhoover
February 1st, 2011, 07:41 PM
GAMBAS
Brings BASIC to Linux

Gambas is an object oriented programming language very similar to VB6. Most people who have programmed in Visual Basic should be able to learn it very quickly.
With Gambas, you can quickly design your program GUI with QT or GTK+, access MySQL, PostgreSQL, Firebird, ODBC and SQLite databases, pilot KDE applications with DCOP, translate your program into any language, create network applications easily, make 3D OpenGL applications, make CGI web applications, and so on...

More info here:
http://gambas.sourceforge.net/en/main.html

Documentation here:
http://gambasdoc.org/help/

A Beginners Guide here:
http://vectorlinux.osuosl.org/Uelsk8s/gambas-beginner-guide.pdf

An active forum to have your Gambas questions answered can be found here:
http://www.gambasforum.com/

ivotkl
February 25th, 2011, 11:26 AM
You can try Python from LiveCD, If you cannot, check Try Python (http://www.mired.org/home/mwm/try_python/) website - please be considerate and don't abuse it!

Hello. First of all thank you for giving us such valuable informatio. Second, I don`t know if I should reply to this thread without posting any new info about any programming. It is just to reply that this link http://www.mired.org/home/mwm/try_python/ is broken. It jumps to a non found page.

Thank you.

Guppey
April 11th, 2011, 11:55 PM
Turing
what is it?
turing is a very basic programming language, intended to be used to teach the beginnings of programming.

wikipedia article: http://en.wikipedia.org/wiki/Turing_%28programming_language%29
main page: http://www.holtsoft.com/
you will find a free book and IDE there, but it is a .exe file. it runs fine under WINE though.

axi.torvalds
April 30th, 2011, 04:22 PM
Programming is not dependent on the language programming is a concept!
You can learn these concepts with languages like C++, Python, Java.
C++ and Python are amazing I prefer C++, Java is also a very good language but it is a little bit slow but has much more built in functions from C++ and it does not contain non stranded libraries as C++. If you learn the concept of Object oriented programming how to use functions how to build a GUI and so the concept is nearly the same in the rest of all the programming languages with slight differences which you can Google easily the syntax.

farproc
May 8th, 2011, 08:49 AM
This thread (or a new sticky) should mention:

developer.ubuntu.com (http://developer.ubuntu.com) as a good starting point for a variety of languages.
www.stackoverflow.com (http://stackoverflow.com/questions/tagged/ubuntu) as a fantastic site for programming Q&A.

BenB1
November 29th, 2011, 02:53 PM
Common Lisp

Why:
http://wiki.alu.org/The_Road_to_Lisp_Survey

How:

http://www.gigamonkeys.com/book/
http://www.lispworks.com/documentation/common-lisp.html
http://sbcl.sourceforge.net/ (manual: http://www.sbcl.org/manual/ ) (front-end: http://common-lisp.net/project/slime/ )



(message "Thank you for pointing the way. Started learning a bit of Lisp a while back, sidetracked. As often the case in Linux / Unix seas of documentation exist. Like CLISP here, Gnu variety, of course elisp as well.")

toscal
February 10th, 2012, 07:32 PM
Don't forget TCL. Things written in TCL will quite often work on other platforms with little or no mods.
TCL Developer site (http://www.tcl.tk/)
Visual TCL (http://vtcl.sourceforge.net/?x=about) (think Visual Basic like IDE).

coffeecat
May 22nd, 2013, 05:16 PM
Test bump

Leuchten
May 24th, 2013, 04:01 AM
I'd like to do one for each of the three most-popular jvm languages, but since I know Scala best I'll stick to that for now:

http://i.imgur.com/gSslZOx.png

Scala is a strong, statically-typed imperative/object oriented/functional language for the JVM. It was originally created by Martin Odersky, one of the creators of java's generics, as an experiment in fusing the object-oriented and functional programming paradigms. It has recently left the academic sphere and is now in use by the likes of Twitter, Foursquare, Sony, and others (http://www.scala-lang.org/node/1658).

Why use Scala?


Scala is fast! - Scala is on par with java in most benchmarks (http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=scala&lang2=java&data=u64q)

Scala has type inferencing - Scala is more strongly typed than Java, but its type inferencing means you only need to manually write types a fraction of the time.
Scala is expressive - type classes, macros, for comprehensions, pattern matching, mixins and more
Scala easily interfaces with java libraries - nearly all java libraries work in scala without any effort.
Scala can be run on Android and other JVMs - Dalvik, OpenJDK, Oracle's JVM, and others can all run scala bytecode since scala compiles to standard jvm bytecode.


What are the downsides to Scala?

Scala bytecode compatibility is brittle - Compared to Java, Scala bytecode is brittle. If you are using scala 2.10, you will have to use libraries compiled with scala 2.10. Right now brittleness only shows on major version changes (2.x changes).
Scala is complex - Scala has many many many many features. So many in fact that I still learn new ones on a regular basis after using Scala for 2 years.
Scala is as slow as C++ to compile - This is being worked on, and there are ways to work around the slow build times, but Scala takes around 2-3x as long to compile as Java.


How can I get Scala?


You can download Scala by itself here: http://www.scala-lang.org/downloads
You can also get Scala by getting SBT and starting a new project.
You can try Scala interactively here: http://www.simplyscala.com/ (this site has an old version of scala)


What IDEs are available?

Intellij IDEA w/ Scala Plugin (http://www.jetbrains.com/idea/features/scala.html)
ScalaIDE (http://scala-ide.org/)


Build Systems?

SBT (http://www.scala-sbt.org/release/docs/Getting-Started/Setup.html)
Maven w/ Scala Plugin (https://github.com/davidB/scala-maven-plugin)


Where to start?

Scala Coursera Course (https://www.coursera.org/course/progfun)
Scala by Example Book (http://www.amazon.com/Programming-Scala-Comprehensive-Step-Step/dp/0981531644)
Typesafe Activator (http://typesafe.com/platform/getstarted)


Example Code:

A quick hello world example in Scala:



object Main extends App {
println("hello world!!")
}


Classes compared to java:


//Scala

class Dog(name: String, legs: Int) { //Constructor
var homeAddress = "7 villa condorcet"
private var _age = 0

def run = println("the dog ran")

def age = _age //getter
def age_=(years: Int) { _age = years } //setter
}

//Java

class Dog {

public String homeAddress = "7 villa condorcet";
private int age = 0;
final public String name;
final public int legs;

public Dog(String name, int legs) {
this.name = name;
this.legs = legs;
}

void run() {
System.out.println("the dog ran");
}

int getAge() {
return age;
}

void setAge(int years) {
age = years;
}
}


A memoized fibonacci example:


object Memo extends App {

def memoize[A,B](fn: A => B) = {
val dict = new HashMap[A,B]
((x: A) => (dict get x) getOrElse {
val res = fn(x)
dict(x) = res
res
})
}

val fib: BigInt => BigInt = memoize ( _ match { case n if n < 2 => n; case n => fib(n-1) + fib(n-2) } )

fib(1000) // 43466557686937456435688527675040625802564660517371 78040248172908953655541794905189040387984007925516 92959225930803226347752096896232398733224711616429 96440906533187938298969649928516003704476137795166 849228875
}


Bonus - Scala Job Listings: http://www.scalajobz.com/