<<

There are hundreds of programming languages in use today. How can you know which one to learn first? How do you know which ones are the best for your IT field o f choice? Well, I can't answer that question for you. But why not start by learn ing one of the top 10 most popular ones? That way you will always be able to get a job in the IT industry. Learning a is not easy, but it can be very rewarding. You w ill have a lot of questions at first. Just remember to get help when you need it ! You can find out the answer to almost everything on Google nowadays.... so the re is no excuse for failure. Also remember that it takes years to become an expe rt programmer. Don't expect to get good overnight. Just keep learning something new every day and eventually you will be competent enough to get the job done ;) This article covers the top 10 most popular programming languages as ranked by T iobe.com in June 2009. I have added some general reviews and comments about each language they listed. Remember these are my own personal opinions. Other IT pro fessionals might have different opinions. 1. Java Java uses a compiler, and is an object-oriented language released in 1995 by Sun Microsystems. Java is the number one programming language today for many reason s. First, it is a well-organized language with a strong library of reusable soft ware components. Second, programs written in Java can run on many different comp uter architectures and operating systems because of the use of the JVM ( Java vi rtual machine ). Sometimes this is referred to as code portability or even WORA ( write once, run anywhere ). Third, Java is the language most likely to be taug ht in university computer science classes. A lot of computer science theory book s written in the past decade use Java in the code examples. So learning Java syn tax is a good idea even if you never actually code in it. Java Strengths: WORA, popularity Java Weaknesses: Slower than natively compiled languages 2. C C is a compiled, procedural language developed in 1972 by Dennis Ritchie for use in the UNIX operating system. Although designed to be portable in nature, C pro grams must be specifically compiled for computers with different architectures a nd operating systems. This helps make them lightning fast. Although C is a relat ively old language, it is still widely used for system programming, writing othe r programming languages, and in embedded systems. Strengths: Speed Weaknesses: Memory management can be difficult to master 3. C++ C++ is a compiled, multi-paradigm language written as an update to C in 1979 by Bjarne Stroustrup. It attempts to be backwards-compatible with C and brings obje ct-orientation, which helps in larger projects. Despite it's age, C++ is used to create a wide array of applications from games to office suites. Strengths: Speed Weaknesses: C++ is older and considered more clumsy than newer object-oriented l anguages such as Java or C#. 4. PHP PHP uses a run-time interpreter, and is a multi-paradigm language originally dev eloped in 1996 by Rasmus Lerdorf to create dynamic web pages. At first it was no t even a real programming language, but over time it eventually grew into a full y featured object-oriented programming language. Although PHP has been much crit icized in the past for being a bit sloppy and insecure, it's been pretty good si nce version 5 came out in 2004. It's hard to argue with success. Today, PHP is t he most popular language used to write web applications. Even English 4 IT, the program you are currently using, is written in PHP ;) Strengths: Web programming, good documentation Weaknesses: Inconsistent syntax, too many ways to do the same thing, a history o f bizarre security decisions 5. VB ( or Visual Basic ) Visual Basic is an interpreted, multi-paradigm languag e developed by Microsoft Corporation for the Windows platform. It has been evolv ing over the years and is seen as a direct descendant of Microsoft's old BASIC f rom the 1970's. Visual Basic is a good language for scripting Windows applicatio ns that do not need the power and speed of C#. Strengths: None. Weaknesses: Only runs in Windows 6. Python Python is an interpreted, multi-paradigm programming language written by Guido v an Rossum in the late 1980's and intended for general programming purposes. Pyth on was not named after the snake but actually after the Monty Python comedy grou p. Python is characterized by its use of indentation for readability, and its en couragement for elegant code by making developers do similar things in similar w ays. Python is used as the main programming choice of both Google and Ubuntu. Strengths: Excellent readability and overall philosophy Weaknesses: None 7 C# C# is a compiled, object-oriented language written by Microsoft. It is an open s pecification, but rarely seen on any non-Windows platform. C# was conceived as icrosoft's premium language in its .NET Framework. It is very similar to Java in both syntax and nature. Strengths: Powerful and pretty fast Weaknesses: Only really suitable for Windows 8. JavaScript JavaScript is an interpreted, multi-paradigm language. A very strange one too. D espite it's name, it has nothing whatsoever to do with Java. You will rarely, if ever, see this language outside of a web browser. It is basically a language me ant to script behaviors in web browsers and used for things such as web form val idation and AJAX style web applications. The trend in the future seems to be bui lding more and more complex applications in JavaScript, even simple online games and office suites. The success of this trend will depend upon advancements in t he speed of a browser's JavaScript interpreter. If you want to be correct, the r eal name of this programming language is ECMAscript, although almost nobody actu ally calls it this. Strengths: it's the only reliable way to do client-side web programming Weaknesses: it's only really useful in a web browser 9. Perl Perl is an interpreted, multi-paradigm language written by Larry Wall in 1986. I t is characterized by a somewhat disorganized and scary-looking syntax which onl y makes sense to other PERL programmers ;) However, a lot of veteran programmers love it and use if every day as their primary language. 10 years ago, Perl was more popular than it is today. What happened? A lot of newer programmers and eve n old Perl programmers (such as myself) have switched to other languages such as PHP, Python, and Ruby. Perl is perhaps still the best language for text process ing and system administration scripting. I personally do not recommend it howeve r as a primary programming language. Strengths: text processing and system administration Weaknesses: strange syntax, and perhaps too many ways to do the same thing 10. Ruby Ruby is an interpreted, object-oriented language written by Yukihiro Matsumoto a round 1995. It is one of the most object-oriented languages in the world. Everyt hing is an object in Ruby, even letters and numbers can have method calls. It's a great language to learn if you love objects. The only negative is that it's lo ve of object-orientation makes it a bit slow, even for an interpreted language. Strengths: Perhaps the world's most object-oriented language Weaknesses: its superior object model comes at a price... namely speed Okay! Those are the top 10 programming languages in use today and some personal comments about them. Remember that opinions are like noses, everyone has one and they all smell ;) If you disagree, please feel free to email me or write your o wn opinions on the forum. This is the end of the reading! ------language is an essential part of being a good and successful Web developer. IDC MarketScape: Worldwide Enterprise Social Networks 2014 Vendor Assessment D ownload Now "One of my mentors once told me that a programming language is just a programmin g language. It doesnt matter if youre a good programmer, its the syntax that mat ters," Tim Huckaby, CEO of San Diego-based engineering company CEO Inte rknowlogy.com, told eWEEK. However, Huckaby said that while his company is "swimming" in work, hes having a nearly impossible time finding recruits, even on the entry level, that know spe cific programming languages. "Were hiring like crazy, but were not having an eas y time. Were just looking for attitude and aptitude, kids right out of school th at know .Net, or even Java, because with that we can train them on .Net," said H uckaby. "Dont get fixated on one or two languages. When I started in 1969, FORTR AN, COBOL and S/360 Assembler were the big tickets. Today, Java, C and Visual Ba sic are. In 10 years time, some new set of languages will be the in thing. At las t count, I knew/have learned over 24 different languages in over 30 years," Wayn e Duqaine, director of Software Development at Grandview Systems, of Sebastopol, Calif., told eWEEK. By picking the brains of Web developers and IT recruiters, eWEEK selected 10 programming languages that are a bonus for developers to add t o their resumes. Even better, theyre great jumping-off points, with loads of job opportunities for younger recruits. 1. PHP What it is: An open-source, interpretive, server-side, cross-platform, HTML scri pting language, especially well-suited for Web development as it can be embedded into HTML pages. Why you should learn it: Its particularly widely used. "High-speed scripting wit h caching, augmented with compiled code plug-ins (such as can be done with Perl and PHP) is where the future is. Building Web apps from scratch using C or COBOL is going the way of the dinosaur," said Duquaine. Job availabilities: 1,152* 2. C# What it is: A general-purpose, compiled, object-oriented programming language de veloped by Microsoft as part of its .NET initiative, it evolved from C and C++ Why you should learn it: Its an essential part of the .Net framework. "Learning C#, which is just Java with a different name plate, is critical if you heavily u se Microsoft," said Duquaine. Job availabilities: 5,111 3. AJAX (Asynchronous JavaScript and XML) What it is: Though technically not a programming language, AJAX uses XHTML or HT ML, JavaScript and XML to create interactive Web applications. Why you should learn it: Ever since Google Maps put AJAX, well, on the map, the requests for AJAX-knowledgeable pros went through the roof. "The demand for AJAX knowledge is huge because its so damned hard to learn," said Huckaby. Of note, Microsoft announced recently plans to release a tool named Atlas that will make AJAX easier to implement. "If Microsofts Atlas tool is successful, it would brin g the extreme complexity and annoyance of AJAX to the average worker," said Huck aby. Job availabilities : 1,106 4. JavaScript What it is: Not to be confused with Java, JavaScript is a an object-oriented, sc ripting programming language that runs in the Web browser on the client side. It s smaller than Java, with a simplified set of commands, easier to code and doesn t have to be compiled. Why you should learn it: Embedded into HTML, its used in millions of Web pages t o validate forms, create cookies, detect browsers and improve the design. With i ts simplicity to learn as well as wide use, its considered a great bang for your educational buck. Job availabilities: 4,406 5. Perl What it is: Perl is an open-source, cross-platform, server-side interpretive pro gramming language used extensively to process text through CGI programs. Why you should learn it: Perls power in processing of piles of text has made it very popular and widely used to write Web server programs for a range of tasks. "Learning some form of , such as Perl or PHP is critical if yo u are doing Web apps," said Duquaine. Job availabilities: 4,810 6. C What it is: A standardized, general-purpose programming language, its one of the most pervasive languages and the basis for several others (such as C++). Why you should learn it: "Learning C is crucial. Once you learn C, making the ju mp to Java or C# is fairly easy, because a lot of the syntax is common. Also, a lot of C syntax is used in scripting languages," said Duquaine. Job availabilities: 6,164, including all derivatives 7. Ruby and What they are: Ruby is a dynamic, object-oriented, open-source programming langu age; Ruby on Rails is an open-source Web application framework written in Ruby t hat closely follows the MVC (Model-View-Controller) architecture. Why you should learn it: With a focus on simplicity, productivity and letting th e computers do the work, in a few years, its usage has spread quickly. As a bonu s, many find it easy to learn. Job availabilities : 210 and 54, respectively 8. Java What it is: An object-oriented programming language developed by James Gosling a nd colleagues at Sun Microsystems in the early 1990s. Why you should learn it: Hailed by many developers as a "beautiful" language, it is central to the non-.Net programming experience. "Learning Java is critical i f you are non-Microsoft," said Duquaine. Job availabilities: 14,408 9. Python What it is: An interpreted, dynamically object-oriented, open-source programming language that utilizes automatic memory management. Why you should learn it: Designed to be a highly readable, minimalist language, many say it has a sense of humor (spam and eggs, rather than foo and bar), Pytho n is used extensively by Google as well as in academia because of its syntactic simplicity. Job availabilities: 811 10. VB.Net (Visual Basic .Net) What it is: An object-oriented language implemented on Microsofts .Net framework . Why you should learn it: Most argue that VB.Net is currently more popular than e ver and one of the only "must-learns." "It is currently dominating in adoption a nd that is where all the work is," said Huckaby. Job availabilities: 2,090 * All numbers on job availability were pulled from nationwide queries on Dice.co m, a job site for technology professionals. Check out eWEEK.coms for the latest news, reviews and analysis in programming environments and developer tools. ------Run Unix. Unix is the operating system of the Internet. While you can learn to u se the Internet without knowing Unix, you can't be an Internet hacker without un derstanding Unix. For this reason, the hacker culture today is pretty strongly U nix-centered. A Unix like Linux can run alongside Microsoft Windows on the same machine. Download Linux online or find a local Linux user group to help you with installation.[1] A good way to dip your toes in the water is to boot up what Linux fans call a li ve CD, a distribution that runs entirely off a CD without having to modify your hard disk. This is a way to get a look at the possibilities without having to do anything drastic. There are other operating systems besides Unix, but they're distributed in binar y you can't read the code, and you can't modify it. Trying to learn to hack on a Microsoft Windows machine or under any other closed-source system is like tryin g to learn to dance while wearing a body cast. Under Mac OS X it's possible to run Linux, but only part of the system is open s ource you're likely to hit a lot of walls, and you have to be careful not to dev elop the bad habit of depending on Apple's proprietary code. Write HTML. If you don't know how to program, learning basic HyperText Mark-Up L anguage (HTML) and gradually building proficiency is essential. What you see whe n you look at a website of pictures, images, and design components is all coded using HTML. For a project, set out to learn how to make a basic home page and wo rk your way up from there. In your browser, open the page source information to examine the HTML to see an example. Go to Web Developer > Page Source in Firefox and spend time looking at the code. You can write HTML in a basic word processing program like Notepad or Simple tex t and save your files as "text only," so you can upload them to a browser and se e your work translated.[2] You'll need to learn to format tags and learn to think visually using them.[3] " <" is used to open a tag and "/> is used to close it. " " is the opening for a line of paragraph code. You'll use tags to signal anythin g visual: italics, formatting, color, etc. Learning HTML will help you to unders tand better how the Internet works Learn the language of programing. Before you start writing poems you have to lea rn basic grammar. Before you break the rules you have to learn the rules. But if your ultimate goal is to become a hacker, you're going to need more than basic English to write your masterpiece.[4] Python is a good "language" to start off with because it's cleanly designed, wel l documented, and relatively kind to beginners. Despite being a good first langu age, it is not just a toy; it is very powerful, flexible, and well-suited for la rge projects. Java is an alternative, but its value as a first programming langu age has been questioned.[5] If you get into serious programming, you will have to learn C, the core language of Unix. C++ is very closely related to C; if you know one, learning the other will not be difficult. C is very efficient with your machine's resources, but wi ll soak up huge amounts of your time on debugging and is often avoided for that reason, unless the efficiency of your computer is especially important. It is probably a good idea to use a good starting platform such as Backtrack 5 R 3, Kali or Ubuntu ------I know that scripting languages (Perl, Ruby, Python, javascript, and even Lua!!! ) are most suitable for hacking and penetration testing Perl Scripting language General purpose Available on most *nix OSes since the '90s. Great for quick hacks and short scripts. Ruby Scripting language General purpose Cross-platform Object-oriented Reflective (can see its own structure and code) Good for dynamic frameworks Python Scripting language General purpose Cross-platform Designed for clear and readable source code Huge framework of libraries JavaScript Scripting language Web-based Cross-platform (available on every major browser) You probably want Ruby, because it's the native language for Metasploit, which i s the de facto standard open source penetration testing framework. Ruby's going to give you: Metasploit's framework, opcode and shellcode databases Metasploit's Ruby lorcon bindings for raw 802.11 work Metasploit's KARMA bindings for 802.11 clientside redirection Libcurl and net/http for web tool writing EventMachine for web proxy and fuzzing work (or RFuzz, which extends the well-kn own webserver) Metasm for shellcode generation Distorm for x86 disassembly BinData for binary file format fuzzing. Second place here goes to Python. There are more pentesting libraries available in Python than in Ruby (but not enough to offset Metasploit). Commercial tools t end to support Python as well --- if you're an Immunity CANVAS or CORE Impact cu stomer, you want Python. Python gives you: Twisted for network access PaiMei for program tracing and programmable debugging CANVAS and Impact support Dornseif's firewire libraries for remote debugging Ready integration with WinDbg for remote Windows kernel debugging (there's still no good answer in Ruby for kernel debugging, which is why I still occasionally use Python). Peach Fuzzer and Sully for fuzzing SpikeProxy for web penetration testing (also, OWASP Pantera). Unsurprisingly, a lot of web work uses Java tools. The de facto standard web pen test tool is Burp Suite, which is a Java swing app. Both Ruby and Python have Ja va variants you can use to get access to tools like that. Also, both Ruby and Py thon offer: Direct integration with libpcap for raw packet work OpenSSL bindings for crypto IDA Pro extensions Mature (or at least reasonable) C foreign function interfaces for API access WxWindows for UI work, and decent web stacks for web UIs You're not going to go wrong with either language, though for mainstream pentest work, Metasploit probably edges out all the Python benefits, and at present, fo r x86 reversing work, Python's superior debugging interfaces edge out all the Ru by benefits. Also: it's 2008. They're not "scripting languages". They're programming language s. ;) shareimprove this answer edited May 10 '13 at 13:53 answered Sep 21 '12 at 15:40 NlightNFotis 8471618 1 +1 since largely the capability for re-use of existing frameworks is the single largest benefit. I can certainly write apps to pen-test in any language, but not -having to reinvent the wheel (and not having to compile) gives directly execute d languages a bit of a benefit iivel Sep 21 '12 at 16:12

@iivel ^^this and compiling is one thing. Debugging is another =) NlightNFotis Sep 21 '12 at 16:13

I can't tell you how much I hate debugging PERL though ... at least the Eclipse PERL debugger is pretty good :) It is good for knocking something out quick - bu t like LISP; it just hurts my brain. iivel Sep 21 '12 at 16:17

One huge reason I would choose Python is Scapy. Sure Metasploit runs on Ruby but thats no reason to make it the "hackers" scripting language of choice. dc5553 May 12 '13 at 8:56

@dc5553 There are a number of frameworks in Python that are useful for hacking. Hachoir is another very useful framework used to analyse file types. NlightNFot is May 12 '13 at 13:11 show 1 more comment up vote 6 down vote Libraries, Time to write Code, cross-platform compatibility are key here. I foun d that using Python I was able to come up with Proof-of-concept exploits in a ve ry short amount of time with minimum lines of code. This is possible because of the extensive standard library and additional libraries that you can download as well. I believe that is python's greatest strength to be used for pentesting an d hacking. Ex. you need a string of 1000 characters / 1000 bytes long. In python: print "A"*1000 In C : for(i=0;i<1000;i++)printf("A");` (Apart from all the includes mumbo jumbo and compiling it) That is just a simple example. But as you can see the time taken for such a triv ial task is far simpler in python.