ภาษาซีชาร์ป

**ภาษาซีชาร์ป** (C*#* Programming Language)  เป็นภาษาโปรแกรมระดับสูง ที่ใช้ระบบชนิดข้อมูลแบบรัดกุม (strong typing) และสนับสนุนการเขียนโปรแกรมเชิงคำสั่ง การเขียนโปรแกรมเชิงประกาศ การเขียนโปรแกรมเชิงฟังก์ชัน การเขียนโปรแกรมเชิงกระบวนการ การเขียนโปรแกรมเชิงวัตถุ (แบบคลาส) และการเขียนโปรแกรมเชิงส่วนประกอบ 

ภาษานี้พัฒนาเริ่มแรกโดยโดยมีอนัส ไฮลส์เบิร์ก (Anders Hejlsberg) จากบริษัทไมโครซอฟท์ ในปี พ.ศ. 2543 ต่อมามีการรับรองให้เป็นมาตรฐานโดยเอ็กมาอินเตอร์เนชันแนล (ECMA-334) ในปี พ.ศ. 2545 และองค์การระหว่างประเทศว่าด้วยการมาตรฐาน (ISO/IEC 23270) ในปี พ.ศ. 2546 ไมโครซอฟท์ได้เปิดตัวภาษาซีชาร์ปพร้อมกับดอตเน็ตเฟรมเวิร์ก และ Visual Studio ซิ่งเป็นผลิตภัณฑ์โคลสซอร์ส (closed-source) ทั้งหมด เนื่องจากตอนนั้นไมโครซอฟต์ไม่มีผลิตภัณฑ์ที่เป็นโอเพ่นซอร์ส ต่อมาไมโครซอฟท์ได้เปิดตัว Visual Studio Code, Roslyn และ ดอตเน็ตคอร์ ซี่งทั้งหมตนั้นรองรับภาษาซีชาร์ป เป็นซอฟต์แวร์ฟรีและโอเพ่นซอร์ส และทำงานแบบครอสแพลตฟอร์ม

ข้อมูลเดือนมกราคมปี พ.ศ. 2568 ภาษาซีชาร์ปมีรุ่นล่าสุดคือ C# 13.0 ที่ออกมาพร้อมกับ .NET 9.0

## ตัวอย่าง
ตัวอย่างต่อไปนี้ คือตัวอย่างโปรแกรม Hello world ใน C*#* ซึ่งใช้ฟีเจอร์ top-level statement ที่เริ่มมีให้ใช้ได้ตั้งแต่ C*#* 9.0
```csharp
using System;

Console.WriteLine("Hello, world!");
```
แต่สำหรับ C*#* 8.0 หรือก่อนหน้านั้น การเขียนจะต้องเป็นฟังก์ชันที่อยู่ในคลาสดังทำนองนี้


```csharp
public class ExampleClass
{
    public static void Main()
    {
        System.Console.WriteLine("Hello, world!");
    }
}
```


ผลของการทำงานคือมีการแสดงคำว่า *Hello, world!* ในหน้าต่างคอนโซล โดยในแต่ละบรรทัดมีความหมายดังนี้:


```csharp
public class ExampleClass
```


บรรทัดนี้คือการประกาศคลาส โดย *public* หมายถึงวัตถุที่สร้างในโครงการ (project) อื่น ๆ สามารถเข้าใช้งานคลาสนี้ได้ ไม่จำกัด ข้อมูลต่าง ๆ ที่อยู่ผ่านใต้หน่วยของบรรทัดนี้ จะใช้ในการทำงานของคลาสนี้


```csharp
public static void Main()
```


บรรทัดนี้เป็นจุดที่ใช้ในการเริ่มการทำงานของโปรแกรม เมื่อโปรแกรมทำงาน โดยสามารถเรียกใช้จากโปรแกรมอื่นได้โดยการใช้ไวยากรณ์ `ExampleClass.Main()`.  (`public static void` เป็นส่วนที่ใช้ในการทำงาน ซึ่งต้องเรียนรู้ในการเขียนขั้นสูง)


```csharp
System.Console.WriteLine("Hello, world!");
```


ในบรรทัดนี้ เป็นการทำงาน เพื่อแสดงผลออกมา *Console* คือโปรแกรมระบบ, ซึ่งก็คือ โปรแกรมระบบแบบสั่งคำสั่งที่ละบรรทัด (เช่น DOS) ที่สามารถรับข้อมูลและแสดงผลเป็นข้อความได้. จากที่เราเขียนโปรแกรมจะทำการเรียก *Console* โดยใช้คำสั่ง *WriteLine*, ซึ่งทำให้สามารถส่งค่าข้อความออกมาแสดงผลได้

## มาตรฐาน
ไมโครซอฟท์ส่งมาตรฐานภาษาซีชาร์ปให้กับ Ecma และได้รับการยอมรับเป็นมาตรฐาน ECMA ในเดือนธันวาคม ค.ศ. 2001 ในชื่อว่า *ECMA-334 C# Language Specification* ใน ค.ศ. 2003 ภาษาซีชาร์ปได้รับการยอมรับเป็นมาตรฐาน ISO (ISO/IEC 23270)

มาตรฐาน ISO/IEC 23270:2003 ระบุรูปแบบ และกำหนดการแปล (ตีความ) โปรแกรมที่เขียนด้วยภาษาซีชาร์ป โดยตัวมาตรฐานได้ระบุ:
* รูปแบบการนำเสนอ (the representation of C*#* programs)
* ไวยากรณ์ (the syntax and constraints of the C*#* language)
* กฎการตีความสำหรับแปลโปรแกรมภาษาซีชาร์ป (the semantic rules for interpreting C# programs)
* ข้อห้าม และข้อจำกัด ของเครื่องมือที่สร้างตามข้อกำหนดของซีชาร์ป (the restrictions and limits imposed by a conforming implementation of C*#*)

ISO/IEC 23270:2003 **ไม่ได้**ระบุ:
* กลไกในการแปลงโปรแกรมภาษาซีชาร์ป เพื่อใช้ในระบบประมวลผลข้อมูล (the mechanism by which C*#* programs are transformed for use by a data-processing system)
* กลไกในการเรียกให้โปรแกรมภาษาซีชาร์ปทำงาน เพื่อใช้ในระบบประมวลผลข้อมูล (the mechanism by which C*#* applications are invoked for use by a data-processing system)
* กลไกในการแปลงข้อมูลเข้า เพื่อใช้กับโปรแกรมภาษาซีชาร์ป (the mechanism by which input data are transformed for use by a C*#* application)
* กลไกในการแปลงข้อมูลออก หลังจากถูกประมวลผลโดยโปรแกรมภาษาซีชาร์ป (the mechanism by which output data are transformed after being produced by a C*#* application)
* the size or complexity of a program and its data that will exceed the capacity of any specific data-processing system or the capacity of a particular processor;
* all minimal requirements of a data-processing system that is capable of supporting a conforming implementation.

นอกจากนี้ตัวมาตรฐานไม่ได้กล่าวถึงโครงสร้างข้อมูล และตัวไลบรารีกลางของ .NET Framework ซึ่งเป็นหัวใจสำคัญของการเขียนโปรแกรมด้วยภาษาซีชาร์ปเลย

## หมายเหตุ

## อ้างอิง

## แหล่งข้อมูลอื่น
* Microsoft Developer Network - Visual C#
* เทคนิคการเขียนโปรแกรมขั้นสูง C# 
* บทความ (ภาษาไทย) สอนภาษา C#
* บทความ (ภาษาไทย) สอนภาษา C# และอื่น ๆ  ที่เกี่ยวข้อง

หมวดหมู่:ภาษาระบบโครงสร้างพื้นฐานภาษาร่วม
หมวดหมู่:ตระกูลภาษาซี
หมวดหมู่:ภาษาโปรแกรมแบบคลาส
หมวดหมู่:ภาษาโปรแกรมที่มีชนิดข้อมูลแบบอพลวัต
หมวดหมู่:ภาษาโปรแกรมในภาวะพร้อมกัน
หมวดหมู่:ตระกูลภาษาซีชาร์ป
หมวดหมู่:โครงการโมโน
หมวดหมู่:ภาษาโปรแกรมเชิงวัตถุ
หมวดหมู่:มาตรฐานไออีซี
หมวดหมู่:มาตรฐานไอเอสโอ
หมวดหมู่:ซอฟต์แวร์ในปี พ.ศ. 2543