Nguồn gốc của tên ngôn ngữ C #


75

Tôi là một lập trình viên C và C ++ và hiện đang cố gắng học C #. Tôi đã mua cuốn sách Professional C # của Wrox.

Trong khi di chuyển từ C sang C ++, tôi đã nghi ngờ tại sao lại ++được thêm vào C. Sau đó, tôi nhận ra rằng từ ++là một toán tử tăng dần và nó được thêm vào C chỉ để cung cấp 'Phần mở rộng hướng đối tượng'.

Trong C #, ý nghĩa của là #gì?


26
Để tạo cơ hội cho C-sharp-haters gọi nó là D-flat.
mmx

1
Nguồn gốc của các điểm cộng trong C ++ không liên quan đến toán tử tăng dần. AFAIK Bjarne gọi nó là 'C với các lớp' trong giai đoạn đầu, cho đến khi một số người bạn đời cảm thấy mệt mỏi và bắt đầu gọi nó là 'C plus plus'.
Cecil có tên vào

2
Trên thực tế, ban đầu nó được phát âm là C-hash. Như trong, chúng tôi đã cố gắng để cải thiện C và thực hiện một băm hoàn toàn của nó ;-)
Chinmay Kanchi

8
Trên thực tế, ban đầu nó được phát âm là C-OCTOTHORPE, như trong, chúng tôi muốn nói OCTOTHORPE. Hãy thử nó: octothorpe octothorpe octothorpe!
Eric Lippert

Bài viết đề ngày này, lập luận tốt - theregister.co.uk/2002/07/04/why_microsoft_makes_a_complete
Biswajeet

Câu trả lời:


118

Cái tên "C sharp" được lấy cảm hứng từ ký hiệu âm nhạc trong đó một dấu sắc chỉ ra rằng nốt nhạc được viết nên cao hơn nửa bậc về cao độ. [6] Điều này tương tự như tên ngôn ngữ của C ++, trong đó "++" chỉ ra rằng một biến phải được tăng thêm 1. Biểu tượng sắc nét cũng giống như một chữ ghép của bốn ký hiệu "+" (trong lưới hai x hai), hơn nữa ngụ ý rằng ngôn ngữ là phần gia tăng của C ++.

Do hạn chế về kỹ thuật hiển thị (phông chữ tiêu chuẩn, trình duyệt, v.v.) và thực tế là ký hiệu sắc nét (♯, U + 266F, MUSIC SHARP SIGN) không có trên bàn phím tiêu chuẩn, ký hiệu số (#, U + 0023 , SỐ KÝ) được chọn để đại diện cho biểu tượng sắc nét trong tên viết của ngôn ngữ lập trình. [7] Quy ước này được phản ánh trong Đặc tả ngôn ngữ C # của ECMA-334. 3 Tuy nhiên, khi thực tế để làm như vậy (ví dụ: trong quảng cáo hoặc trong nghệ thuật hộp [8]), Microsoft sử dụng biểu tượng âm nhạc dự định.

Từ Wikipedia .

Ngoài ra, trong cuộc phỏng vấn này , Anders Hejlseberg nói:

"Chúng tôi muốn đề cập đến di sản C của ngôn ngữ trong tên gọi và cuối cùng đã giải quyết vấn đề C #. Một số ứng cử viên khác mà tôi nhớ lại là eC, Safe C, C-square, C-cube, C-prime, C-star và Cesium … Nhìn và những người bây giờ tôi khá hài lòng với sự lựa chọn của chúng tôi. "

Cuối cùng, Naomi Hamilton đã trực tiếp hỏi Anders Hejlseberg câu hỏi :

[NH] Tại sao ngôn ngữ ban đầu có tên là Cool, và điều gì đã thúc đẩy sự thay đổi thành C #?

[AH] Tên mã là Cool, viết tắt của 'C like Object Oriented Language'. Chúng tôi thích cái tên đó: tất cả các tệp của chúng tôi đều được gọi là .cool và điều đó thật tuyệt! Chúng tôi đã xem xét nghiêm túc việc giữ tên cho sản phẩm cuối cùng nhưng nó không khả thi từ góc độ nhãn hiệu, vì có quá nhiều thứ hay ho ngoài kia.

Vì vậy, ủy ban đặt tên đã phải làm việc và chúng tôi thích khái niệm có một tham chiếu cố hữu đến C trong đó, và một chút chơi chữ trên C ++, vì bạn có thể xem dấu sắc như bốn điểm cộng, vì vậy nó là C ++++ . Và khía cạnh âm nhạc cũng thú vị. Vì vậy, nó là C #, và tôi thực sự rất vui với cái tên đó. Nó phục vụ chúng tôi tốt.


10
Được đặt tên là C # vì "Bản tình ca ánh trăng" của Beethoven, bản yêu thích của Bill Gates và Anders Hejlsberg, được viết bằng C # Minor. Anders, một người Dane, cũng có thể đã biết về cuộc tranh luận học thuật đang diễn ra về việc liệu Vua Frederik VI của Tòa án Đan Mạch có phải là một trong mười "tòa án Hoàng gia" đã đăng ký Missa Solemnis, Opus 123 của Beethoven hay không: có lẽ ông đã biết rằng gần đây nghiên cứu học thuật xác nhận đăng ký của Đan Mạch tồn tại trong một kho lưu trữ Copenhagen. Khi C # được đặt tên, Jon Skeet vẫn chỉ ở dạng "ngủ đông" của con người; chưa được chuyển đổi một cách siêu hình thành Hierophant của DotNetVerse. :)
BillW

8
Ngẫu nhiên, thư mục trong các nguồn C # có chứa bộ kiểm tra đăng ký vẫn được gọi là "safec". Không ai thèm thay đổi nó.
Eric Lippert

1
Tôi hầu như đồng ý với Anders, nhưng nguyên tố C - điều đó khá hay.
Michael Petrotta

Tôi thầm hy vọng mình đã đúng khi giả định rằng họ đang sử dụng C ++ ++ (vì vậy, C ++ lại tăng thêm lần nữa, nhưng điều đó trông thật ngu ngốc) vì vậy họ đã sắp xếp các dấu + thành một lưới 2 x 2. Thật tuyệt khi những nghi ngờ của tôi được xác nhận!
Mike Devenney

7

Năm 1991, Al Stevens giới thiệu D-Flat trên Tạp chí Tiến sĩ Dobbs (DDJ); một khuôn khổ hướng sự kiện, dựa trên DOS để xây dựng giao diện người dùng (xem http://www.ddj.com/184408553 ). Vào thời điểm đó, D-Flat được viết bằng C, vì Al Stevens đã viết chuyên mục Lập trình C cho DDJ. Cái tên C ++ đã được đặt và anh ấy đã cân nhắc đến C-Sharp, nhưng tin chắc rằng ai đó đã nghĩ ra nó (xem http://www.ddj.com/184410858 ). Ý kiến ​​của tôi là Al Stevens đã nghĩ về cái tên C-Sharp trong một thời gian dài, bởi vì D-Flat không phải là một ý tưởng bất chợt và anh ấy có rất nhiều kinh nghiệm về ngôn ngữ.


7

Cho rằng đây là trang web của một lập trình viên, có lẽ rất thú vị khi liệt kê "tên thật", những cái tên mà các lập trình viên của Microsoft đã sử dụng khi họ làm việc trong các dự án. Những tên này có xu hướng hiển thị, giống như hồ sơ khảo cổ học, trong mã nguồn cho CLR (Rotor), tệp tiêu đề SDK và Nguồn tham chiếu.

C # khởi đầu là COOL (Ngôn ngữ hướng đối tượng giống C). Các cấu hình của Rotor cho thấy rằng mã C # ban đầu có thể đã được viết trong các tệp có phần mở rộng tên tệp .cool. Tuy nhiên, cũng có một số nơi nó được đặt tên là COOLC.

CLR có một số tên. Nó bắt đầu như một dự án bên trong nhóm làm việc trên COM + của Windows 2000, có nhiều tham chiếu đến "ComPlus" trong mã nguồn CLR. Mã ngoại lệ cho một ngoại lệ được quản lý là 0xe0434f4e, 0xe0 + "COM" +1. Trong tệp WinError.h, mã lỗi CLR sử dụng "URT", "Universal Run Time". Sự co lại "Cor" xuất hiện ở nhiều nơi trong giao diện lưu trữ, "COM Object Runtime". Mã nguồn CLR rất thường sử dụng từ viết tắt EE, khác với COR, viết tắt của Execution Engine và một phần của những thay đổi trong cơ sở mã CLR để nó thực thi mã được quản lý.

Tên dự án nội bộ mà tôi đã thấy:

  • Rainier: Visual Studio 2002
  • Everett: Visual Studio 2003
  • Whidbey: Visual Studio 2005
  • Orcas: Visual Studio 2008
  • Hawaii: Visual Studio 2010 (rất sớm)
  • Rotor: Phiên bản nguồn được chia sẻ của CLR
  • Avalon: WPF
  • Màu chàm: WCF
  • Yukon: SQL Server 2005
  • Katmai: SQL Server 2008
  • Strike: một tiện ích mở rộng trình gỡ lỗi tùy chỉnh được sử dụng để gỡ lỗi phiên bản đầu tiên của CLR, được phát triển thành SOS (Son of Strike).

3
EE không phải là "công cụ thực thi" trong trình biên dịch C #, mặc dù nó có thể nằm trong CLR, tôi không biết. Trong trình biên dịch C #, EE là "bộ đánh giá biểu thức" - nội dung EE trong trình biên dịch là các phần của trình biên dịch thực hiện hành vi cửa sổ "xem" và "cục bộ" trong trình gỡ lỗi; bạn cung cấp cho nó một biểu thức tại thời điểm gỡ lỗi và EE đánh giá nó dựa trên ngữ cảnh của trạng thái chương trình đang chạy. Tôi sẽ ngạc nhiên (nhẹ) nếu nó có nghĩa khác trong các nguồn CLR.
Eric Lippert

2
Thuộc tính Mô tả Tệp cho tài nguyên thông tin phiên bản tệp trong mscoree.dll là "Microsoft .NET Runtime Execution Engine".
Hans Passant


2

'#' Thực sự có nghĩa là một biểu tượng sắc nét trong âm nhạc - như ++ cho biết C ++ là C tăng, # cho biết C ++ tăng hoặc C ++++; một ngôn ngữ có cú pháp C, cung cấp chức năng cấp cao hơn.

Kiểm tra các bài báo wikipedia về điều này.


1

Nó chỉ là một cái tên. Ký tự # được lấy từ ký hiệu âm nhạc có nghĩa là C # (C sắc) nằm trên C nửa nốt.

C # một phần dựa trên C / C ++, nhưng cũng dựa trên Java và Pascal (Delphi). Giống như Java, C # là một ngôn ngữ hướng đối tượng, trong khi C ++ và Pascal là các ngôn ngữ thủ tục với khả năng bổ sung cho hướng đối tượng.


1

C # là một cái tên lấy cảm hứng từ âm nhạc và còn có C # đa âm


1

'#' Thực sự có nghĩa là một biểu tượng sắc nét trong âm nhạc - như ++ cho biết C ++ là C tăng, # cho biết C ++ tăng hoặc C ++++; một ngôn ngữ có cú pháp C, cung cấp chức năng cấp cao hơn.


1
Chờ đã, đây không phải chỉ là bản sao của câu trả lời @ljs được thêm vào 14 tháng trước sao?
Mike Devenney, 13/07/17

1

Ngoài các tham chiếu âm nhạc được ghi ở nơi khác, hãy quan sát rằng '♯' và '#' trông giống như hai ký hiệu '+' chồng lên nhau.

Cuối cùng, mặc dù đó là một quyết định tiếp thị, không phải là một quyết định kỹ thuật.

(Ngoài ra: vào thời điểm đó, chúng tôi nghĩ rằng đó là một lựa chọn tồi vì các công cụ tìm kiếm sẽ bỏ qua các ký tự "đặc biệt" và bạn sẽ nhận được kết quả cho 'C'. Giờ đây, các công cụ tìm kiếm đã thông minh hơn.)


3
đó là 4 +ký tự chồng chéo thực sự :)
Gregory Pakosz

2
@GregoryPakosz: Chỉ có hai cái, mặc dù chúng không đối xứng và không rõ chúng ở đâu. Nó có thể là một biểu tượng ở phía trên bên trái kéo dài hơn sang bên phải và hướng xuống hơn là lên và sang trái, và một biểu tượng khác ở dưới và bên phải của nó kéo dài hơn nữa lên và trái hơn là xuống và phải hoặc hai biểu tượng có thể ở trong phía dưới bên trái và phía trên bên phải.
supercat

-1

tốt trong khi c ++ là c với "Phần mở rộng hướng đối tượng", mặt khác c # không dựa trên c chỉ cú pháp và là hướng đối tượng hoàn toàn và được biên dịch thành msil trong khi c ++ gốc biên dịch thành mã nhị phân gốc ...


1
mọi thứ được chứa trong một số phần mềm của class / struct
Peter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.