Beginner Programming
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me

The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.

Go Back   Dev Shed ForumsOtherBeginner Programming

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
  #1  
Old March 13th, 2005, 02:11 PM
Schol-R-LEA's Avatar
Schol-R-LEA Schol-R-LEA is offline
Commie Mutant Traitor
Dev Shed Intermediate (1500 - 1999 posts)
 
Join Date: Jun 2004
Location: Norcross, GA (again)
Posts: 1,759 Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level) 
Time spent in forums: 1 Month 2 Weeks 2 Days 3 h 38 m 3 sec
Reputation Power: 1568
A Highly Opinionated Review of Programming Languages for the Novice

The question of 'which languages to start with' comes up frequently. Some while back I posted an extensive review of the most commonly recommended languages, and advice on which languages to choose. While I did not make any pretense towards objectivity, I did try to be even handed as possible when skewering different languages' foibles. I thought it might be useful to repost it for the newer readers.

HTML (HyperText Markup Language) : The page-layout language that 99% of the web is written in. It is not a programming language per se, but it has a structure that is quite similar to many programming languages.
Pro: It is ubiquitous, and knowing it will be a usefuly skill even if you never do any programming. Also, it is much simpler in most ways that a full programming language.
Con: Limited to page layout. Fairly verbose. Requires additional languages for stylesheets and scripting to be most effective.

XML (Extensible Markup Language): a meta-language for defining markup languages; the newer versions of HTML are defined in XML. Used for creating custom markup types.
Pro: Can be used to create application-specific document languages that are more useful for specific tasks than HTML.
Con: Can lead to confusion of meta-levels.

CSS (Cascading Style Sheets): A language for defining how to present the documents structured with markup languages such as HTML.
Pro: An important complement to HTML and similar markup languages; allows the separation of document presentation from document description.
Con: Is only useful in conjunction with a markup language.

Visual Basic: A language created by Microsoft, derived (at several removes) from the older GWBASIC. Support object-oriented programming, but has a peculiar object model that is at variance from those used in the rest of the programing world. Visual Basic.NET is a very different language from the earlier versions. Has a very powerful built-in graphical development tools suite.
Pro: Has excellent support, and used widely in Windows programming. Syntax is (or seems) relatively easy for a beginner to learn.
Con: Windows specific; only provided by Microsoft. The language itself is a moving target, as the developers alter it to suit their latest vision of what it should be. The 'simple' syntax and RAD tools hide an abyss of complexity that can make non-trivial tasks a nightmare (though VB.NET has fixed much of this). Use of the RAD tools tends to discourage careful design.

C: A popular systems language, and also widely used for applications programming.
Pro: Simple, flexible, and blazingly fast. Extremely concise syntax that is widely imitated in many other languages. Excellent for systems programming.
Con: Low level, with relatively weak abstraction. Somewhat cryptic syntax can be hard to grasp at first. Requires extremely careful attention to detail, especially regarding pointers and manual memory management. Cannot generally be used for web programming (except for creating Active X controls). Lends itself to very difficult-to-understand code.

C++: a derivative of C, it adds facilities for object-oriented programming and generics (templates), and expands the standard library considerably.
Pro: Largely (~95%) backward-compatible with C. Capable of powerful abstraction. Ubiquitous. Nearly as fast as straight C.
Con: Vastly more complex than C, and very hard to learn as a first language (though some would argue this is a good thing, as it would make other languages seem easier by comparison). Like C, cannot be used for general web scripting or applets. Even more likely to result in incomprehensible code than C.

Java: An object-oriented language related too, but not compatible with, C and C++. Considerably simpler (and arguably, more elegant) than C++, while providing a comparable level of abstraction. Usually compiled to an interpreted bytecode, though it can be compiled to native code reasonably efficiently. Is designed to work over networks transparently, and can be used to write web applets. It has additional safety checking, and uses garbage collection for memory management.
Pro: Fairly abstract, and reasonably easy to learn. More secure than C++. Avoids certain types of memory and pointer bugs. Excellent for web programming, if rather heavyweight.
Con: Slower than C or C++ even when compiled to native code. Cannot access memory directly via pointers. Language is still evolving at the whim of the Sun developers, making it something of a moving target.

C#: a C-like language developed by Microsoft as part of the .NET framework. It can be described as Java modified to use the Visual Basic.NET object model.
Pro: Very similar to Java.
Con: ... except when you expect it to be. Only supported by Microsoft.

Javascript: An OOP scripting language specifically designed for web scripting, with a C-like syntax. Despite the name, it has no particular connection to Java. Usually part of a browser, or a browser plug-in; some standalone interpreters exist, but are rarely used. Has excellent support for Document Object Model.
Pro: Excellent for light web scripts, both client side and server side (in Active Server Pages). Supported by the majority of web browsers.
Con: Of limited use outside of web programming. Scales very poorly. Very slow.

VBScript: A scripting language similar to Javascript, except that it uses the Visual Basic syntax.
Pro: Fits the same niches as Javascript.
Con: Much less widely supported than Javascript.

PHP: A language designed specifically for server-side web programming. I must confess that I do not know enough about it to comment on it.

Perl: A powerful scripting tool combining many of the qualities of C, Lisp, and Awk. Has powerful text manipulation and regular expression tools. Supports OOP, with interesting but very peculiar object model.
Pro: Ubiquitous. Very well documented and supported. Extremely good for text manipulation. Has what is probably the largest online code repository of any programming language (CPAN), making it possible to do much development using existing libaries. In expert hands, can be incredibly concise and expressive.
Con: Slow. Extremely complex syntax with countless special cases. Code can become utterly incomprehensible schockingly fast, even compared to C++.

Python: A cleanly designed scripting language with support for OOP and functional programming. Uses indentation as part of the syntax.
Pro: Very easy to learn - can be learned in a day even by a novice. Encourages understandable code. Supports some sophisticated abstractions such as list comprehensions, Continuation Passing Style, and generators.
Con: Use of significant whitespace (indentation) is a source of serious problems, even with editor support. Very slow. Not as widely supported as Perl.

Ruby: A cleanly designed OOP scripting language, very similar in some ways to Python. Again, I don't really know enough to comment.

Scheme: A language in the Lisp family, with a radically different syntax from most other languages. Very simple and minimalist in structure. Has a very high level of abstraction, and supports constructs that are unheard of in most languages. Primarily designed for functional programming, but can support OOP with added libraries.
Pro: Extremely easy to learn - the basics can be grasped in less than a day. Has some excellent tutorial material. Extremely flexible and extensible. Excellent for exploratory programming and highly dynamic data structures. Is widely used for programing research. Has one of the most highly optimizing compilers ever designed (Stalin). Has several extensive libraries. Core language is very carefully specified. Gives some amazing insights into programming as a whole.
Con: Rarely used outside of academia. Radically different from most other languages, which can make it confusing. Tends to have very heavy memory requirements, and can be very slow without extensive optimization. Standard library is very small. Minimal core language has lead to incompatible extensions in the interpreters, compilers and libraries, fragmenting the user base.

Smalltalk: One of the parent languages of object oriented programing (though Simula and Actors were earlier). Very simple infix syntax. Very closely tied to it's language environment.
Pro: Extremely easy to learn - the basics can be grasped in less than a day. Has some excellent tutorial material. Extremely flexible and extensible. Excellent for exploratory programming and highly dynamic data structures. Is widely used for programing research. Has extensive built-in class libraries, and excellent class browsing and editing tools. Gives some amazing insights into OOP.
Con: Rarely used in general. Radically different from most other languages, which can make it confusing. Tends to have very heavy memory requirements, and can be very slow without extensive optimization. Tight coupling to the environment means it cannot be used for standalone programs.
Comments on this post
SimonGreenhill agrees: informative
gt3_dk agrees: Excellent info.. I wish I had that when I was a n00b
Viper_SB agrees!
nnxion agrees: very nice indeed
Dictionary agrees: Nicely done!
cody_e agrees: great!
fubes2000 agrees!
gimp agrees: random rep
Arty Ziff disagrees: No reason at all.
Iron_Cross agrees: Good post. I think this could really help some people.
Axweildr agrees: Just saw this, Niiice
__________________
Rev First Speaker Schol-R-LEA;2 JAM LCF ELF KoR KCO BiWM TGIF
#define KINSEY (rand() % 7) λ Scheme is the Red Pill
Scheme in ShortUnderstanding the C/C++ Preprocessor
Taming PythonA Highly Opinionated Review of Programming Languages for the Novice, v1.1

FOR SALE: One ShapeSystem 2300 CMD, extensively modified for human use. Includes s/w for anthro, transgender, sex-appeal enhance, & Gillian Anderson and Jason D. Poit clone forms. Some wear. $4500 obo. tverres@et.ins.gov

Last edited by Schol-R-LEA : March 13th, 2005 at 02:18 PM.

Reply With Quote
  #2  
Old March 13th, 2005, 02:15 PM
Schol-R-LEA's Avatar
Schol-R-LEA Schol-R-LEA is offline
Commie Mutant Traitor
Dev Shed Intermediate (1500 - 1999 posts)
 
Join Date: Jun 2004
Location: Norcross, GA (again)
Posts: 1,759 Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level) 
Time spent in forums: 1 Month 2 Weeks 2 Days 3 h 38 m 3 sec
Reputation Power: 1568
Before you learn any programming at all, learn how to use the system you are on correctly, whether it is Windows, Unix/Linux, MacOS, or whatever. If you can't work in your user environment, you won't be able to do the basic tasks needed for programming. Also, hone your research skills, especially those involved in web searches and library crawling (yes, libraries are a good resource, especially university libraries). Get into the habit of lurking on message boards, reading the FAQs, and learn how to post on them without making a fool of yourself.

I would recommend reading How to Ask Questions the Smart Way before posting anything anywhere; in fact, you may want to read several of ESR's historical and cultural FAQs, though be aware that he is very biased towards Linux and open-source, and pretty heavy-handed in general. I would further recommend reading through the Jargon File repeatedly, until it starts to make sense. If this doesn't happen right away, don't worry; it will start to as you actually begin programming, or if it doesn't well, then you might want to try something else instead.

You should also learn how to use a version control program such as CVS. No matter what kind of programming you do, you'll probably need it, or something like it.

Which to learn:
I recommend starting with HTML. Even if you aren't intending to do web development, it is a useful thing to know, and is simpler than a full programming language to start off with.

The next place to go depends on your goals:

If you intend to learn web programming, start by putting extra effort into learning HTML in detail. HTML is the framework on which all web programming is built on, and understanding it is crucial. The next step I would recommend would be to learn some simple Javascript client side programming; this can be done locally, and thus does not require a full web server. After this, I would learn some server side Javascript, and perhaps PHP as well. After this, learn about XML, so you can use specialty document languages. If you mean to use CGI scripting, you should then learn either Perl or Python; if you mean to write applets, then you should learn Java instead. For professional web design, you will probably need to learn about development frameworks such as Zope or Websphere, and possibly Enterprise Java Beans as well.

For general applications programming, I would recommend starting with either Python or Ruby, as they are both easy to learn, and are interpreted languages, which makes it easier to try out different things without writing a full program. If you want to learn Windows programming specifically, I would then go to Visual Basic, followed by C#. Otherwise, I would recommend C, then Perl, then either C++ or Java.

If you want to understand programming on a deep level, or intend to go into an academic career, I would start with Scheme, then learn Smalltalk, then an assembly language, then pick up as for applications programming.

For systems programming, follow the same approach as for applications programming, but drop Perl in favor of x86 assembly language.

For Unix or Linux system administration, learn Bourne-Again shell scripting, the Perl, then C.

For Windows system administration, learn Visual Basic for Scripting (not the same as VBScript) and DOS batch programming, then Visual Basic.

For database programming or administration, learn Oracle and PL/SQL, or SQL Server and Visual Basic. Don't worry about the other languages, you probably won't need them, though Java may be useful eventually.

For scientific programming, learn Python, then (for physics or inorganic chemistry) Fortran 90 or (for biology or organic chemistry) Perl, then C. You may eventually need to learn Common Lisp or Ada, but they aren't priorities.

Reply With Quote
  #3  
Old March 13th, 2005, 05:47 PM
DevCoach DevCoach is offline
Contributing User
Dev Shed Intermediate (1500 - 1999 posts)
 
Join Date: Feb 2004
Location: London, England
Posts: 1,585 DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level) 
Time spent in forums: 2 Weeks 4 Days 2 h 58 m 23 sec
Reputation Power: 1372
On the whole a very concise and well thought out description of the various programming languages.

There are points that I would disagree with however, particularly regarding the relative speed of the languages. I would say that on the whole, Perl, Python and Java are of comparable speeds, but it does depend very much on what you are doing. For example, Perl is highly optimised for file I/O and regex, to the point that reading a file in Perl can be faster than the standard C library on some systems. A program to read a file, do some regex processing and write it out is likely to be significantly faster in Perl (and probably Python) than in Java.

Python also has a JIT compiler (Psyco) and a Python-to-C translator (Pyrex), both of which can make significant speed improvements. The fact that Python is widely used in scientific computing, including controlling large-scale physical simulations, and for the graphics rendering pipline for computer animated movies (at Industrial Light and Magic) would suggest that it is not 'very slow'. Also I have been programming in Python for many years and have never found the whitespace to be 'a source of serious problems'.

You also state that Scheme has one of the most highly optimised compilers ever designed, but then you go on to describe the language as 'very slow'.

It should also be noted that Java and C# have very large memory footprints compared with Perl, Python and Ruby.

For example, here are some benchmarks taken from The Great Computer Language Shootout. This particular benchmark is for a program to read a text file and write out the number of occurences of each word.

Code:

                 run time      mem    Lines of Code

Java               3.20s        15 Mb        40
C# Mono            4.86s        10 Mb        52
Perl               1.03s        1.9 Mb       11
Python             1.39s        2.4 Mb       24
Python+Psyco       0.92s        3.2 Mb       25


As you can see, in this particular case Java takes twice as many lines of code to create a program that is 3 times slower and uses 5 times as much memory as the equivalent Perl or Python program. Of course the results are going to vary depending on the programming task and the particular implementation of the language and operating system, but these results are not unusual.

Another interesting empirical language comparison is here.
The abstract says:
Quote:
80 implementations of the same set of requirements, created by 74 different programmers in various
languages, are compared for several properties, such as run time, memory consumption, source
text length, comment density, program structure, reliability, and the amount of effort required for
writing them. The results indicate that, for the given programming problem, “scripting languages”
(Perl, Python, Rexx, Tcl) are more productive than conventional languages. In terms of run time
and memory consumption, they often turn out better than Java and not much worse than C or C++.
In general, the differences between languages tend to be smaller than the typical differences due to
different programmers within the same language.


[edit] I should add that the study was done in 1998 so all the languages have moved on since then, but I think the conclusions still stand - especially the last sentence.

Dave - The Developers' Coach
Comments on this post
gt3_dk agrees: Interesting info
pumpkin head agrees: good stuff, go perl!
Princess Saturn disagrees!
cody_e agrees!
ishnid agrees!
Marbelous agrees: Good points on JIT optimizations.

Last edited by DevCoach : March 13th, 2005 at 05:57 PM.

Reply With Quote
  #4  
Old March 13th, 2005, 05:56 PM
SimonGreenhill's Avatar
SimonGreenhill SimonGreenhill is offline
(retired)
Dev Shed God 11th Plane (10000 - 10499 posts)
 
Join Date: Dec 2003
Location: The Laboratory
Posts: 10,101 SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)SimonGreenhill User rank is General 6th Grade (Above 100000 Reputation Level)  Folding Points: 4925 Folding Title: Novice Folder
Time spent in forums: 3 Months 3 Weeks 6 h 8 m 34 sec
Reputation Power: 0
Facebook
mods: good choice for a forum sticky?

Reply With Quote
  #5  
Old March 13th, 2005, 06:01 PM
gt3_dk's Avatar
gt3_dk gt3_dk is offline
!Ruff Ryder!
Dev Shed Novice (500 - 999 posts)
 
Join Date: Jun 2004
Location: Québec, Canada... Represent!
Posts: 689 gt3_dk User rank is Corporal (100 - 500 Reputation Level)gt3_dk User rank is Corporal (100 - 500 Reputation Level)gt3_dk User rank is Corporal (100 - 500 Reputation Level)gt3_dk User rank is Corporal (100 - 500 Reputation Level) 
Time spent in forums: 3 Days 7 h 10 m 12 sec
Reputation Power: 11
Send a message via Yahoo to gt3_dk
Ya sticky this... Good job guys!
__________________
My b0x:
AMD XP Barton 2800+ @ Stock speed... (going up again soon in winter!!!)
2 x 512MB Kingston RAM for 1GB dual channel
1 x 120GB HDD (soon another ) ( <-- God I've been saying this for like a year )
SoundBlaster Audigy 2 ZS (0wN5!!!)
Logitech Z-5300 speakers (0wN5!!!)
ATI All-In-Wonder 9800 Pro (0wN5!!!)
Black ViewSonic A91f+@1280x1024@75Hz (0wN5!!!) (Well, too bad I can't go 1600x1200 above 60Hz )

If I helped you out please consider helping a poor college student get a free iPod for his long commute by signing up here with my referal link:
My Link
(I will pay you $10-$20 if you want to cover the cost of the offer for you. ***This ISNT a scam. I personally know a girl who recieved one a few months ago!***)

Reply With Quote
  #6  
Old March 14th, 2005, 05:13 AM
nnxion's Avatar
nnxion nnxion is offline
Last Day: May 29, 2005
Dev Shed Novice (500 - 999 posts)
 
Join Date: Sep 2004
Location: elemental sphere
Posts: 742 nnxion User rank is Lance Corporal (50 - 100 Reputation Level)nnxion User rank is Lance Corporal (50 - 100 Reputation Level)nnxion User rank is Lance Corporal (50 - 100 Reputation Level) 
Time spent in forums: 5 Days 7 h 20 m 20 sec
Reputation Power: 9
It all depends on what you (as programmer) want.
If it's speed you want then choose for a native language like pascal (Delphi), Ada, C, C++ or FORTRAN.
If you focus on GUI programming then choose Java or VB(.NET) or C#/Mono.
For web choose: Perl, PHP, ASP(.NET), in combination with HTML, CSS and Javascript.
And if you want fast programming then Python, ruby or the like.
Of course this is just my opinion.
You could see this as the following:
Quote:
Originally Posted by grumpy
TASK: Shoot yourself in the foot.

C: You shoot yourself in the foot.

C++: You accidentally create a dozen instances of yourself and shoot them all in the foot. Providing emergency medical assistance is impossible since you can't tell which are bitwise copies and which are just pointing at others and saying,"That's me, over there."

FORTRAN: You shoot yourself in each toe until you run out of toes, then you read in the next foot and repeat. If you run out of bullets, you continue with the attempts to shoot yourself anyway because you have no exception-handling capability.

Pascal: The compiler won't let you shoot yourself in the foot, no matter how much you need to.

Ada: After correctly packing your foot, you attempt to concurrently load the gun, pull the trigger, scream, and shoot yourself in the foot. When you try, however, you discover you can't because your foot is of the wrong type.

COBOL: Using a COLT 45 HANDGUN, AIM gun at LEG.FOOT, THEN place ARM.HAND.FINGER on HANDGUN.TRIGGER and SQUEEZE. THEN return HANDGUN to HOLSTER. CHECK whether shoelace needs to be re-tied.

LISP: You shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds...

FORTH: Foot in yourself shoot.

Prolog: You tell your program that you want to be shot in the foot. The program figures out how to do it, but the syntax doesn't permit it to explain it to you.

BASIC: Shoot yourself in the foot with a water pistol. On large systems, continue until entire lower body is waterlogged.

Visual Basic: You'll really only appear to have shot yourself in the foot, but you'll have had so much fun doing it that you won't care.

HyperTalk: Put the first bullet of gun into foot left of leg of you. Answer the result.

Motif: You spend days writing a UIL description of your foot, the bullet, its trajectory, and the intricate scrollwork onthe ivory handles of the gun. When you finally get around to pulling the trigger, the gun jams.

APL: You shoot yourself in the foot, then spend all day figuring out how to do it in fewer characters.

SNOBOL: If you succeed, shoot yourself in the left foot. If you fail, shoot yourself in the right foot.

Unix:% ls foot.c foot.h foot.o toe.c toe.o % rm * .o rm:.o no such file or directory % ls %

Concurrent Euclid: You shoot yourself in somebody else's foot.

370 JCL: You send your foot down to MIS and include a 400-page document explaining exactly how you want it to be shot. Three years later, your foot comes back deep-fried.

Paradox: Not only can you shoot yourself in the foot, your users can, too.

Access: You try to point the gun at your foot, but it shoots holes in all your Borland distribution diskettes instead.

Revelation: You're sure you're going to be able to shoot yourself in the foot, just as soon as you figure out what all these nifty little bullet-thingies are for.

Assembler: You try to shoot yourself in the foot, only to discover you must first invent the gun, the bullet, the trigger, and your foot.

Modula2: After realizing that you can't actually accomplish anything in this language, you shoot yourself in the head.
Comments on this post
pumpkin head agrees: brilliant
Princess Saturn disagrees: that helped a lot more then the other explainations all together
prcAdap agrees: Thank you for making me smile
__________________
"Employ your time in improving yourself by other men's writings, so that you shall gain easily what others have labored hard for."
-- Socrates

Reply With Quote
  #7  
Old March 16th, 2005, 04:30 AM
computer's Avatar
computer computer is offline
echo $usertitle['computer'];
Dev Shed God 4th Plane (6500 - 6999 posts)
 
Join Date: Jan 2003
Location: UK
Posts: 6,705 computer User rank is Lieutenant Colonel (40000 - 50000 Reputation Level)computer User rank is Lieutenant Colonel (40000 - 50000 Reputation Level)computer User rank is Lieutenant Colonel (40000 - 50000 Reputation Level)computer User rank is Lieutenant Colonel (40000 - 50000 Reputation Level)computer User rank is Lieutenant Colonel (40000 - 50000 Reputation Level)computer User rank is Lieutenant Colonel (40000 - 50000 Reputation Level)computer User rank is Lieutenant Colonel (40000 - 50000 Reputation Level)computer User rank is Lieutenant Colonel (40000 - 50000 Reputation Level)computer User rank is Lieutenant Colonel (40000 - 50000 Reputation Level)computer User rank is Lieutenant Colonel (40000 - 50000 Reputation Level)computer User rank is Lieutenant Colonel (40000 - 50000 Reputation Level) 
Time spent in forums: 4 Weeks 18 h 36 m 39 sec
Reputation Power: 419
Send a message via ICQ to computer
This is good. Topic stickied.

Reply With Quote
  #8  
Old March 16th, 2005, 07:14 PM
Scorpions4ever's Avatar
Scorpions4ever Scorpions4ever is offline
Banned ;)
Dev Shed God 9th Plane (9000 - 9499 posts)
 
Join Date: Nov 2001
Location: Woodland Hills, Los Angeles County, California, USA
Posts: 9,387 Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level)Scorpions4ever User rank is General 46th Grade (Above 100000 Reputation Level) 
Time spent in forums: 1 Month 4 Weeks 1 Day 21 h 39 m 3 sec
Reputation Power: 4080
Quote:
Originally Posted by DevCoach
For example, here are some benchmarks taken from The Great Computer Language Shootout. This particular benchmark is for a program to read a text file and write out the number of occurences of each word.

Code:

                 run time      mem    Lines of Code

Java               3.20s        15 Mb        40
C# Mono            4.86s        10 Mb        52
Perl               1.03s        1.9 Mb       11
Python             1.39s        2.4 Mb       24
Python+Psyco       0.92s        3.2 Mb       25


Note that the Devshed crew managed to cut down the perl implementation of this code down to 1 line .
http://forums.devshed.com/t163553/s.html
Matter of fact, it was Devcoach that suggested that challenge in the first place .
__________________
Up the Irons
What Would Jimi Do? Smash amps. Burn guitar. Take the groupies home.
"Death Before Dishonour, my Friends!!" - Bruce D ickinson, Iron Maiden Aug 20, 2005 @ OzzFest
Down with Sharon Osbourne

Reply With Quote
  #9  
Old March 17th, 2005, 04:07 AM
Schol-R-LEA's Avatar
Schol-R-LEA Schol-R-LEA is offline
Commie Mutant Traitor
Dev Shed Intermediate (1500 - 1999 posts)
 
Join Date: Jun 2004
Location: Norcross, GA (again)
Posts: 1,759 Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level) 
Time spent in forums: 1 Month 2 Weeks 2 Days 3 h 38 m 3 sec
Reputation Power: 1568
You are quite right in pointing these things out, Dev Coach; indeed, after the dressing down you gave me the first time I posted this, I had meant to remove the speed related references, but I never got around to it and when I reposted this I had forgotten about it.

As for Scheme, the STALIN compiler is something of an exceptional case; it is an ongoing research project meant to push the state of the art in optimizing compilers, and specifically in global-level optimization. Scheme was selected because, while it does quite poorly with a naive compilation, its very high level of abstraction lends it to sophisticated optimizations such as lambda lifting which would be nearly impossible in most languages.

Production Scheme and Lisp compilers vary greatly in their degree of optimization; while many otherwise admirable products such as PLT Scheme can often be quite slow, an optimizing compiler such as Bigloo Scheme or Allegro Common Lisp can produce code that is on average competitive with C code. The price for this is in price and complexity of the compiler itself. STALIN, being the extreme case, can be two or even three orders of magnitude slower than a non-optimizing equivalent. Needless to say, one would only use it for the release version of a program; the actual development would use a more conventional interpreter/compiler set.

Last edited by Schol-R-LEA : March 17th, 2005 at 04:13 AM.

Reply With Quote
  #10  
Old March 17th, 2005, 02:40 PM
DevCoach DevCoach is offline
Contributing User
Dev Shed Intermediate (1500 - 1999 posts)
 
Join Date: Feb 2004
Location: London, England
Posts: 1,585 DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level)DevCoach User rank is General 6th Grade (Above 100000 Reputation Level) 
Time spent in forums: 2 Weeks 4 Days 2 h 58 m 23 sec
Reputation Power: 1372
Quote:
Originally Posted by Scorpions4ever
Note that the Devshed crew managed to cut down the perl implementation of this code down to 1 line .
http://forums.devshed.com/t163553/s.html
Matter of fact, it was Devcoach that suggested that challenge in the first place .


It was indeed. I did manage to get the python version down to 4 lines, but my favourite solution is still the one line shell script.

I note that according to the benchmarks that infamous41md posted in that thread that both the perl and python versions were faster than the C++ version. I am sure that a faster C++ version could be written, but it emphasises the point that the speed of the language counts for surprisingly little - the skill of the programmer and the quality of the algorithms used are far more significant.

Dave - the Developers' Coach

Reply With Quote
  #11  
Old March 26th, 2005, 03:17 PM
Princess Saturn Princess Saturn is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Mar 2005
Location: Somewhere over the rainbow mostly
Posts: 1 Princess Saturn User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 54 m 21 sec
Reputation Power: 0
Ok, So which of all these languages do you suggest as the most prominate used today online?

Reply With Quote
  #12  
Old April 12th, 2005, 02:54 AM
Schol-R-LEA's Avatar
Schol-R-LEA Schol-R-LEA is offline
Commie Mutant Traitor
Dev Shed Intermediate (1500 - 1999 posts)
 
Join Date: Jun 2004
Location: Norcross, GA (again)
Posts: 1,759 Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level) 
Time spent in forums: 1 Month 2 Weeks 2 Days 3 h 38 m 3 sec
Reputation Power: 1568
An HTML version of this message, slightly edited and rearranged and with some additional framing material, can be viewed here. Any comments and constructive criticism would be welcome.

Reply With Quote
  #13  
Old April 12th, 2005, 05:02 AM
Dictionary's Avatar
Dictionary Dictionary is offline
Registered User
Dev Shed Regular (2000 - 2499 posts)
 
Join Date: Nov 2004
Location: Ottawa, ON
Posts: 2,059 Dictionary User rank is Sergeant Major (2000 - 5000 Reputation Level)Dictionary User rank is Sergeant Major (2000 - 5000 Reputation Level)Dictionary User rank is Sergeant Major (2000 - 5000 Reputation Level)Dictionary User rank is Sergeant Major (2000 - 5000 Reputation Level)Dictionary User rank is Sergeant Major (2000 - 5000 Reputation Level)Dictionary User rank is Sergeant Major (2000 - 5000 Reputation Level) 
Time spent in forums: 2 Weeks 1 Day 10 h 50 m 52 sec
Reputation Power: 48
Some of you may have already read this. I started out with C++ and it was quite easy. Something wrong with what I might have done? (but then I already did HTML (not even programming?) and lotsa lotsa TI-83 programming)

I thought C++ was easy to understand (unless it's one of the obfucated code entries... 12 days of Christmas...)

Reply With Quote
  #14  
Old April 12th, 2005, 10:37 AM
Schol-R-LEA's Avatar
Schol-R-LEA Schol-R-LEA is offline
Commie Mutant Traitor
Dev Shed Intermediate (1500 - 1999 posts)
 
Join Date: Jun 2004
Location: Norcross, GA (again)
Posts: 1,759 Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level)Schol-R-LEA User rank is General 9th Grade (Above 100000 Reputation Level) 
Time spent in forums: 1 Month 2 Weeks 2 Days 3 h 38 m 3 sec
Reputation Power: 1568
Quote:
Originally Posted by pmam21
Some of you may have already read this. I started out with C++ and it was quite easy. Something wrong with what I might have done? (but then I already did HTML (not even programming?) and lotsa lotsa TI-83 programming)

I thought C++ was easy to understand (unless it's one of the obfucated code entries... 12 days of Christmas...)


I wouldn't say anything wrong... if anything, you did better than many do, which is a Good Thing. It's simply that, IME, most people will pick up Python or Scheme (or, from what I understand of it, Ruby) faster than C or C++, and that the structure of most algorithms are clearer in those languages. There's no reason to think that this will be the case for everyone, however.

I do think that all programmers should learn at least three different languages and at least two different programming models; if nothing else, it helps clarify which parts of programming are part of a given language, and which are aspects of programming in general. I also feel that all programmers would do better if they had some understanding of both the abstract aspects of programming (algorithmics, computability, relational calculus, etc.) and of the low-level details of at least one computer system (basic hardware, assembly language, systems programming). A broader perspective can improve one's programming, even in languages they are already familiar with.

Last edited by Schol-R-LEA : April 12th, 2005 at 10:45 AM.

Reply With Quote
  #15  
Old April 12th, 2005, 06:29 PM
Dictionary's Avatar
Dictionary Dictionary is offline
Registered User
Dev Shed Regular (2000 - 2499 posts)
 
Join Date: Nov 2004
Location: Ottawa, ON
Posts: 2,059 Dictionary User rank is Sergeant Major (2000 - 5000 Reputation Level)Dictionary User rank is Sergeant Major (2000 - 5000 Reputation Level)Dictionary User rank is Sergeant Major (2000 - 5000 Reputation Level)Dictionary User rank is Sergeant Major (2000 - 5000 Reputation Level)Dictionary User rank is Sergeant Major (2000 - 5000 Reputation Level)Dictionary User rank is Sergeant Major (2000 - 5000 Reputation Level) 
Time spent in forums: 2 Weeks 1 Day 10 h 50 m 52 sec
Reputation Power: 48
Quote:
Originally Posted by Schol-R-LEA
I wouldn't say anything wrong... if anything, you did better than many do, which is a Good Thing. It's simply that, IME, most people will pick up Python or Scheme (or, from what I understand of it, Ruby) faster than C or C++, and that the structure of most algorithms are clearer in those languages. There's no reason to think that this will be the case for everyone, however.

I do think that all programmers should learn at least three different languages and at least two different programming models; if nothing else, it helps clarify which parts of programming are part of a given language, and which are aspects of programming in general. I also feel that all programmers would do better if they had some understanding of both the abstract aspects of programming (algorithmics, computability, relational calculus, etc.) and of the low-level details of at least one computer system (basic hardware, assembly language, systems programming). A broader perspective can improve one's programming, even in languages they are already familiar with.

I am currently learning Java (some C++ still) and I'll probably start PHP or one of those widely web used server-sides...

Reply With Quote
Reply

Viewing: Dev Shed ForumsOtherBeginner Programming > A Highly Opinionated Review of Programming Languages for the Novice

Developer Shed Advertisers and Affiliates



Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


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

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 


Powered by: vBulletin Version 3.0.5
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.

© 2003-2013 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap