280 likes | 466 Views
Programmers in Today’s Job Market: The Need to Know Various Programming Languages. Chrystel Contreras. Introduction . Over 1000 programming languages exist today Software development companies use numerous languages to create, develop, maintain, and deploy software
E N D
Programmers in Today’s Job Market: The Need to Know Various Programming Languages Chrystel Contreras
Introduction • Over 1000 programming languages exist today • Software development companies use numerous languages to create, develop, maintain, and deploy software • All areas – operating systems, business applications, educational learning tools, military training tools, databases, gaming, government systems, etc. • Programmers must know more than a few languages to survive and prosper in today’s programming industry
No company programs in only one language • From the giants i.e. EA, Microsoft to the small start-ups, no company only uses 1 programming language to develop software • Company I work for – Tactical Language Training, LLC. (TLT) is a perfect example of this fact
Sample job ad from Tactical Language • We seek a Java web application programmer to build authoring tools. • The ideal candidate: • Has extensive experience programming web applications using server-side Java. Experience with the following technologies is a plus: game programming, AI, agents, education software, natural language processing. • Is a real coder/programmer -- as opposed to analyst or architect. • Has good design skills and the ability to work with and integrate a number of disperse technologies. Flexibility and curiosity to learn new technologies are very important. • Likes to get things done and enjoys having real users employ the software he/she creates. • Education and experience desired: • 3+ years of programming experience. • B.S. in Computer Science or equivalent. • Technical skills desired: • Fluency in building three-tiered, Java-based web applications. • Experience with Java-based portals and/or content management systems (e.g., JBoss Portal). • Fluency in XML technologies (XML XSD, XSL/XSLT, XPath). • Fluency with relational databases, especially Postgres. • Experience with mixed web applications (HTML/Javascript + applets) is a plus. • Experience with LAMP stack technologies is a plus. • Experience with Python and/or Perl is a plus. • Experience with Java client-side technologies (e.g., Swing) is a plus.
Who is Tactical Language? • Spin-off of the Information Sciences Institute of the University of Southern California • Tactical Training Language System project was sponsored by DARWARS in cooperation with the U.S. Special Operations Command, the U.S. Military, the U.S. Marine Corps, and other government agencies • Tactical Language has evolved to become a separate privately owned company.
The Tactical Language and Culture Training Systems are now produced by Tactical Language Training, a wholly owned subsidiary of Alelo, Inc. • Their initial emphasis is on foreign languages and culture. • Currently have 3 Tactical Language and Culture Training Systems – Tactical Pashto, Tactical Iraqi, and Tactical French
Systems teach what to say, how to say it, and when to say it in Pashto, Sahel French, and Iraqi Arabic • Users learn while having fun by playing immersive, interactive courses based on 3D videogames that simulate real-life social communications involving spoken dialogs and cultural protocols. • These courses are not simple entertainment videogames or training programs. They are “serious games” that combine patent-pending technologies.
Patent-Pending Technologies • Computational models of language, culture, and learning • Artificial-intelligence-based psychological simulations • Social Puppets™ Animations that dynamically control the unscripted autonomous behavior of the games’ animated characters, and contextual, speaker-independent speech recognition models for non-native speakers
Positive reviews by the users of the systems • Current users of the training systems are: • U.S. Marine Corps • U.S Army • U.S. Air Force • U.S. Navy
Primary Languages Used by Tactical Language Training • TLT uses primarily 5 languages to develop their systems. Other languages are also used, but for relatively small and inconsequential tasks. Therefore, I am focusing on the primary 5. • They are: • Python • C++ • Java • XML • Unreal Script
Python • Conceived by Guido Van Rossum at CWI in the Netherlands in the late 1980s • The latest version is 2.5 • High-level, dynamic, object-oriented language • Emphasizes the importance of programmer effort over computer effort • Similar to Ruby, Perl, Scheme, Smalltalk, and Tcl in that is is a multi-paradigm language which has a dynamic type system and uses automatic memory management
Python • Can be learned in a few days • Offers strong support for integration with other languages and tools; and plays well with other languages • Comes with extensive libraries • Runs on Linux/Unix, Windows, MAC OS X, OS/2, Amiga, Palm handhelds, and Nokia mobile phones • Managed by Python Software Foundation , a non-profit organization • Distributed under an OSI-approved open-source license that make it free to use
What TLT uses Python for: • Uses Python to build the mission engine for their systems • Uses Python to coordinate the work of all the game pieces • Basically, Python is the “glue” of their systems • Important for programmers they hire to know or learn Python quickly. Luckily Python is easy to learn and has extensive libraries
C++ • Since the 1990s is has been the most popular commercial programming language • General-purpose, high-level, language with low-level facilities • Statically typed free-form multi-paradigm language that supports: • Procedural programming • Data abstraction • Object-oriented programming • Generic programming • RTTI • Developed in 1983 at Bell Labs by Bjarne Stroustrup • Started out as an enhancement to the C programming language • C++ has many rules and they can be found in ‘The Design and Evolution of C++” • C++ library consists of 2 parts • Core language • C++ standard library
C++ Flaws • Incompatibility with C (even though it started as an enhancement of C) • There are a few differences that cause C code to act differently in C++ or be invalid • Some programmers see the ability that C++ can “mix and match” procedural and object-oriented programming, rather that strictly enforcing a single paradigm as unfavorable
What TLT uses C++ for: • To build core components of its systems such as the speech recognition and the sound recordings • Used for the Unreal game engine • Unreal engine is the engine for the software or the base of the engine depending on what version is being used
Java • Object-oriented applications programming language • Developed by Sun Microsystems in the early 1990s • Derivative of C and C++, but has a simpler object model and fewer low-level facilities • Has 5 primary goals: • Should use object-oriented programming methodology • Should allow same program to be executed on multiple OS’s • Should contain built-in support for using computer networks • Should be designed to execute code from remote sources securely • Should be easy to use by selecting what was considered the good parts from other object-oriented languages
Java • Sometimes necessary to use extensions to achieve goals of network support and remote code execution • Platform independence – important characteristic • Programs written in Java must run similarly on any supported hardware/OS platform. Programmers should be able to write a program once, compile it once, and run it anywhere
Java Flaws • Running a program requires all 3rd party supporting libraries to be in the class path. This can be an obstacle to portability, because its syntax is platform-specific • License – Not free • Resource Management/Memory Management • Language Choices • Primitives vs. Objects • Non-Virtual Methods • Single Paradigm • Exception Handling • Closure • Performance • Language Constraints • Garbage Collection • Byte Code vs. Native Compilation • Hardware Interfacing/Interfacing with Native Code
What TLT uses Java for: • To build authoring tools such as Kona and Tide. Authoring tools are web-based • TLT uses JavaScript for the front-end of the authoring tools. • JavaScript is a scripting language that shares a similar name and has similar syntax as Java, but is not directly related to Java. They are only distantly related. Their main similarity is they were both derived from the C programming language
XML • Stands for Extensible Markup Language • General-purpose Markup Language • Primary function is to facilitate the sharing of data across different information systems, particularly via the Internet • XML is recommended by the World Wide Web Consortium • Fee-Free Open Standard • 2 Levels of Correctness: • Well-formed • Valid
XML • Compiled by a working-group of 11 members and supported by an interest group of 150 people • 2 current versions of XML: • XML 1.0 and XML 1.1 • XML 1.0 is widely implemented and recommended for general use • XML 1.1 is not widely implemented and is only recommended for use by those who need its unique features
What TLT uses XML for: • Uses XML for the contents of its system • All of their programmers must be familiar with XML since they are all responsible for the content of the system • XML has numerous sources of information and any well-trained programmer can learn XML relatively easy
UnrealScript • Scripting language of the Unreal Engine and is used for authoring game code and gameplay events • Unreal Engine is a widely-used game engine developed by Epic Games • TLT uses this engine for their systems • Has similar basic design principles as Java • Designed by Tom Sweeney and was also designed for simple, high-level game programming
What TLT uses UnrealScript for: • Uses UnrealScript to program inside Unreal Tournament • Unreal Tournament is a shoot and play game • Unreal Tournament houses the Unreal Engine that TLT uses for their systems • UnrealScript is another language TLT will allow a programmer to learn after employment, but it is preferred they know it beforehand
Due to confidentiality issues could not get other companies to divulge that languages they use for their products (perfectly standard procedure in the industry) I was able to go on EA’s website and pull the following job advertisement for a Software Engineer As you read the ad you see they require a potential programmer to also know various languages just as TLT does Required Skills:* Must be able to demonstrate advanced proficiency with native Linux application development and debugging using GNU C/C++ and GDB.* Must have a solid understanding of relational database usage, schema design, and previous experience with (My)SQL programming.* Must have a solid understanding of client/server based application development.* Must have an understanding of multi-threaded application & library design under Linux.* Must have an understanding of secure network programming practices.* Must have the ability to effectively communicate technical issues with technical and non-technical audiences via written and verbal English-language communications.* Must have good interpersonal skills. Must be able to train and support internal users.* Must have the ability to write well documented and efficient, modularized code.Highly Desirable (Though Not Required) Skills/Knowledge/Experience:* Experience with Linux kernel (2.4/2.6) development or other low level Linux programming experience.* Advanced MySQL (5+) database programming, schema design, and optimization skills.* Windows software development and debugging experience using C++, or Managed C++/C# under NET 2.0.* Familiar with use of cryptographic algorithms, protocols, and advanced techniques to develop secure applications.* Familiar with server-side web development (PHP, Perl, Java) and capable of providing engineering support to web developers with complex projects.* Familiar with Tomcat and developing Java web-based applications in that environment.* Past/present participation in open-source or other community development projects.* Game industry experience and/or understanding of the needs of the multiplayer games audience.* Current or former player of Dark Age of Camelot, Ultima Online (and/or other MMOG's.)The ideal candidate will have a bachelors degree in computer science, 3+ years of professional C/C++ programming experience (or verifiable open-source contributions), extensive relational database programming experience, previous secure client/server development experience with both Windows and Linux/UNIX, and a strong interest in EA Mythic. Other Software Developers
Conclusion • To be a successful programmer in today’s programming industry: • Learn as many languages as you can while in school • It a language isn’t taught at school, self-teach if possible with books, tutorials, online-support, etc. • Learn new languages that may be used at your current employer • Be willing to always learn and adapt to ever-changing technology