Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

TOP PROGRMAMING LANGUAGES FOR 2013* Heres the list *after 2 weeks of voting* and an influx of opinions from

Californian startup types (thank you, yCombinator). Python is the biggest mover. 1. HTML/CSS 7.6 2. Javascript 7.3 3. Ajax 7.2 4. Python 6.9 5. Java 6.7 6. C# 6.7 7. Ruby 6.2 8. .Net 6.0 9. C++ 5.4 10. C 5.1 So, I have presented a good amount of data, but I have not really said anything specific. All 9 languages should be watched in the next year as they all have some interesting level of activity in one area or another. Google searches, GitHub projects, StackOverflow questions and job trends are all flawed in some way. But if you look at them together, they present an interesting picture of what programming languages are really seeing activity or adoption. Without further ado, here is my ranking of what programming languages watch in the next year: 1. Lua The language is seeing some good activity on GitHub and StackOverflow. It has a solid Tiobe ranking, but more importantly, jobs for Lua are becoming available. The relative trend for Lua is a great indicator that it is ready to go mainstream. 2. R With data analysis and big data becoming a part of every web startup, languages catering to the data crowd will become popular. The job trend data will be the most interesting part to watch here. 3. Clojure While not popular within the Tiobe index, it is popular in some programming circles. In particular, its job trend growth is showing that it could be posed for a big year of adoption. 4. Go Only Tiobe really shows this as a popular language. It is not ranked well in the Dataist Tier, and job trends are not very reliable yet. However, with a parent of Google it may not need purely organic growth. 5. Erlang This has been around for a few years and has decent trends all around. With the continued growth of real-time technologies like XMPP (eJabberd specifically), PubSubHubbub and others, 2011 could be a year where it becomes the next Python. 6. Scala This is one of the interesting trends. Scala has a very good showing in the Dataist Tier, but is not really ranked in the Tiobe index. With the solid job growth trends and popular adopters (i.e. Twitter), Scala could gain a serious amount of acceptance. 7. Groovy More than anything, I believe Groovy missed its window of opportunity. It is a solid scripting language with decent job growth trends, but how can it differentiate itself from Ruby, Python, Erlang and Scala? 8. Scheme For whatever reason, this language refuses to go away and has even picked up some interest. Without decent job growth, we could be another year away from Scheme breaking out again, at least 30 years after it broke out the first time.

9. ActionScript ActionScript is included in this list because of its high ranking on Tiobe and the Dataist Tier. However, the job trends do not point to good things for the language. It could be a temporary slump, so you should keep an eye on it next year. 10. The compiler tools, gcc, gdb, etc. 11. Some sort of editor/IDE (emacs, vim, eclipse) 12. Profiling tools 13. Source Control (SubVersion, git, etc) 14. Language specific tools, like easy_install for python (you said C/C++, but the same goes for everything) 15. A web server maybe? Apache, Lighttpd, nginx 16. Any libraries you'll be using. Are you doing kernal hacking? Driver development? opengl? 17. 24 down vote accepted 18. Do not just passively read all that information, instead practice after every book chapter or lecture. Practice by writing those algorithms or regexpes for yourself, check your previous code in the light of what code complete has taught you and so on. practice reading code written by other programmers. A good option for that sort of thing is to pick an open-source project (one that you admire) and try to figure out how parts of it work. In my own personal experience, there are really three tiers of learning to program: 1. Reading about programming 2. Writing your own code from scratch 3. Reading code and being able to debug or add to it One might figure that #3 would come before #2, but in practice it doesn't. :) Every programmer I know has had the experience of reading code written by somebody else for the first time and going "yuck, why did they do things that way?" When you first get into programming, your own code will always be easier to understand than somebody else's. But part of the challenge of programming is that over time even your own code will lose its familiarity and maintaining your own software will be just as difficult as maintaining somebody else's. 1. If you read a book on Python that doesn't mean you know python, you also have to make lots of programs with Python. It is easy to learn Python syntax and then go writing C#/C++/Java in Python. It is much more difficult to write Python in Python. This includes things like instead of concatenating a string as str += newstr + "," joining an array of strings together ",".join(array). There are performance reasons for that. All this being said, I think this goal is somewhat realistic for 3 months. You won't be an expert but you will probably have more than enough to play in Python and also to get little jobs done (moving your files around, generating templates for a web page, etc.). 1. Code Complete - I read this book and it is not an easy read. The writing style is not dry like some academic texts. But the book is long and it has a lot. Not only that but if you read it more than once your understanding of the book will change. I think that with your goal of being a better programmer, this book is the best thing you can do. It may take the

whole 3 months for you to read once. It is worth it. This book is basically an in depth essay on how to prepare code and keep it more maintainable and an overview on the entire software development process. WARNING---You will be frustrated when you start a career and realize almost no one else has read this book :) You may not know all the uses for this book until later in your career. 2. "Introduction to Algorithms" is a good bible on algorithms, it is also pretty long and dry. Quite often an undergraduate first data structure and algorithms course is nowhere near the entire book. Most undergraduate data structure classes use other easier books and even then don't cover the whole book. Also most of the content will not help you to be a better programmer directly. Chances are you don't need to deal with Convex Hulls. Even the lectures you linked don't cover the entire book. But with the lectures it may be more digestible. Still this is probably overkill. I would say start with an easier book on Algorithms (follow the recommendations). Most likely you will only need the book as a cook book at most (and in the real world in most jobs you won't even need this as a cook book). If you want a PhD in computer science then sure learn everything in this book, but set it as a longer goal. Plus I'm not sure your mathematical background. But there is a strong emphasis on math at the beginning of the book. Just be careful here. I think there is a benefit. But there are many books that are easier reads to learn from. This book is best when you already know the basics and know what to look for. 3. "Mastering REgular Expressions" -- I would recommend http://perldoc.perl.org/perlretut.html instead. Depending upon your language of choice regular expressions can vary a lot. But many languages adopt all or at least a lot of Perl Style regular expressions. I don't know every single syntax of regular expressions or every little detail of them. There is a core that handles most jobs (capture groups, quantifiers, special characters, character classes, etc.) and greedy vs nongreedy. Also it is very easy to build up incomprehensible regular expressions which won't serve you or the next maintainer. I would also recommend http://www.regular-expressions.info/ as a reference. But in general the best way to learn regular expressions is to read the overview in Perlretut and then as you need to match text, to USE regular expressions. This will help you much more than any book. Python has slightly harder to use regular expressions than Perl but most of the syntax is the same, it just isn't built into the language. So go find web pages and practice using regular expressions to match certain text. Go to your favorite gaming site and use the expressions to extract game names, authors, and ratings or something else. It is fairly easy to view source on an html page and save it. Have fun.

4. 1: One of the Big Three (.NET, Java, PHP)


5. Unless there is a radical shift in the development world (akin to an asteroid hitting Redmond), most developers will need to know at least one of the Big Three development systems .NET (VB.NET or C#), Java, or PHP for the near future. Its not enough to know the core languages, either. As projects encompass more and more disparate functionality, youll need to know the associated frameworks and libraries more deeply.

6. 2: Rich Internet Applications (RIAs)


7. Love it or hate it, in the last few years, Flash is suddenly being used for more than just animations of politicians singing goofy songs. Flash has also sprouted additional functionality in the form or Flex and AIR. Flashs competitors, such as JavaFx and Silverlight, are also upping the ante on features and performance. To make things even

more complicated, HTML 5 is incorporating all sorts of RIA functionality, including database connectivity, and putting the formal W3C stamp on AJAX. In the near future, being an RIA pro will be a key resume differentiator.

8. 3: Web development
9. Web development is not going away anytime soon. Many developers have been content to lay back and ignore the Web or to just stick to the basics their framework provides them with. But companies have been demanding more and more who really know how to work with the underlying technology at a hand code level. So bone up on JavaScript, CSS, and HTML to succeed over the next five years.

10.

4: Web services

11. REST or SOAP? JSON or XML? While the choices and the answers depend on the project, its getting increasingly difficult to be a developer (even one not writing Web applications) without consuming or creating a Web service. Even areas that used to be ODBC, COM, or RPC domains are now being transitioned to Web services of some variety. Developers who cant work with Web services will find themselves relegated to legacy and maintenance roles.

12.

5: Soft skills

13. One trend that has been going for quite some time is the increasing visibility of IT within and outside the enterprise. Developers are being brought into more and more nondevelopment meetings and processes to provide feedback. For example, the CFO cant change the accounting rules without working with IT to update the systems. And an operations manager cant change a call center process without IT updating the CRM workflow. Likewise, customers often need to work directly with the development teams to make sure that their needs are met. Will every developer need to go to Toastmasters or study How to Win Friends and Influence People? No. But the developers who do will be much more valuable to their employers and highly sought after in the job market.

14. 6: One dynamic and/or functional programming language


15. Languages like Ruby, Python, F#, and Groovy still arent quite mainstream but the ideas in them are. For example, the LINQ system in Microsofts .NET is a direct descendent of functional programming techniques. Both Ruby and Python are becoming hot in some sectors, thanks to the Rails framework and Silverlight, respectively. Learning one of these languages wont just improve your resume, though; it will expand your horizons. Every top-flight developer Ive met recommends learning at least one dynamic or functional programming language to learn new ways of thinking, and from personal experience, I can tell you that it works.

16.

7: Agile methodologies

17. When Agile first hit mainstream awareness, I was a skeptic, along with many other folks I know. It seemed to be some sort of knee-jerk reaction to tradition, throwing away the controls and standards in favor of anarchy. But as time went on, the ideas behind Agile became both better defined and better expressed. Many shops are either adopting Agile or running proof-of-concept experiments with Agile. While Agile is not the ultimate panacea for project failure, it does indeed have a place on many projects. Developers with

a proven track record of understanding and succeeding in Agile environments will be in increasingly high demand over the next few years.

18.

8: Domain knowledge

19. Hand-in-hand with Agile methodologies, development teams are increasingly being viewed as partners in the definition of projects. This means that developers who understand the problem domain are able to contribute to the project in a highly visible, valuable way. With Agile, a developer who can say, From here, we can also add this functionality fairly easily, and it will get us a lot of value, or Gee, that requirement really doesnt match the usage patterns our logs show will excel. As much as many developers resist the idea of having to know anything about the problem domain at all, it is undeniable that increasing numbers of organizations prefer (if not require) developers to at least understand the basics.

20.

9: Development hygiene

21. A few years ago, many (if not most) shops did not have access to bug tracking systems, version control, and other such tools; it was just the developers and their IDE of choice. But thanks to the development of new, integrated stacks, like the Microsoft Visual Studio Team System, and the explosion in availability of high quality, open source environments, organizations without these tools are becoming much less common. Developers must know more than just how to check code in and out of source control or how to use the VM system to build test environments. They need to have a rigorous habit of hygiene in place to make sure that they are properly coordinating with their teams. Code cowboys who store everything on a personal USB drive, dont document which changes correspond to which task item, and so on, are unwelcome in more traditional shops and even more unwelcome in Agile environments, which rely on a tight coordination between team members to operate.

22.

10: Mobile development

23. The late 1990s saw Web development rise to mainstream acceptance and then begin to marginalize traditional desktop applications in many areas. In 2008, mobile development left the launch pad, and over the next five years, it will become increasingly important. There are, of course, different approaches to mobile development: Web applications designed to work on mobile devices, RIAs aimed at that market, and applications that run directly on the devices. Regardless of which of these paths you choose, adding mobile development to your skill set will ensure that you are in demand for the future. "Most people who graduate with CS degrees don't understand the significance of Lisp. Lisp is the most important idea in computer science. Alan's breakthrough in object oriented programming, wasn't objects, it was the realizing that the Lisp metasystem was what we needed. Alan uses John McCarthy and Lisp as an example of real science in computer science. He showed us that you can build a system that's also it's own metasystem. Lisp is like Maxwell's equations. Many of the things that are wrong about Java is that it lacks a metasystem and that the metasystem that's been tacked onto it is missing key parts. To find the most interesting things about our field you have to go back 30 or 40 years.

Alan used McCarthy's method to design an object oriented system. He spent only a month implementing it because of the metasystem." Interesting stuff - I hope Alan's presentations were recorded as I'd really like to hear what he had to say. In case you're not familiar with some of the things Alan Kay has said about Lisp, here's a collection of quotes (along with a few that are not directly Lisp-related) that I've found:

From "A Conversation with Alan Kay": o "I would compare the Smalltalk stuff that we did in the '70s with something like a Gothic cathedral. We had two ideas, really. One of them we got from Lisp: late binding. The other one was the idea of objects. Those gave us something a little bit like the arch, so we were able to make complex, seemingly large structures out of very little material, but I wouldn't put us much past the engineering of 1,000 years ago." o "So the problem is-I've said this about both Smalltalk and Lisp-they tend to eat their young. What I mean is that both Lisp and Smalltalk are really fabulous vehicles, because they have a meta-system. They have so many ways of dealing with problems that the early-binding languages don't have, that it's very, very difficult for people who like Lisp or Smalltalk to imagine anything else." o "SF: If nothing else, Lisp was carefully defined in terms of Lisp. AK: Yes, that was the big revelation to me when I was in graduate school-when I finally understood that the half page of code on the bottom of page 13 of the Lisp 1.5 manual was Lisp in itself. These were "Maxwell's Equations of Software!" This is the whole world of programming in a few lines that I can put my hand over." From "Report on OOPSLA97": o "Java and C++ make you think that the new ideas are like the old ones. Java is the most distressing thing to hit computing since MS-DOS." o "For complex systems, the compiler and development environment need to be in the same language that its supporting. It's the only way to grow code." o "The Art of the Metaobject Protocol is the best book written in computing in ten years." Miscellaneous quotes: o [Lisp is] "the greatest single programming language ever designed" o "Simple things should be simple. Complex things should be possible." o "The great problem with Lisp is that it is just good enough to keep us from developing something really good" o "Some people worry that artificial intelligence will make us feel inferior, but then, anybody in his right mind should have an inferiority complex every time he looks at a flower." o "I invented the term Object-Oriented, and I can tell you I did not have C++ in mind." o "Until real software engineering is developed, the next best practice is to develop with a dynamic system that has extreme late binding in all aspects."

o o o o o o o

"The real romance is out ahead and yet to come. The computer revolution hasn't started yet. Don't be misled by the enormous flow of money into bad defacto standards for unsophisticated buyers using poor adaptations of incomplete ideas." "A new point of view is worth 80 IQ points." "All creativity is an extended form of a joke." "If you don't fail at least 90 percent of the time, you're not aiming high enough." "Most undergraduate degrees in computer science these days are basically Java vocational training." "Any company large enough to have a research lab is too large to listen to it." "Revolutions come from standing on the shoulders of giants and facing in a better direction." "The one thing it [Lisp] has going against it is that it is not a crystallization of style. The people who use it must have a great deal of personal style themselves. But I think if you can have one language on your system, of the ones that have been around for a while, it should be Lisp."

Python. Lisp, Perl. Read good code, write, read Use UNIX Get good summerinternship.Learn C before graduate Learn algorithm, data pattern

You might also like