1 / 28

Chrystel Contreras

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

Download Presentation

Chrystel Contreras

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmers in Today’s Job Market: The Need to Know Various Programming Languages Chrystel Contreras

  2. 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

  3. 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

  4. 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.

  5. 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.

  6. 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

  7. 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.

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. 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

  20. 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

  21. Example of one of TLTs Authoring Tools - Kona

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

More Related