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

28
Chrystel Contreras Programmers in Today’s Job Market: The Need to Know Various Programming Languages
  • date post

    22-Dec-2015
  • Category

    Documents

  • view

    213
  • download

    1

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

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

Chrystel Contreras

Programmers in Today’s Job Market:

The Need to Know Various Programming Languages

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

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

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

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

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

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.

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

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

Who is Tactical Language?

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

• 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Page 18: Chrystel Contreras Programmers in Today’s Job Market: The Need to Know Various Programming 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

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

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

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

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

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

Example of one of TLTs Authoring Tools - Kona

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

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

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

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

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

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

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

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

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

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

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

Other Software Developers• 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.

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

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