C Sharp (bahasa pemrograman): Perbedaan antara revisi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Konten dihapus Konten ditambahkan
Add Blazor
 
(35 revisi perantara oleh 12 pengguna tidak ditampilkan)
Baris 1: Baris 1:
{{Correct title|title=C#|reason=#}}
{{judul|C#}}
{{Infobox programming language
'''C#''' (dibaca: '''C sharp''') merupakan sebuah [[bahasa pemrograman]] yang [[Pemrograman Berorientasi Objek|berorientasi objek]] yang dikembangkan oleh [[Microsoft]] sebagai bagian dari inisiatif kerangka [[Microsoft .NET|.NET Framework]]. Bahasa pemrograman ini dibuat berbasiskan bahasa [[C++]] yang telah dipengaruhi oleh aspek-aspek ataupun fitur bahasa yang terdapat pada bahasa-bahasa pemrograman lainnya seperti [[Java]], [[Delphi]], [[Visual Basic]], dan lain-lain) dengan beberapa penyederhanaan. Menurut standar ''[http://www.ecma-international.org/publications/standards/Ecma-334.htm ECMA-334 C# Language Specification]'', nama C# terdiri atas sebuah huruf Latin '''[[C]]''' ([[Unicode|U+0043]]) yang diikuti oleh tanda pagar yang menandakan angka '''#''' ([[Unicode|U+0023]]). Tanda pagar # yang digunakan memang bukan tanda kres dalam seni musik (U+266F), dan tanda pagar # (U+0023) tersebut digunakan karena karakter kres dalam seni musik tidak terdapat di dalam ''[[keyboard]]'' standar.
| name = C#
| logo = C Sharp Icon.png
| logo size = 150px
| paradigm = [[Pemrograman terstruktur|Terstruktur]], [[Pemrograman imperatif|imperatif]], [[Pemrograman berorientasi objek|berorientasi objek]], [[Pemrograman berbasis kejadian|berbasis kejadian]], [[The Task-based Asynchronous Pattern|task-driven]], [[Pemrograman fungsional|fungsional]], [[Pemrogaman generic|generic]], [[Pemrograman reflektif|reflektif]], [[Komputasi bersamaan|bersamaan]]
| family = [[C (bahasa pemrograman)|C]]
| year = {{start date and age|2000}}<ref>{{Cite web | url=https://www.infoq.com/minibooks/emag-c-sharp-preview |title = InfoQ eMag: A Preview of C# 7}}</ref>
| designer = [[Anders Hejlsberg]] ([[Microsoft]])
| developer = Mads Torgersen (Microsoft)
| latest release version = {{wikidata|property|edit|reference|P548=Q2804309|P348}}
| latest release date = {{start date and age|{{wikidata|qualifier|single|P548=Q2804309|P348|P577}}}}
| latest preview version = {{wikidata|property|edit|reference|P548=Q3295609|P348}}
| latest preview date = {{start date|{{wikidata|qualifier|single|P548=Q3295609|P348|P577}}}}
| typing = Statis, dinamis,<ref name="dynamic" /> kuat, aman, nominatif, diinferens sebagian
| implementations = [[Microsoft Visual C Sharp|Visual C#]], [[.NET Framework]], [[Mono (perangkat lunak)|Mono]], [[.NET Core]], [[DotGNU|DotGNU (dihentikan)]], [[Universal Windows Platform]], [[Blazor]]
| dialects = [[Cω]], [[Spec Sharp|Spec#]], [[Polyphonic C Sharp|Polyphonic C#]], [http://ecsharp.net Enhanced C#]
| influenced_by = [[C++]],<ref name="influenced by CPP" /> [[Cω]], [[Eiffel (bahasa pemrograman)|Eiffel]], [[F Sharp|F#]],{{efn|untuk async}} [[Haskell]], [[Icon (bahasa pemrograman)|Icon]], [[J Sharp|J#]], [[Visual J++|J++]], [[Java]],<ref name="influenced by CPP" /> [[ML (bahasa pemrograman)|ML]], [[Modula-3]], [[Object Pascal]]<ref name="influenced by op" />
| influenced = [[Chapel (bahasa pemrograman)|Chapel]],<ref name="chplspec">{{cite web|title=Chapel spec (Acknowlegements)|url=http://chapel.cray.com/spec/spec-0.98.pdf|date=2015-10-01|accessdate=2016-01-14|publisher=Cray Inc}}</ref> [[Clojure]],<ref>{{cite web |url=http://www.codequarterly.com/2011/rich-hickey|archive-url=https://web.archive.org/web/20170111184835/http://www.codequarterly.com/2011/rich-hickey|url-status=dead|archive-date=2017-01-11|title=Rich Hickey Q&A by Michael Fogus|access-date=2017-01-11}}</ref> [[Crystal (bahasa pemrograman)|Crystal]],<ref name="rel_0.18.0">
{{cite web
| url = http://crystal-lang.org/2016/06/14/crystal-0.18.0-released.html#comment-2732771703
| title = Crystal 0.18.0 released!
| last = Borenszweig
| first = Ary
| quote = It's heavily inspired by Ruby, and other languages (like C#, Go and Python).
}}
</ref> [[D (bahasa pemrograman)|D]], [[J Sharp|J#]], [[Dart (bahasa pemrograman)|Dart]],<ref>{{cite web|title=Web Languages and VMs: Fast Code is Always in Fashion. (V8, Dart) - Google I/O 2013|url=https://www.youtube.com/watch?v=huawCRlo9H4&t=30m10s|accessdate=22 December 2013}}</ref> [[F Sharp|F#]], [[Hack (bahasa pemrograman)|Hack]], [[Java]],<ref>Java 5.0 menambahkan beberapa fitur bahasa baru ([[foreach loop|enhanced for loop]], [[Tipe objek (pemrograman berorientasi objek)#Autoboxing|autoboxing]], [[variadic function|varargs]] dan [[Anotasi Java|anotasi]]), setelah mereka diperkenalkan di bahasa C# yang mirip dan bersaingan [http://www.barrycornelius.com/papers/java5/] [http://www.levenez.com/lang/]</ref><ref name="influenced" /> [[Kotlin]], [[Nemerle]], [[Oxygene (bahasa pemrograman)|Oxygene]], Ring,<ref name="Ring programming language and other languages">{{cite web |url=http://ring-lang.sourceforge.net/doc1.6/introduction.html#ring-and-other-languages |title=Ring programming language and other languages |author=Ring Team |date=5 December 2017 |work=ring-lang.net |publisher=[[ring-lang]]}}</ref> [[Rust (bahasa pemrograman)|Rust]], [[Swift (bahasa pemrograman)|Swift]],<ref name="lattner2014">{{cite web|url=http://nondot.org/sabre/|title=Chris Lattner's Homepage|last=Lattner|first=Chris|date=2014-06-03|accessdate=2020-05-12|publisher=Chris Lattner|quote=The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.}}</ref> [[Vala (bahasa pemrograman)|Vala]], [[TypeScript]]
| platform = [[Common Language Infrastructure]]
| license = Kompilator [[Roslyn (kompilator)|Roslyn]]: [[MIT License|MIT/X11]]<ref name="auto">{{Cite web|url=https://github.com/dotnet/roslyn|title=The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.: dotnet/roslyn|date=November 13, 2019|via=GitHub}}</ref><br/>
[[.NET Core|.NET Core CLR]]: [[MIT License|MIT/X11]]<ref>{{Cite web|url=https://github.com/dotnet/coreclr|title=CoreCLR is the runtime for .NET Core. It includes the garbage collector, JIT compiler, primitive data types and low-level classes.: dotnet/coreclr|date=November 13, 2019|via=GitHub}}</ref>


Kompilator [[Mono (perangkat lunak)|Mono]]: [[GPLv3]] dan MIT/X11<br/>
== Tujuan Desain ==
[[DotGNU]]: [[GPL]] dan [[LGPL]]
| file_ext = <code>.cs</code>
| website = {{URL|http://csharp.net}}
| wikibooks = C Sharp
| versions = Lihat [[#Versi|§ Versi]]
}}
'''C#''' (dibaca: '''''see sharp''''') adalah sebuah [[bahasa pemrograman]] [[Pemrograman Berorientasi Objek|berorientasi objek (''object-oriented language'')]] yang dikembangkan oleh [[Microsoft]] sebagai bagian dari inisiatif kerangka [[Microsoft .NET|.NET Framework]]. Bahasa pemrograman ini dibuat berbasiskan bahasa [[C++]] yang telah dipengaruhi oleh aspek-aspek ataupun fitur bahasa yang terdapat pada bahasa-bahasa pemrograman lainnya seperti [[Java]], [[Delphi]], [[Visual Basic]], dan lain-lain dengan beberapa penyederhanaan. Menurut standar ''[http://www.ecma-international.org/publications/standards/Ecma-334.htm ECMA-334 C# Language Specification]'', nama C# terdiri atas sebuah huruf Latin '''[[C]]''' ([[Unicode|U+0043]]) yang diikuti oleh tanda pagar yang menandakan angka '''#''' ([[Unicode|U+0023]]). Tanda pagar # yang digunakan memang bukan tanda kres dalam seni musik (U+266F), dan tanda pagar # (U+0023) tersebut digunakan karena karakter kres dalam seni musik tidak terdapat di dalam [[papan tombol]] standar.

== Tujuan desain ==
Standar European Computer Manufacturer Association (ECMA) mendaftarkan beberapa tujuan desain dari bahasa pemrograman C#, sebagai berikut:
Standar European Computer Manufacturer Association (ECMA) mendaftarkan beberapa tujuan desain dari bahasa pemrograman C#, sebagai berikut:
* Bahasa pemrograman C# dibuat sebagai bahasa pemrograman yang bersifat ''bahasa pemrograman general-purpose'' (untuk tujuan jamak), [[pemrograman berorientasi objek|berorientasi objek]], modern, dan sederhana.
* Bahasa pemrograman C# dibuat sebagai bahasa pemrograman yang bersifat ''bahasa pemrograman general-purpose'' (untuk tujuan jamak), [[pemrograman berorientasi objek|berorientasi objek]], modern, dan sederhana.
* Bahasa pemrograman C# ditujukan untuk digunakan dalam mengembangkan komponen perangkat lunak yang mampu mengambil keuntungan dari lingkungan [[komputasi terdistribusi|terdistribusi]].
* Bahasa pemrograman C# ditujukan untuk digunakan dalam mengembangkan komponen perangkat lunak yang mampu mengambil keuntungan dari lingkungan [[komputasi terdistribusi|terdistribusi]].
* Portabilitas ''[[programmer]]'' sangatlah penting, khususnya bagi ''programmer'' yang telah lama menggunakan [[bahasa pemrograman C]] dan C++.
* Portabilitas [[pemrogram]] sangatlah penting, khususnya bagi pemrogram yang telah lama menggunakan [[bahasa pemrograman C]] dan C++.
* Dukungan untuk internasionalisasi (multi-language) juga sangat penting.
* Dukungan untuk internasionalisasi (multi-language) juga sangat penting.
* C# ditujukan agar cocok digunakan untuk menulis [[program aplikasi]] baik dalam sistem [[klien-server]] (''hosted system'') maupun sistem embedded (''embedded system''), mulai dari perangkat lunak yang sangat besar yang menggunakan [[sistem operasi]] yang canggih hingga kepada perangkat lunak yang sangat kecil yang memiliki fungsi-fungsi terdedikasi.
* C# ditujukan agar cocok digunakan untuk menulis [[program aplikasi]] baik dalam sistem [[klien-server]] (''hosted system'') maupun [[sistem terbenam]] (''embedded system''), mulai dari perangkat lunak yang sangat besar yang menggunakan [[sistem operasi]] yang canggih hingga kepada perangkat lunak yang sangat kecil yang memiliki fungsi-fungsi terdedikasi.
* Meskipun aplikasi C# ditujukan agar bersifat 'ekonomis' dalam hal kebutuhan pemrosesan dan [[memori|memori komputer]], bahasa C# tidak ditujukan untuk bersaing secara langsung dengan kinerja dan ukuran perangkat lunak yang dibuat dengan menggunakan bahasa pemrograman C dan [[bahasa rakitan]].
* Meskipun aplikasi C# ditujukan agar bersifat 'ekonomis' dalam hal kebutuhan pemrosesan dan [[memori|memori komputer]], bahasa C# tidak ditujukan untuk bersaing secara langsung dengan kinerja dan ukuran perangkat lunak yang dibuat dengan menggunakan bahasa pemrograman C dan [[bahasa rakitan]].
* Bahasa C# harus mencakup pengecekan jenis (''type checking'') yang kuat, pengecekan larik (''[[array]]''), pendeteksian terhadap percobaan terhadap penggunaan [[Variabel]]-variabel yang belum diinisialisasikan, portabilitas [[kode sumber]], dan pengumpulan sampah (''[[pengumpulan sampah (ilmu komputer)|garbage collection]]'') secara otomatis.
* Bahasa C# harus mencakup pengecekan jenis (''type checking'') yang kuat, pengecekan larik (''[[array]]''), pendeteksian terhadap percobaan terhadap penggunaan [[Variabel]]-variabel yang belum diinisialisasikan, portabilitas [[kode sumber]], dan pengumpulan sampah (''[[pengumpulan sampah (ilmu komputer)|garbage collection]]'') secara otomatis.


== Sejarah ==
== Sejarah ==
Pada akhir dekade 1990-an, [[Microsoft]] membuat program Microsoft Visual J++ sebagai sebuah langkah percobaan untuk menggunakan [[Java]] di dalam sistem operasi Windows untuk meningkatkan antarmuka dari Micrososafsafsdafsafsafasfft Component Object Model (COM). Akan tetapi, akibat masalah dengan pemegang [[hak cipta]] bahasa pemrograman [[Java]], [[Sun Microsystems]], Microsoft pun menghentikan pengembangan J++, dan beralih untuk membuat pengganti J++, kompilernya dan [[mesin virtual]]nya sendiri dengan menggunakan sebuah [[bahasa pemrograman]] yang bersifat ''general-purpose''. Untuk menangani proyek ini, Microsoft merekrut Anders Helsberg, yang merupakan mantan karyawan [[Borland]] yang membuat bahasa [[Turbo Pascal]], dan [[Borland Delphi]], yang juga mendesain Windows Foundation Classes (WFC) yang digunakan di dalam J++. Sebagai hasil dari usaha tersebut, C# pun pertama kali diperkenalkan pada bulan Juli 2000 sebagai sebuah bahasa pemrograman modern berorientasi objek yang menjadi sebuah bahasa pemrograman utama di dalam pengembangan di dalam ''platform'' [[Microsoft .NET Framework]].
Pada akhir dekade 1990-an, [[Microsoft]] membuat program Microsoft Visual J++ sebagai sebuah langkah percobaan untuk menggunakan [[Java]] di dalam sistem operasi Windows untuk meningkatkan antarmuka dari Microsoft Component Object Model (COM). Akan tetapi, akibat masalah dengan pemegang [[hak cipta]] bahasa pemrograman [[Java]], [[Sun Microsystems]], Microsoft pun menghentikan pengembangan J++, dan beralih untuk membuat pengganti J++, kompilernya dan [[mesin virtual]]nya sendiri dengan menggunakan sebuah [[bahasa pemrograman]] yang bersifat ''general-purpose''. Untuk menangani proyek ini, Microsoft merekrut Anders Helsberg, yang merupakan mantan karyawan [[Borland]] yang membuat bahasa [[Turbo Pascal]], dan [[Borland Delphi]], yang juga mendesain Windows Foundation Classes (WFC) yang digunakan di dalam J++. Sebagai hasil dari usaha tersebut, C# pun pertama kali diperkenalkan pada bulan Juli 2000 sebagai sebuah bahasa pemrograman modern berorientasi objek yang menjadi sebuah bahasa pemrograman utama di dalam pengembangan di dalam platform [[Microsoft .NET Framework]].


Pengalaman Helsberg sebelumnya dalam pendesain bahasa pemrograman seperti Visual J++, [[Delphi]], [[Turbo Pascal]]) dengan mudah dilihat dalam [[sintaksis]] bahasa C#, begitu pula halnya pada inti ''[[Common Language Runtime]]'' (CLR). Dari kutipan atas ''interview'' dan makalah-makalah teknisnya ia menyebutkan kelemahan-kelemahan yang terdapat pada bahasa pemrograman yang umum digunakan saat ini, misalnya [[C++]], [[Java]], [[Delphi]], ataupun [[Smalltalk]]. Kelemahan-kelemahan yang dikemukakannya itu yang menjadi basis CLR sebagai bentukan baru yang menutupi kelemahan-kelemahan tersebut, dan pada akhirnya memengaruhi desain pada bahasa C# itu sendiri. Ada kritik yang menyatakan C# sebagai bahasa yang berbagi akar dari bahasa-bahasa pemrograman lain. <ref>[http://www.levenez.com/lang/history.html Bagan sejarah bahasa pemrograman]</ref> Fitur-fitur yang diambilnya dari bahasa C++ dan Java adalah desain berorientasi objek, seperti ''garbage collection'', ''reflection'', akar kelas (''root class''), dan juga penyederhanaan terhadap pewarisan jamak (''multiple inheritance''). Fitur-fitur tersebut di dalam C# kini telah diaplikasikan terhadap [[iterasi]], [[properti]], kejadian (''event''), ''[[metadata]]'', dan konversi antara tipe-tipe sederhana dan juga objek.
Pengalaman Helsberg sebelumnya dalam pendesain bahasa pemrograman seperti Visual J++, [[Delphi]], [[Turbo Pascal]]) dengan mudah dilihat dalam [[sintaksis]] bahasa C#, begitu pula halnya pada inti ''[[Common Language Runtime]]'' (CLR). Dari kutipan atas wawancara dan makalah-makalah teknisnya ia menyebutkan kelemahan-kelemahan yang terdapat pada bahasa pemrograman yang umum digunakan saat ini, misalnya [[C++]], [[Java]], [[Delphi]], ataupun [[Smalltalk]]. Kelemahan-kelemahan yang dikemukakannya itu yang menjadi basis CLR sebagai bentukan baru yang menutupi kelemahan-kelemahan tersebut, dan pada akhirnya memengaruhi desain pada bahasa C# itu sendiri. Ada kritik yang menyatakan C# sebagai bahasa yang berbagi akar dari bahasa-bahasa pemrograman lain.<ref>[http://www.levenez.com/lang/history.html Bagan sejarah bahasa pemrograman]</ref> Fitur-fitur yang diambilnya dari bahasa C++ dan Java adalah desain berorientasi objek, seperti ''garbage collection'', ''reflection'', akar kelas (''root class''), dan juga penyederhanaan terhadap pewarisan jamak (''multiple inheritance''). Fitur-fitur tersebut di dalam C# kini telah diaplikasikan terhadap [[iterasi]], [[properti]], kejadian (''event''), [[metadata]], dan konversi antara tipe-tipe sederhana dan juga objek.


C# didisain untuk memenuhi kebutuhan akan sintaksis C++ yang lebih ringkas dan ''[[Rapid Application Development]]'' yang 'tanpa batas' (dibandingkan dengan RAD yang 'terbatas' seperti yang terdapat pada [[Delphi]] dan [[Visual Basic]]).
C# didesain untuk memenuhi kebutuhan akan sintaksis C++ yang lebih ringkas dan ''[[Rapid Application Development]]'' yang 'tanpa batas' (dibandingkan dengan RAD yang 'terbatas' seperti yang terdapat pada [[Delphi]] dan [[Visual Basic]]).


Agar mampu mempromosikan penggunaan besar-besaran dari bahasa C#, Microsoft, dengan dukungan dari [[Intel Corporation]] dan [[Hewlett-Packard]], mencoba mengajukan standardisasi terhadap bahasa C#. Akhirnya, pada bulan [[Desember]] [[2001]], standar pertama pun diterima oleh European Computer Manufacturers Association atau ''Ecma International'' (ECMA), dengan nomor standar [http://www.ecma-international.org/publications/standards/Ecma-334.htm ECMA-334]. Pada Desember [[2002]], standar kedua pun diadopsi oleh ECMA, dan tiga bulan kemudian diterima oleh ''[[International Organization for Standardization]]'' (ISO), dengan nomor standar [http://standards.iso.org/ittf/PubliclyAvailableStandards/c042926_ISO_IEC_23270_2006(E).zip ISO/IEC 23270:2006].
Agar mampu mempromosikan penggunaan besar-besaran dari bahasa C#, Microsoft, dengan dukungan dari [[Intel Corporation]] dan [[Hewlett-Packard]], mencoba mengajukan standarisasi terhadap bahasa C#. Akhirnya, pada bulan [[Desember]] [[2001]], standar pertama pun diterima oleh European Computer Manufacturers Association atau ''Ecma International'' (ECMA), dengan nomor standar [http://www.ecma-international.org/publications/standards/Ecma-334.htm ECMA-334]. Pada Desember [[2002]], standar kedua pun diadopsi oleh ECMA, dan tiga bulan kemudian diterima oleh ''[[International Organization for Standardization]]'' (ISO), dengan nomor standar [http://standards.iso.org/ittf/PubliclyAvailableStandards/c042926_ISO_IEC_23270_2006(E).zip ISO/IEC 23270:2006].


== Fitur-fitur bahasa ==
== Fitur-fitur bahasa ==
C# kadang-kadang dapat disebutkan sebagai bahasa pemrograman yang paling mencerminkan dasar dari CLR dimana semua program-program .NET berjalan, dan bahasa ini sangat bergantung pada kerangka tersebut sebab ia secara spesifik didisain untuk mengambil manfaat dari fitur-fitur yang tersedia pada CLR.
C# kadang-kadang dapat disebutkan sebagai bahasa pemrograman yang paling mencerminkan dasar dari CLR dimana semua program .NET berjalan, dan bahasa ini sangat bergantung pada kerangka tersebut karena ia secara spesifik didesain untuk mengambil manfaat dari fitur-fitur yang tersedia pada CLR.
<!--
<!--
===Sistem [[tipe data]] yang padu===
===Sistem [[tipe data]] yang padu===
Bahasa C# memiliki tipe data yang padu (unified type system). Ini berarti, semua tipe data, termasuk tipe data primitif seperti halnya integer (bilangan bulat) merupakan anak kelas dari kelas System.Object. Sebagai contoh, setiap tipe data memiliki metode ToString(). Untuk alasan kinerja, tipe-tipe data primitif (dan tipe-tipe nilai pada umumnya) dialokasikan secara internal di dalam ''[[stack]]''.
Bahasa C# memiliki tipe data yang padu (unified type system). Ini berarti, semua tipe data, termasuk tipe data primitif seperti halnya integer (bilangan bulat) merupakan anak kelas dari kelas System.Object. Sebagai contoh, setiap tipe data memiliki metode ToString(). Untuk alasan kinerja, tipe-tipe data primitif (dan tipe-tipe nilai pada umumnya) dialokasikan secara internal di dalam ''[[stack]]''.



C# has a unified type system. This means that all types, including primitives such as integers, are subclasses of the System.Object class. For example, every type inherits a ToString() method. For performance reasons, primitive types (and value types in general) are internally allocated on the stack. Boxing and unboxing allow one to translate primitive data to and from their object form. Effectively, this makes the primitive types a subtype of the Object type. Primitive types can also define methods (e.g., 42.ToString() calls the ToString() method on an integer), and in the programmer's perspective behave like any other object.
C# has a unified type system. This means that all types, including primitives such as integers, are subclasses of the System.Object class. For example, every type inherits a ToString() method. For performance reasons, primitive types (and value types in general) are internally allocated on the stack. Boxing and unboxing allow one to translate primitive data to and from their object form. Effectively, this makes the primitive types a subtype of the Object type. Primitive types can also define methods (e.g., 42.ToString() calls the ToString() method on an integer), and in the programmer's perspective behave like any other object.


C# allows the programmer to create user-defined value types, using the struct keyword. From the programmer's perspective, they can be seen as lightweight classes. Unlike regular classes, and like the standard primitives, such value types are allocated on the stack rather than on the heap. They can also be part of an object (either as a field or boxed), or stored in an array, without the memory indirection that normally exists for class types. Structs also come with a number of limitations. Because structs have no notion of a null value and can be used in arrays without initialization, they are implicitly initialized to default values (normally by filling the struct memory space with zeroes, but the programmer can specify explicit default values to override this). The programmer can define additional constructors with one or more arguments. This also means that structs lack a virtual method table, and because of that (and the fixed memory footprint), they cannot allow inheritance (but can implement interfaces).
C# allows the programmer to create user-defined value types, using the struct keyword. From the programmer's perspective, they can be seen as lightweight classes. Unlike regular classes, and like the standard primitives, such value types are allocated on the stack rather than on the heap. They can also be part of an object (either as a field or boxed), or stored in an array, without the memory indirection that normally exists for class types. Structs also come with a number of limitations. Because structs have no notion of a null value and can be used in arrays without initialization, they are implicitly initialized to default values (normally by filling the struct memory space with zeroes, but the programmer can specify explicit default values to override this). The programmer can define additional constructors with one or more arguments. This also means that structs lack a virtual method table, and because of that (and the fixed memory footprint), they cannot allow inheritance (but can implement interfaces).



-->
-->

== Catatan ==
{{notelist}}

== Referensi ==
{{reflist|30em|refs=
<ref name="dynamic">{{cite web |url = http://code.msdn.microsoft.com/csharpfuture/Release/ProjectReleases.aspx?ReleaseId=1686 |title = New features in C# 4.0 |first = Mads |last = Torgersen |date = October 27, 2008 |publisher = [[Microsoft]] |accessdate = October 28, 2008 }}</ref>

<ref name="influenced by CPP">{{cite journal |last = Naugler |first = David |date=May 2007 |title = C# 2.0 for C++ and Java programmer: conference workshop |journal = Journal of Computing Sciences in Colleges |volume = 22 |issue = 5 |quote = Although C# has been strongly influenced by Java it has also been strongly influenced by C++ and is best viewed as a descendant of both C++ and Java.}}</ref>

<ref name="influenced by op">{{cite magazine |url = http://www.computerworld.com.au/article/261958/a-z_programming_languages_c_/?pp=7 |title = The A-Z of Programming Languages: C# |date = October 1, 2008 |magazine = [[Computerworld]] |first = Naomi |last = Hamilton |accessdate = February 12, 2010 |quote = We all stand on the shoulders of giants here and every language builds on what went before it so we owe a lot to C, C++, Java, Delphi, all of these other things that came before us. ([[Anders Hejlsberg]]) |archive-date = 2010-03-24 |archive-url = https://web.archive.org/web/20100324124903/http://www.computerworld.com.au/article/261958/a-z_programming_languages_c_/?pp=7 |dead-url = yes }}</ref>

<ref name="influenced">{{cite web |url = http://www.barrycornelius.com/papers/java5/onefile/ |title = Java 5 catches up with C# |date = December 1, 2005 |publisher = [[University of Oxford]] Computing Services |first = Barry |last = Cornelius |accessdate = June 18, 2014 |quote = In my opinion, it is C# that has caused these radical changes to the Java language. ([[Barry Cornelius]]) }}</ref>
}}


== Pranala luar ==
== Pranala luar ==
* {{en}} [http://msdn.microsoft.com/vcsharp/team/language/default.aspx C# Language (MSDN)]
* {{en}} [http://msdn.microsoft.com/vcsharp/team/language/default.aspx Bahasa C# (MSDN)]
* {{en}} [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/CSharpSpecStart.asp C# Specification]
* {{en}} [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/CSharpSpecStart.asp Spesifikasi C#]
* {{en}} [http://www.ecma-international.org/publications/files/ecma-st/ECMA-334.pdf ECMA-334 C# Language Specification (.pdf)]
* {{en}} [http://www.ecma-international.org/publications/files/ecma-st/ECMA-334.pdf Spesifikasi bahasa ECMA-334 C# (.pdf)]
* {{en}} [http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=36768 ISO C# Language Specification (for purchase)]
* {{en}} [http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=36768 Spesifikasi bahasa ISO C#]
* {{en}} [http://msdn.microsoft.com/vcsharp/ Microsoft Visual C# .NET]
* {{en}} [http://msdn.microsoft.com/vcsharp/ Microsoft Visual C# .NET]
* {{en}} [http://www.fsharp.net F#]
* {{en}} [http://www.fsharp.net F#] {{Webarchive|url=https://web.archive.org/web/20081119161341/http://www.fsharp.net/ |date=2008-11-19 }}
* {{en}} [http://www.computer-books.us/csharp.php Computer-Books.us] - A collection of C# books available for free download.
* {{en}} [http://www.csharphelp.com Diskusi C#]
* {{en}} [http://www.csharpfriends.com Situs komunitas C#] {{Webarchive|url=https://web.archive.org/web/20100206115752/http://www.csharpfriends.com/ |date=2010-02-06 }}
* {{en}} [http://www.csharphelp.com C# Discussions]
* {{en}} [http://www.mono-project.com/using/mcs.html MCS: Kompiler Mono C#] {{Webarchive|url=https://web.archive.org/web/20081119233745/http://www.mono-project.com/using/mcs.html |date=2008-11-19 }}
* {{en}} [http://www.csharpfriends.com C# Community Site]
* {{en}} [http://www.mono-project.com/using/mcs.html MCS: The Mono C# compiler]
* {{en}} [http://www.southern-storm.com.au/portable_net.html Portable.NET]
* {{en}} [http://www.southern-storm.com.au/portable_net.html Portable.NET]
* {{en}} [http://www.borland.com/csharpbuilder/ Borland's C# Builder for the Microsoft .NET Framework]
* {{en}} [http://www.icsharpcode.net SharpDevelop: Open Source C# IDE]
* {{en}} [http://www.icsharpcode.net SharpDevelop: Open Source C# IDE]
* {{en}} [http://msdn.microsoft.com/vstudio/express/visualcsharp Microsoft Visual C# Express Edition], [http://msdn.microsoft.com/vstudio/express/visualcsharp/download/ downloadable for free]
* {{en}} [http://msdn.microsoft.com/vstudio/express/visualcsharp Microsoft Visual C# Express Edition], [http://msdn.microsoft.com/vstudio/express/visualcsharp/download/ dapat diunduh dengan gratis]
* {{en}} news://msnews.microsoft.com/microsoft.public.dotnet.languages.csharp
* {{en}} news://msnews.microsoft.com/microsoft.public.dotnet.languages.csharp
* {{id}} [http://www.netindonesia.net/ Komunitas programmer .NET Indonesia]
* {{id}} [http://www.netindonesia.net/ Komunitas programmer .NET Indonesia]
* {{en}}[http://www.meshplex.org/wiki/C_Sharp_Tutorial Full C# Online book]
* {{en}}[http://www.meshplex.org/wiki/C_Sharp_Tutorial Full C# Online book] {{Webarchive|url=https://web.archive.org/web/20080129022511/http://www.meshplex.org/wiki/C_Sharp_Tutorial |date=2008-01-29 }}
* {{id}} [http://www.pecollege.net/ PE College-Tutorial Gratis Pemrograman C# dalam Bentuk Video]
* {{id}} [http://www.pecollege.net/ PE College-Tutorial Gratis Pemrograman C# dalam Bentuk Video].

== Referensi ==
{{reflist}}


{{Daftar bahasa pemrograman}}
{{Daftar bahasa pemrograman}}
{{Authority control}}
{{bahasa-komputer-stub}}
.


[[Kategori:Bahasa pemrograman]]
[[Kategori:Bahasa pemrograman]]
[[Kategori:Bahasa pemrograman berorientasi objek]]
[[Kategori:Bahasa pemrograman berorientasi objek]]
[[Kategori:Bahasa pemrograman yang dibuat pada tahun 2000]]
[[Kategori:Bahasa pemrograman dengan standar ISO]]
[[Kategori:Standar ISO]]
[[Kategori:Perangkat lunak 2000]]
[[Kategori:Bahasa pemrograman Microsoft]]

Revisi terkini sejak 24 Oktober 2023 04.58

C Sharp
ParadigmaTerstruktur, imperatif, berorientasi objek, berbasis kejadian, task-driven, fungsional, generic, reflektif, bersamaan
KeluargaC
Dirancang olehAnders Hejlsberg (Microsoft)
PengembangMads Torgersen (Microsoft)
Rilis perdana2000; 24 tahun lalu (2000)[1]
Rilis stabil
12.0[2] Sunting di Wikidata / 14 November 2023; 6 bulan lalu (14 November 2023)
Tipe sistemStatis, dinamis,[3] kuat, aman, nominatif, diinferens sebagian
PlatformCommon Language Infrastructure
LisensiKompilator Roslyn: MIT/X11[4]

.NET Core CLR: MIT/X11[5]

Kompilator Mono: GPLv3 dan MIT/X11

DotGNU: GPL dan LGPL
Ekstensi nama berkas.cs
Situs webcsharp.net
Repositorihttps://docs.microsoft.com/en-us/dotnet/csharp/, https://docs.microsoft.com/de-de/dotnet/csharp/, https://docs.microsoft.com/ja-jp/dotnet/csharp/, https://docs.microsoft.com/fr-fr/dotnet/csharp/, https://docs.microsoft.com/it-it/dotnet/csharp/
Implementasi utama
Dialek
, Spec#, Polyphonic C#, Enhanced C#
Terpengaruh oleh
C++,[6] , Eiffel, F#,[a] Haskell, Icon, J#, J++, Java,[6] ML, Modula-3, Object Pascal[7]
Mempengaruhi
Chapel,[8] Clojure,[9] Crystal,[10] D, J#, Dart,[11] F#, Hack, Java,[12][13] Kotlin, Nemerle, Oxygene, Ring,[14] Rust, Swift,[15] Vala, TypeScript
Sunting kotak info
Sunting kotak info • L • B
Info templat
Bantuan penggunaan templat ini

C# (dibaca: see sharp) adalah sebuah bahasa pemrograman berorientasi objek (object-oriented language) yang dikembangkan oleh Microsoft sebagai bagian dari inisiatif kerangka .NET Framework. Bahasa pemrograman ini dibuat berbasiskan bahasa C++ yang telah dipengaruhi oleh aspek-aspek ataupun fitur bahasa yang terdapat pada bahasa-bahasa pemrograman lainnya seperti Java, Delphi, Visual Basic, dan lain-lain dengan beberapa penyederhanaan. Menurut standar ECMA-334 C# Language Specification, nama C# terdiri atas sebuah huruf Latin C (U+0043) yang diikuti oleh tanda pagar yang menandakan angka # (U+0023). Tanda pagar # yang digunakan memang bukan tanda kres dalam seni musik (U+266F), dan tanda pagar # (U+0023) tersebut digunakan karena karakter kres dalam seni musik tidak terdapat di dalam papan tombol standar.

Tujuan desain[sunting | sunting sumber]

Standar European Computer Manufacturer Association (ECMA) mendaftarkan beberapa tujuan desain dari bahasa pemrograman C#, sebagai berikut:

  • Bahasa pemrograman C# dibuat sebagai bahasa pemrograman yang bersifat bahasa pemrograman general-purpose (untuk tujuan jamak), berorientasi objek, modern, dan sederhana.
  • Bahasa pemrograman C# ditujukan untuk digunakan dalam mengembangkan komponen perangkat lunak yang mampu mengambil keuntungan dari lingkungan terdistribusi.
  • Portabilitas pemrogram sangatlah penting, khususnya bagi pemrogram yang telah lama menggunakan bahasa pemrograman C dan C++.
  • Dukungan untuk internasionalisasi (multi-language) juga sangat penting.
  • C# ditujukan agar cocok digunakan untuk menulis program aplikasi baik dalam sistem klien-server (hosted system) maupun sistem terbenam (embedded system), mulai dari perangkat lunak yang sangat besar yang menggunakan sistem operasi yang canggih hingga kepada perangkat lunak yang sangat kecil yang memiliki fungsi-fungsi terdedikasi.
  • Meskipun aplikasi C# ditujukan agar bersifat 'ekonomis' dalam hal kebutuhan pemrosesan dan memori komputer, bahasa C# tidak ditujukan untuk bersaing secara langsung dengan kinerja dan ukuran perangkat lunak yang dibuat dengan menggunakan bahasa pemrograman C dan bahasa rakitan.
  • Bahasa C# harus mencakup pengecekan jenis (type checking) yang kuat, pengecekan larik (array), pendeteksian terhadap percobaan terhadap penggunaan Variabel-variabel yang belum diinisialisasikan, portabilitas kode sumber, dan pengumpulan sampah (garbage collection) secara otomatis.

Sejarah[sunting | sunting sumber]

Pada akhir dekade 1990-an, Microsoft membuat program Microsoft Visual J++ sebagai sebuah langkah percobaan untuk menggunakan Java di dalam sistem operasi Windows untuk meningkatkan antarmuka dari Microsoft Component Object Model (COM). Akan tetapi, akibat masalah dengan pemegang hak cipta bahasa pemrograman Java, Sun Microsystems, Microsoft pun menghentikan pengembangan J++, dan beralih untuk membuat pengganti J++, kompilernya dan mesin virtualnya sendiri dengan menggunakan sebuah bahasa pemrograman yang bersifat general-purpose. Untuk menangani proyek ini, Microsoft merekrut Anders Helsberg, yang merupakan mantan karyawan Borland yang membuat bahasa Turbo Pascal, dan Borland Delphi, yang juga mendesain Windows Foundation Classes (WFC) yang digunakan di dalam J++. Sebagai hasil dari usaha tersebut, C# pun pertama kali diperkenalkan pada bulan Juli 2000 sebagai sebuah bahasa pemrograman modern berorientasi objek yang menjadi sebuah bahasa pemrograman utama di dalam pengembangan di dalam platform Microsoft .NET Framework.

Pengalaman Helsberg sebelumnya dalam pendesain bahasa pemrograman seperti Visual J++, Delphi, Turbo Pascal) dengan mudah dilihat dalam sintaksis bahasa C#, begitu pula halnya pada inti Common Language Runtime (CLR). Dari kutipan atas wawancara dan makalah-makalah teknisnya ia menyebutkan kelemahan-kelemahan yang terdapat pada bahasa pemrograman yang umum digunakan saat ini, misalnya C++, Java, Delphi, ataupun Smalltalk. Kelemahan-kelemahan yang dikemukakannya itu yang menjadi basis CLR sebagai bentukan baru yang menutupi kelemahan-kelemahan tersebut, dan pada akhirnya memengaruhi desain pada bahasa C# itu sendiri. Ada kritik yang menyatakan C# sebagai bahasa yang berbagi akar dari bahasa-bahasa pemrograman lain.[16] Fitur-fitur yang diambilnya dari bahasa C++ dan Java adalah desain berorientasi objek, seperti garbage collection, reflection, akar kelas (root class), dan juga penyederhanaan terhadap pewarisan jamak (multiple inheritance). Fitur-fitur tersebut di dalam C# kini telah diaplikasikan terhadap iterasi, properti, kejadian (event), metadata, dan konversi antara tipe-tipe sederhana dan juga objek.

C# didesain untuk memenuhi kebutuhan akan sintaksis C++ yang lebih ringkas dan Rapid Application Development yang 'tanpa batas' (dibandingkan dengan RAD yang 'terbatas' seperti yang terdapat pada Delphi dan Visual Basic).

Agar mampu mempromosikan penggunaan besar-besaran dari bahasa C#, Microsoft, dengan dukungan dari Intel Corporation dan Hewlett-Packard, mencoba mengajukan standarisasi terhadap bahasa C#. Akhirnya, pada bulan Desember 2001, standar pertama pun diterima oleh European Computer Manufacturers Association atau Ecma International (ECMA), dengan nomor standar ECMA-334. Pada Desember 2002, standar kedua pun diadopsi oleh ECMA, dan tiga bulan kemudian diterima oleh International Organization for Standardization (ISO), dengan nomor standar ISO/IEC 23270:2006.

Fitur-fitur bahasa[sunting | sunting sumber]

C# kadang-kadang dapat disebutkan sebagai bahasa pemrograman yang paling mencerminkan dasar dari CLR dimana semua program .NET berjalan, dan bahasa ini sangat bergantung pada kerangka tersebut karena ia secara spesifik didesain untuk mengambil manfaat dari fitur-fitur yang tersedia pada CLR.

Catatan[sunting | sunting sumber]

  1. ^ untuk async

Referensi[sunting | sunting sumber]

  1. ^ "InfoQ eMag: A Preview of C# 7". 
  2. ^ "Announcing C# 12". Diakses tanggal 18 November 2023. 
  3. ^ Torgersen, Mads (October 27, 2008). "New features in C# 4.0". Microsoft. Diakses tanggal October 28, 2008. 
  4. ^ "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.: dotnet/roslyn". November 13, 2019 – via GitHub. 
  5. ^ "CoreCLR is the runtime for .NET Core. It includes the garbage collector, JIT compiler, primitive data types and low-level classes.: dotnet/coreclr". November 13, 2019 – via GitHub. 
  6. ^ a b Naugler, David (May 2007). "C# 2.0 for C++ and Java programmer: conference workshop". Journal of Computing Sciences in Colleges. 22 (5). Although C# has been strongly influenced by Java it has also been strongly influenced by C++ and is best viewed as a descendant of both C++ and Java. 
  7. ^ Hamilton, Naomi (October 1, 2008). "The A-Z of Programming Languages: C#". Computerworld. Diarsipkan dari versi asli tanggal 2010-03-24. Diakses tanggal February 12, 2010. We all stand on the shoulders of giants here and every language builds on what went before it so we owe a lot to C, C++, Java, Delphi, all of these other things that came before us. (Anders Hejlsberg) 
  8. ^ "Chapel spec (Acknowlegements)" (PDF). Cray Inc. 2015-10-01. Diakses tanggal 2016-01-14. 
  9. ^ "Rich Hickey Q&A by Michael Fogus". Diarsipkan dari versi asli tanggal 2017-01-11. Diakses tanggal 2017-01-11. 
  10. ^ Borenszweig, Ary. "Crystal 0.18.0 released!". It's heavily inspired by Ruby, and other languages (like C#, Go and Python). 
  11. ^ "Web Languages and VMs: Fast Code is Always in Fashion. (V8, Dart) - Google I/O 2013". Diakses tanggal 22 December 2013. 
  12. ^ Java 5.0 menambahkan beberapa fitur bahasa baru (enhanced for loop, autoboxing, varargs dan anotasi), setelah mereka diperkenalkan di bahasa C# yang mirip dan bersaingan [1] [2]
  13. ^ Cornelius, Barry (December 1, 2005). "Java 5 catches up with C#". University of Oxford Computing Services. Diakses tanggal June 18, 2014. In my opinion, it is C# that has caused these radical changes to the Java language. (Barry Cornelius) 
  14. ^ Ring Team (5 December 2017). "Ring programming language and other languages". ring-lang.net. ring-lang. 
  15. ^ Lattner, Chris (2014-06-03). "Chris Lattner's Homepage". Chris Lattner. Diakses tanggal 2020-05-12. The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list. 
  16. ^ Bagan sejarah bahasa pemrograman

Pranala luar[sunting | sunting sumber]