C A Semitone Higher History We first begin
# C A Semitone Higher
History � We first begin with Java which was released in 1995 by Sun Microsystems � Initially Java was 100% interpreted at runtime and was very slow � Eventually Just-in-Time compilers were created and used � The increased performance of Java and portability helped it grow in popularity
History � The theory that Java applications could be developed on Windows and then easily be deployed on Unix platforms was clearly a threat to Microsoft � So Microsoft created their own Java Virtual Machine which was fairly reliable � However, their JVM introduced incompatible extensions which ruined portability
History � So Sun sued Microsoft for violating the licensing terms � This hindered Microsoft’s JVM making it obsolete quickly as Sun updated their JVM � Clearly well Microsoft and Java did not mix
History � In 1999 Anders Hejlsberg of Microsoft and his team began working on a new language initially called COOL (C-like Object Oriented Language) � The name was eventually changed to C# by the time it was announced, along with Microsoft’s. NET, in 2000
History � James Gosling claimed that C# was an “imitation” of Java �“[C# is] sort of Java with reliability, productivity and security deleted. ” � Klaus Kreft and Angelika Langer (authors) �“Java and C# are almost identical programming languages. Boring repetition that lacks innovation. ”
History � However, over time Java and C# have taken different paths
Overview � Part of the. NET Framework � Compiler creates intermediate code (CIL) � CLR creates machine code � Just-in-time compilation
. exe or. dll � C# code can be compiled either to executable files or to library files (dynamically linked library) �csc program. cs compile to executable �csc /t: library lib. cs compile to dll
C like language � For the most part, if you have programmed in Java, C, C++ or any other C like language, you will be used to most C# syntax � C# uses {. . } block statements � If else, while, do/while, for statements all the same � Even many keywords are the same (especially compared to Java)
Object Oriented � At the heart it is object oriented � Supports � Classes inheritance and polymorphism are like objects with members �methods, constructors, etc.
Basic Program � The Main method �static void Main() {…} �static void Main(string[] args) {…. } �static int Main(string[] args) {…} � “Other overloaded versions of Main are permitted, however, provided they have more than one parameter, or their only parameter is other than type string[]. ” Microsoft
Identifiers and Keywords � C# has 80 keywords � Some are context sensitive keywords �They can be used as identifiers � All keywords are usable as identifiers if the @ symbol is in front of them �@return, @null, @double �int @int = 5; Console. Write. Line(@int);
Formatted Output � For output: �Console. Write. Line(…. . ); � Format using {…} within a string �{parameter #, spacing : special formatting} � Console. Write. Line(“{0, -10}. ”, �> 100. �. . . Write. Line(“{1}, {0}”, first. Name, last. Name); �>Rahimi, Shahram 100);
Basic Programs
Basic Programs
Types � Value Types �sbyte, short, int, long, byte (unsigned), ushort, uint, ulong, char, float, double, decimal, bool �Enum, Struct, Nullable � Reference Types �Objects, string, class, interface, array, delegate
Arrays � Arrays are treated the same as in Java �int[] n = new int[]{1, 2, 3, 4}; SAME AS �int[] n = {1, 2, 3, 4}; SAME AS �int[] n = new int[4]; n[0] = 1; …. .
Types � Nullable type �int? allows the int values to also be null �Useful for databases � Delegates �A data structure that refers to one or more methods �Similar to function pointers in C and C++
Delegates
Delegates
Switch � Switch statements are mostly the same EXECPT that they require an explicit branch statement like break or goto due to a static semantic rule � Also, switch statements in C# allow strings along with int and char
Switch
Unsafe Code � While C# has made strides to eliminate the need for pointers as data types with references and objects, it is still allowed � One must declare unsafe code to: �Declare and operate on pointers �Perform conversions between pointers �Take addresses of variables
Unsafe Code � Variables � Methods � Classes
Readability � Pro �Basic syntax is C like (recognizable) �Data must be explicitly typed and declared �Very common special words and statement structure (loops and selection) � Con �Not necessarily simple (delegates) �Overloaded Main �Keywords as identifiers �All statements end with }
Writability � Pro �Many ways to do one thing (like array declaration) �Delegates can simplify method calling �Inheritance � Con � 80 keywords to remember (and required context)
Reliability � Pro �Limits use of pointers, programmer becomes very aware of possible pointer issues. �Uses explicitly typed and declared variables � Con �Can write code in unsafe mode �Can be a complex language
Cost �Memory references and automatic garbage collection make creating quality code simpler and faster �Uses Microsoft Visual Studio as compiler ○ Free open source versions are available, but premium versions can cost $2, 000+ �Similar to well known languages but can be a complex language
Who is using C# It’s Microsoft Who isn’t using it? �Web design �Gaming �Medical �Financial
Mono Project �UNIX version of the Microsoft. NET development platform �Open sourced based on C#. NET framework �Enables Multi platform UNIX. NET applications � Implements various technologies developed by Microsoft that have now been submitted to the ECMA for standardization.
Sources “C# In Depth” – Jon Skeet � Wikipedia � � http: //en. wikipedia. org/wiki/C_Sharp_(programming_langu age) “C sharp Language Specification” – Microsoft � “Concepts of Programming Languages” Sebesta � “Essential C# 4. 0” – Michaelis � http: //www. mono-project. com/ �
- Slides: 32