Chrystel Contreras
Programmers in Today’s Job Market:
The Need to Know Various Programming
• 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
• From the giants i.e. EA, Microsoft to the
small start-ups, no company only uses 1
programming language to develop
• Company I work for – Tactical Language
Training, LLC. (TLT) is a perfect example
of this fact
Sample job ad from Tactical
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
• 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
Patent-Pending Technologies
• Computational models of language, culture, and
• Artificial-intelligence-based psychological
• 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
• 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:
Unreal Script
• 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
• Can be learned in a few days
• Offers strong support for integration with other
languages and tools; and plays well with other
• 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
• 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
• 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
• 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
Procedural programming
Data abstraction
Object-oriented programming
Generic programming
• Developed in 1983 at Bell Labs by Bjarne Stroustrup
• Started out as an enhancement to the C programming
• 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
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
• 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
– Should contain built-in support for using computer
– Should be designed to execute code from remote sources
– Should be easy to use by selecting what was considered
the good parts from other object-oriented languages
• Sometimes necessary to use extensions
to achieve goals of network support and
remote code execution
• Platform independence – important
– 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
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
• 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
Example of one of TLTs Authoring
Tools - Kona
• 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
• Fee-Free Open Standard
• 2 Levels of Correctness:
– Well-formed
– Valid
• Compiled by a working-group of 11 members
and supported by an interest group of 150
• 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
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
• Scripting language of the Unreal Engine and is
used for authoring game code and gameplay
• 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
What TLT uses UnrealScript for:
• Uses UnrealScript to program inside Unreal
• 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
Other Software Developers
Due to
issues could not get
other companies to
divulge that
languages they use
for their products
(perfectly standard
procedure in the
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
* 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
* 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
* 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
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.
• 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

Chrystel Contreras