10 Programming Languages You Should Learn

  • (5 Pages)
  • +
  • « First
  • 3
  • 4
  • 5

66 Replies - 8733 Views - Last Post: 26 March 2014 - 02:25 AM

#61 bigmatt267  Icon User is offline

  • D.I.C Head
  • member icon

Reputation: -1
  • View blog
  • Posts: 55
  • Joined: 02-December 09

Re: 10 Programming Languages You Should Learn

Posted 19 March 2014 - 11:36 AM

I really think it depends of what field you are pursuing (as a prospect).
I like the article top 10, but SQL, PHP, CSS, and javascript should be up top behind Java.
Was This Post Helpful? 0
  • +
  • -

#62 Skydiver  Icon User is offline

  • Code herder
  • member icon

Reputation: 3662
  • View blog
  • Posts: 11,466
  • Joined: 05-May 12

Re: 10 Programming Languages You Should Learn

Posted 19 March 2014 - 05:12 PM

View Postishkabible, on 19 March 2014 - 02:15 PM, said:

If your idea of a "true" quick sort is that it is in place then you cannot write such a thing in haskell.

From the conclusion of Hoare's paper describing Quicksort:

Quote

The data is sorted in situ, ...


Great points about having to learn the nuances of the language! If I could upvote more than once, I would!
Was This Post Helpful? 1
  • +
  • -

#63 modi123_1  Icon User is online

  • Suitor #2
  • member icon



Reputation: 9570
  • View blog
  • Posts: 36,242
  • Joined: 12-June 08

Re: 10 Programming Languages You Should Learn

Posted 19 March 2014 - 05:19 PM

Now wait a minute - I thought the benefit was it was natural and more akin to how folks think.. not something I need to go traipse off and learned some nuanced tidbits.

Posted Image
Was This Post Helpful? 1
  • +
  • -

#64 ishkabible  Icon User is offline

  • spelling expret
  • member icon




Reputation: 1623
  • View blog
  • Posts: 5,710
  • Joined: 03-August 09

Re: 10 Programming Languages You Should Learn

Posted 19 March 2014 - 05:58 PM

Quote

Now wait a minute - I thought the benefit was it was natural and more akin to how folks think.. not something I need to go traipse off and learned some nuanced tidbits.


Eh well ya, it isn't perfect as I have said; I think that it is more natural in many cases (and I think the quicksort mentioned shows that) but knowing why it is also efficient can be very nuanced and often beyond me even though I've been using haskell for a couple years. I've learned a few general rules that make knowing weather something is efficient or not pretty easy. Knowing why things are inefficient in haskell is just as strange. Efficiency tuning is a subject for magical wizards in haskell if you ask me; I've only picked up a small bit of their craft. This is a downside to haskell IMO and if it interferes too much with your application (which I think is unlikely) you should consider using a different language. I don't think I would write a performance critical bit of software like CBLAS in haskell personally; the nuances you mention would creep up on me I fear.

general rules:

1) linear running time list functions layered on top of each other don't really cost much of anything as they tend to get fused, mangled in laziness, or optimized away in some fashion. so if you apply two filters and an append to a list it ends up being like you did one very tight single loop though it. While not always true you can pretty safely stack away linear operations assuming that they will be fine and then later fix the efficiency if it is an issue.

2) Allocation cost very little in haskell and you shouldn't worry too much about it. It also tends to get magically optimized away. An odd topic that I have only started to get my hand around is space leaks in lazy programs. Basically you can sometimes have a space leak sneak up on you because you built up a thunk WAY to big thinking it would be evaluated and it wouldn't be an issue. Haskell provides a means by which to take over its evaluation order to solve this. if you get a space leak switch to foldl' or foldr' where it makes sense and strictly evaluate offending accumulators.

3) A bit of a combination of the above two and "premature optimization is root of all evil": program like you don't care how only the code takes to run and let the magical compiler do the rest.

4) attempt as much as possible to use the library implementation of things sense they had experts figure these things out for you. Your code will be more efficient, smaller, cleaner, and not have all these gotchas. I recommend the same thing with STL in C++.

Some reasons to not use haskell:
*occasionally complex space and time complexity. This can get you and knowing how to fix it can be non-trivial. Very seldom an issue however
*You are doing something that id fundamentally array heavy like CBLAS. Use a procedural language instead then that most closely fits your other needs.
*You are doing something low level. use assembly, C, or C++
*As it stands I don't think there are very many good GUI libs so if you are doing GUI you might consider something else. I like .NET personally
*There does not exist a library in haskell that does or is a major part of what you wanted to do. This is frequently an issue for me so I choose a different language.

Some reasons to use haskell:
*Your application is tree heavy. Haskell handles trees REALLY well but dosn't handles arrays very well. It is a tradeoff.
*It is often more natural and easier to do many things in haskell
*Because of Hackage there is a wealth of libraries easily available so it is very likely that haskell *does* have the library you want or need
*You are writing a complex input output tool. I think haskell shines at this. Webserver, IRC bot, *nix file tool, etc.. things like you would use python or perl for but bigger than a little script for your personal use.

This post has been edited by ishkabible: 19 March 2014 - 06:13 PM

Was This Post Helpful? 0
  • +
  • -

#65 garymoody2014  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 4
  • Joined: 06-March 14

Re: 10 Programming Languages You Should Learn

Posted 19 March 2014 - 11:45 PM

View Postbaavgai, on 16 March 2014 - 09:18 AM, said:

@mostyfriedman: I'd thought Scala and a LISP as well.

I'll looking at this list again. Languages proficiency is rather nuanced. There's knowing a language structure and intent and then there's knowing all the framework element needed to get things cooking.

To criticize the list:

Java - this is a standard. The language itself is consistent, though the OO can be forced at times. It's handing of primitives can be wonky. The current emphasis on interfaces is good.

C - The foundational, procedural, language from which all curlies descend. This is a profoundly simple language and not OO, which is what makes it a valuable thing to learn. It also forces the programmer to consider the impact of their design in terms of resources, a consideration most languages do not burden the programmer with.

C++ - No. Simply, C++ is a giant mess of competing ideologies, where not one of them is particularly well done. This will not teach you any particularly paradigm well. It does not encompass C, as being a proficient C++ programmer generally means you're a horrid C programmer. ( To be fair, the reverse is also often true. )

C# - For .NET, yes. For design elements; this is basically Java with extra stuff. There is extra, extra stuff in C# (lambdas, etc) but without another language inspire you, you need never open that toy box.

Objective-C - This mess only has relevance in its domain. No programmer outside the Apple walled garden wants to touch this thing. Nuff said.

PHP - In an organic rise to power, this childish, kitchen sink, poorly thought out language became a standard. It won't teach you anything good, but a decent programmer should be able to pick it up with little pain, so it may be ignored.

Python - This is the gateway drug to both duck typing and, to some extent, functional programming. A fun, practical language that exists on many platforms, this one is unique enough to itself to be worth knowing. Don't let the white space thing scare you.

Ruby - Similar to Python in many respects, Ruby just never did get enough respect. It has become forever linked with the Rails behemoth and rises and falls as it does. It's a neat language in it's own right, but not enough to make room for it in a top 10 list.

Javascript - This is number 1, really. The simple, ubiquitous, browser embedded beast, Javascript is actually a subtle and powerful language. The better you understand this prototype based oddity, the better prepared you are for many modern technologies.

SQL - Distributed data stores are the foundation of modern computer systems. If it's an RDBMS, it supports SQL. This is a simple, declarative language based on relational algebra. Programmers often avoid learning this, preferring the comfortable client side language they're using. The best clients make the database server do the work and knowing this language is a must.


Thanks for helpful information....that is more learning about programming language
Was This Post Helpful? 0
  • +
  • -

#66 toasterburn  Icon User is offline

  • New D.I.C Head

Reputation: 4
  • View blog
  • Posts: 34
  • Joined: 08-March 10

Re: 10 Programming Languages You Should Learn

Posted 20 March 2014 - 08:43 AM

I've only been programming for a few years now, so I'm sure people with more experience will have a different viewpoint, but if a friend came up to me and said they wanted to start programming then I'd recommend these. Then they could reasonably sit down and start most entry-level projects. Learning these first has worked out for me at least. And I'd say start with the first two on the list, since I had a hard time starting with C, but things starting clicking when I learned Python and Perl.

1. Perl
2. Python
3. HTML (I know, not a programming language. Still very useful to know.)
4. Javascript
5. PHP
6. C
7. Java
8. SQL
9. Learn to do GUIs in any language
10. Spend more time on above before learning new language
Was This Post Helpful? 0
  • +
  • -

#67 peace_fixation  Icon User is offline

  • D.I.C Head

Reputation: 46
  • View blog
  • Posts: 198
  • Joined: 01-November 11

Re: 10 Programming Languages You Should Learn

Posted 26 March 2014 - 02:25 AM

I recommend Python and Javascript to noobs 'cause the barrier for entry is so low, you can get moving quickly, have a play around, make some funky little things, have a crack at a UI, or a database, or whatever all without getting anywhere near a compiler or having to set up all kinds of dev tools.

I learned C and Java at uni, and for a CS student I think they are quite ideal. C teaches you good low level things, and Java teaches you good high level things.

I'm yet to spend much time with a functional language but it's next on my todo list, right after I finish this JPA book. >.>
Was This Post Helpful? 0
  • +
  • -

  • (5 Pages)
  • +
  • « First
  • 3
  • 4
  • 5