100 likes | 231 Views
Programming Languages in the 2000s. Judith Bishop University of Pretoria, South Africa jbishop@cs.up.ac.za. Position of the course. Third year, optional, popular 70-150 students Students know Java and C++ well They have some C# (web oriented) No other languages
E N D
Programming Languages in the 2000s Judith Bishop University of Pretoria, South Africa jbishop@cs.up.ac.za
Position of the course • Third year, optional, popular • 70-150 students • Students know Java and C++ well • They have some C# (web oriented) • No other languages • Compilers is an optional course too
Aims of the course COS333 • appreciate the rich history • familiar with paradigms • skills in new languages • appreciate principles • exposed to the new trends
Previous course pre-2004 Other paradigms -object-oriented -functional -logical -scripting -high performance • Progression • of • imperative • languages • variables • types • procedures • concurrency etc History
Timeline • 2001 C# 1.0 • 2002 • 2003 Spec# 1.0 • 2004 Java 1.5, Comega • 2005 C# 2.0, Spec# 1.0.6 • 2006 Java 6, C# 3.0, LINQ
Advances in 2001 • Auto boxing and unboxing • Properties • Foreach and switch on objects • Indexers • Enumerated types with IO • Events and delegates • Generics
Advances in 2006 • The LINQ extensions to the .NET Framework provide Comega’s language-integrated query, set, and transform operations to C# and Visual Basic IEnumerable<string> expr = from s in names where s.Length == 5 orderby s select s.ToUpper();
Current course 2004+ Object-oriented History Imperative languages New paradigms Other paradigms notes 11,12, notes 15,16, notes 5,6,7,8, 9,10,14,13 1,2
Student Assessment • Set up website to teach one language from another • Include only five features • Write two examples (one given, one free) • Students look forward to this assignment • See examples at http://demos.cs.up.ac.za
Sample Oops Question • The difference between what can be accomplished in generics in C++, Java and C# is largely based on their implementation. Describe the three approaches and indicate especially how each handles the case of generic instantiation of primitive types. Comment on the potential efficiency (in space and time) of the different approaches.