Hướng dẫn c# mongodb join two collections - c # mongodb tham gia hai bộ sưu tập

Không bị nhầm lẫn với C ++ hoặc C#.

CMô hìnhDesigned byNhà phát triểnFirst appearedPhiên bản ổn địnhBản phát hành xem trướcGõ kỷ luậtHệ điều hànhPhần mở rộng tên tệpTrang mạngTriển khai chínhPhương ngữChịu ảnh hưởng bởiẢnh hưởng

Che đồ họa ngôn ngữ lập trình C, đồng tác giả bởi nhà thiết kế ban đầu của C Dennis Ritchie [1]

Đa đa dạng: bắt buộc [thủ tục], có cấu trúc
Dennis Ritchie
ANSI X3J11 [ANSI C]; ISO / IEC JTC 1 [Ủy ban kỹ thuật chung 1] / SC 22 [Tiểu ban 22] / WG 14 [Nhóm làm việc 14] [ISO C]
1972; 50 & nbsp; nhiều năm trước [2]; 50 years ago[2]

C17 / tháng 6 & NBSP; 2018; 4 & nbsp; nhiều năm trước; 4 years ago

C2X [N3054] / Tháng 9 & NBSP; 3, 2022; 51 ngày trước [3]; 51 days ago[3]

Tĩnh, yếu, rõ ràng, danh nghĩa
Đa nền tảng
.c, .h
www.iso.org/standard/74528.htmlwww.open-std.org/jtc1/sc22/wg14/
www.open-std.org/jtc1/sc22/wg14/
PCC, GCC, Clang, Intel C, C ++ Builder, Microsoft Visual C ++, Watcom CIntel C, C++Builder, Microsoft Visual C++, Watcom C
Cyclone, thống nhất song song C, Split-C, Cilk, C*
B [BCPL, CPL], Algol 68, [4], PL/I, Fortran
Rất nhiều: Ampl, AWK, CSH, C ++, C--, C#, Objective-C, D, Go, Java, JavaScript, JS ++, Julia, Limbo, LPC, Perl, PHP, Pike, Pike, Python, Rust, Seed7, Vala, Verilog [HDL], [5] NIM, Zig
  • C Lập trình tại Wikibooks

C [phát âm giống như chữ C] là ngôn ngữ lập trình máy tính đa năng. Nó được tạo ra vào những năm 1970 bởi Dennis Ritchie, và vẫn được sử dụng rất rộng rãi và có ảnh hưởng. Theo thiết kế, các tính năng của C phản ánh rõ ràng các khả năng của CPU được nhắm mục tiêu. Nó đã tìm thấy việc sử dụng lâu dài trong các hệ điều hành, trình điều khiển thiết bị, ngăn xếp giao thức, mặc dù giảm [6] cho phần mềm ứng dụng. C thường được sử dụng trên các kiến ​​trúc máy tính từ các siêu máy tính lớn nhất đến các bộ vi điều khiển nhỏ nhất và hệ thống nhúng. [pronounced like the letter c] is a general-purpose computer programming language. It was created in the 1970s by Dennis Ritchie, and remains very widely used and influential. By design, C's features cleanly reflect the capabilities of the targeted CPUs. It has found lasting use in operating systems, device drivers, protocol stacks, though decreasingly[6] for application software. C is commonly used on computer architectures that range from the largest supercomputers to the smallest microcontrollers and embedded systems.

Một người kế vị cho ngôn ngữ lập trình B, C ban đầu được phát triển tại Bell Labs bởi Ritchie từ năm 1972 đến năm 1973 để xây dựng các tiện ích chạy trên Unix. Nó đã được áp dụng để thực hiện lại hạt nhân của hệ điều hành UNIX. [7] Trong những năm 1980, C dần dần trở nên phổ biến. Nó đã trở thành một trong những ngôn ngữ lập trình được sử dụng rộng rãi nhất, [8] [9] với các trình biên dịch C có sẵn cho hầu hết các điều khoản cần thiết] tất cả các kiến ​​trúc và hệ điều hành máy tính hiện đại. C đã được ANSI tiêu chuẩn hóa từ năm 1989 [ANSI C] và bởi Tổ chức Tiêu chuẩn hóa Quốc tế [ISO].citation needed] all modern computer architectures and operating systems. C has been standardized by ANSI since 1989 [ANSI C] and by the International Organization for Standardization [ISO].

C là một ngôn ngữ thủ tục bắt buộc hỗ trợ lập trình có cấu trúc, phạm vi biến từ vựng và đệ quy, với một hệ thống tĩnh. Nó được thiết kế để được biên dịch để cung cấp quyền truy cập cấp thấp vào các cấu trúc bộ nhớ và ngôn ngữ để ánh xạ hiệu quả cho các hướng dẫn máy, tất cả đều có hỗ trợ thời gian chạy tối thiểu. Mặc dù có khả năng cấp thấp, ngôn ngữ được thiết kế để khuyến khích lập trình đa nền tảng. Một chương trình C tuân thủ tiêu chuẩn được viết với tính di động trong tâm trí có thể được biên dịch cho nhiều nền tảng máy tính và hệ điều hành với một vài thay đổi đối với mã nguồn của nó. [10]

Từ năm 2000, C đã liên tục xếp hạng trong số hai ngôn ngữ hàng đầu trong Chỉ số TiOBE, thước đo mức độ phổ biến của các ngôn ngữ lập trình. [11]

Overview[edit][edit]

C là một ngôn ngữ bắt buộc, thủ tục trong truyền thống Algol. Nó có một hệ thống tĩnh. Trong C, tất cả các mã thực thi được chứa trong các chương trình con [còn được gọi là "chức năng", mặc dù không theo nghĩa lập trình chức năng]. Các tham số chức năng được truyền theo giá trị, mặc dù các mảng được truyền dưới dạng con trỏ, tức là địa chỉ của mục đầu tiên trong mảng. Tham chiếu từng lần được mô phỏng trong C bằng cách chuyển các con trỏ một cách rõ ràng cho điều đang được tham chiếu.

Văn bản nguồn chương trình C là định dạng tự do, sử dụng dấu chấm phẩy làm dấu phân cách tuyên bố và niềng răng xoăn để nhóm các khối các câu lệnh.

Ngôn ngữ C cũng thể hiện các đặc điểm sau:

  • Ngôn ngữ có một số lượng từ khóa nhỏ, cố định, bao gồm một tập hợp đầy đủ các nguyên thủy luồng điều khiển: if/else, for, do/while, whileswitch. Tên do người dùng xác định không được phân biệt với các từ khóa bởi bất kỳ loại sigil nào.
  • Nó có một số lượng lớn các toán tử số học, bitwise và logic: ________ 10, ________ 11, ________ 12, ________ 13, ________ 14, v.v.
  • Nhiều hơn một bài tập có thể được thực hiện trong một câu.
  • Chức năng:
    • Giá trị trả về chức năng có thể bị bỏ qua, khi không cần thiết.
    • Chức năng và con trỏ dữ liệu cho phép đa hình thời gian chạy ad hoc.
    • Các chức năng có thể không được xác định trong phạm vi từ vựng của các chức năng khác.
    • Các biến có thể được xác định trong một hàm, với phạm vi.
    • Một chức năng có thể gọi chính nó, vì vậy đệ quy được hỗ trợ.
  • Gõ dữ liệu là tĩnh, nhưng được thực thi yếu; Tất cả dữ liệu có một loại, nhưng chuyển đổi ngầm là có thể.
  • Có thể các loại do người dùng xác định [typedef] và hợp chất.
    • Các loại dữ liệu tổng hợp không đồng nhất [
      main[]
      {
          printf["hello, world\n"];
      }
      
      5] cho phép các yếu tố dữ liệu liên quan được truy cập và gán như một đơn vị.
    • Liên minh là một cấu trúc với các thành viên chồng chéo; Chỉ có thành viên cuối cùng được lưu trữ là hợp lệ.
    • Lập chỉ mục mảng là một ký hiệu thứ cấp, được định nghĩa theo số học của con trỏ. Không giống như các cấu trúc, các mảng không phải là đối tượng hạng nhất: chúng không thể được gán hoặc so sánh bằng cách sử dụng các toán tử tích hợp đơn. Không có từ khóa "mảng" được sử dụng hoặc định nghĩa; Thay vào đó, dấu ngoặc vuông biểu thị các mảng theo cách cú pháp, ví dụ
      main[]
      {
          printf["hello, world\n"];
      }
      
      6.
    • Các loại được liệt kê là có thể với từ khóa
      main[]
      {
          printf["hello, world\n"];
      }
      
      7. Họ tự do xen kẽ với số nguyên.
    • Các chuỗi không phải là một loại dữ liệu riêng biệt, nhưng được thực hiện theo quy ước như các mảng ký tự kết thúc không.
  • Truy cập cấp thấp vào bộ nhớ máy tính là có thể bằng cách chuyển đổi địa chỉ máy thành con trỏ.
  • Các thủ tục [chương trình con không trả lại giá trị] là một trường hợp đặc biệt của hàm, với loại trả về không được xác định
    main[]
    {
        printf["hello, world\n"];
    }
    
    8.
  • Bộ nhớ có thể được phân bổ cho một chương trình với các cuộc gọi đến các thói quen thư viện.
  • Bộ tiền xử lý thực hiện định nghĩa macro, bao gồm tệp nguồn và biên dịch có điều kiện.
  • Có một dạng cơ bản của mô đun: Các tệp có thể được biên dịch riêng và liên kết với nhau, với việc kiểm soát các hàm và đối tượng dữ liệu nào được hiển thị cho các tệp khác thông qua các thuộc tính
    main[]
    {
        printf["hello, world\n"];
    }
    
    9 và
    #include 
    
    int main[void]
    {
        printf["hello, world\n"];
    }
    
    0.
  • Chức năng phức tạp như I/O, thao tác chuỗi và các hàm toán học luôn được giao cho các thói quen thư viện.
  • Mã được tạo sau khi biên dịch có nhu cầu tương đối đơn giản trên nền tảng cơ bản, điều này phù hợp để tạo hệ điều hành và sử dụng trong các hệ thống nhúng.

Mặc dù C không bao gồm một số tính năng nhất định được tìm thấy trong các ngôn ngữ khác [như hướng đối tượng và thu gom rác], chúng có thể được thực hiện hoặc mô phỏng, thường thông qua việc sử dụng các thư viện bên ngoài [ví dụ: hệ thống đối tượng GLIB hoặc bộ thu rác BOEHM].

Quan hệ với các ngôn ngữ khác [chỉnh sửa][edit]

Nhiều ngôn ngữ sau này đã mượn trực tiếp hoặc gián tiếp từ C, bao gồm C ++, C#, Unix's C Shell, D, Go, Java, JavaScript [bao gồm cả bộ chuyển đổi], Julia, Limbo, LPC, Objective-C, Perl, Php, Python Rust, Swift, Verilog và Systemverilog [Ngôn ngữ mô tả phần cứng]. [5] Các ngôn ngữ này đã thu hút nhiều cấu trúc kiểm soát của chúng và các tính năng cơ bản khác từ C. Hệ thống, mô hình dữ liệu và ngữ nghĩa có thể hoàn toàn khác nhau.

History[edit][edit]

Phát triển ban đầu [chỉnh sửa][edit]

Dòng thời gian phát triển ngôn ngữNămC tiêu chuẩn [10]
1972 Sinh
1978 K & R C
1989/1990Ansi c và iso c
1999 C99
2011 C11
2017 C17
TBDC2X

Nguồn gốc của C gắn chặt với sự phát triển của hệ điều hành Unix, ban đầu được triển khai bằng ngôn ngữ lắp ráp trên PDP-7 của Dennis Ritchie và Ken Thompson, kết hợp một số ý tưởng từ các đồng nghiệp. Cuối cùng, họ quyết định chuyển hệ điều hành đến PDP-11. Phiên bản PDP-11 ban đầu của Unix cũng được phát triển bằng ngôn ngữ lắp ráp. [7]

B[edit][edit]

Thompson mong muốn một ngôn ngữ lập trình để tạo ra các tiện ích cho nền tảng mới. Lúc đầu, anh ta cố gắng tạo ra một trình biên dịch Fortran, nhưng sớm từ bỏ ý tưởng này. Thay vào đó, ông đã tạo ra một phiên bản cắt giảm của ngôn ngữ lập trình BCPL Systems được phát triển gần đây. Mô tả chính thức của BCPL không có sẵn vào thời điểm đó, [12] và Thompson đã sửa đổi cú pháp là ít wordy hơn và tương tự như một algol đơn giản được gọi là smalgol. [13] Kết quả là cái mà Thompson gọi là B. [7] Ông mô tả B là "ngữ nghĩa BCPL với rất nhiều cú pháp Smalgol". [13] Giống như BCPL, B có trình biên dịch bootstrapping để tạo điều kiện chuyển sang các máy mới. [13] Tuy nhiên, một số tiện ích cuối cùng đã được viết bằng B vì nó quá chậm và không thể tận dụng các tính năng PDP-11 như địa chỉ byte.

Bản phát hành B mới và C đầu tiên [Chỉnh sửa][edit]

Năm 1971, Ritchie bắt đầu cải thiện B, để sử dụng các tính năng của PDP-11 mạnh mẽ hơn. Một bổ sung đáng kể là một loại nhân vật. Ông gọi đây là B. [13] Thompson bắt đầu sử dụng NB để viết nhân Unix và các yêu cầu của anh ấy đã định hình hướng phát triển ngôn ngữ. [13] [14] Cho đến năm 1972, các loại phong phú hơn đã được thêm vào ngôn ngữ NB: NB có các mảng

#include 

int main[void]
{
    printf["hello, world\n"];
}
1 và
#include 

int main[void]
{
    printf["hello, world\n"];
}
2. Con trỏ, khả năng tạo con trỏ cho các loại, mảng của tất cả các loại và các loại được trả về từ các chức năng đều được thêm vào. Mảng trong các biểu thức trở thành con trỏ. Một trình biên dịch mới đã được viết và ngôn ngữ được đổi tên C. [7]

Trình biên dịch C và một số tiện ích được thực hiện với nó được bao gồm trong phiên bản 2 Unix, còn được gọi là UNIX nghiên cứu. [15]

Cấu trúc và nhân Kernel viết lại [Chỉnh sửa][edit]

Tại phiên bản 4 UNIX, được phát hành vào tháng 11 năm 1973, hạt nhân Unix đã được thực hiện lại rộng rãi trong C. [7] Vào thời điểm này, ngôn ngữ C đã có được một số tính năng mạnh mẽ như các loại

main[]
{
    printf["hello, world\n"];
}
5.

Bộ tiền xử lý đã được giới thiệu vào khoảng năm 1973 với sự thúc giục của Alan Snyder và cũng để nhận ra tính hữu dụng của các cơ chế mạ tệp có sẵn trong BCPL và PL/I. Phiên bản gốc của nó chỉ được cung cấp bao gồm các tệp và thay thế chuỗi đơn giản:

#include 

int main[void]
{
    printf["hello, world\n"];
}
4 và
#include 

int main[void]
{
    printf["hello, world\n"];
}
5 của các macro không tham số. Ngay sau đó, nó đã được mở rộng, chủ yếu là Mike Lesk và sau đó bởi John Reiser, để kết hợp các macro với các lập luận và tổng hợp có điều kiện. [7]

Unix là một trong những hạt nhân hệ điều hành đầu tiên được triển khai bằng ngôn ngữ khác ngoài hội. Các trường hợp trước đó bao gồm hệ thống multics [được viết trong PL/I] và Chương trình kiểm soát tổng thể [MCP] cho Burroughs B5000 [được viết bằng Algol] vào năm 1961. Vào khoảng năm 1977, Ritchie và Stephen C. Johnson đã thay đổi hơn nữa đối với Ngôn ngữ để tạo điều kiện cho tính di động của hệ điều hành UNIX. Trình biên dịch C di động của Johnson đóng vai trò là cơ sở cho một số triển khai C trên các nền tảng mới. [14]

K & R C [Chỉnh sửa][edit]

Năm 1978, Brian Kernighan và Dennis Ritchie đã xuất bản phiên bản đầu tiên của ngôn ngữ lập trình C. [16] Cuốn sách này, được các lập trình viên C gọi là K & R, đã phục vụ trong nhiều năm như một đặc điểm kỹ thuật không chính thức của ngôn ngữ. Phiên bản C mà nó mô tả thường được gọi là "K & R C". Vì điều này đã được phát hành vào năm 1978, nó còn được gọi là C78. [17] Phiên bản thứ hai của cuốn sách [18] bao gồm tiêu chuẩn ANSI C sau này, được mô tả dưới đây.K&R C". As this was released in 1978, it is also referred to as C78.[17] The second edition of the book[18] covers the later ANSI C standard, described below.

K & R đã giới thiệu một số tính năng ngôn ngữ:

  • Thư viện I/O tiêu chuẩn
  • #include 
    
    int main[void]
    {
        printf["hello, world\n"];
    }
    
    6 Kiểu dữ liệu
  • #include 
    
    int main[void]
    {
        printf["hello, world\n"];
    }
    
    7 Kiểu dữ liệu
  • Các toán tử gán hợp chất có dạng
    #include 
    
    int main[void]
    {
        printf["hello, world\n"];
    }
    
    8 [như
    #include 
    
    int main[void]
    {
        printf["hello, world\n"];
    }
    
    9] đã được thay đổi thành dạng
    int func[int N, int M]
    {
      float [*p][N][M] = malloc[sizeof *p];
      if [!p]
        return -1;
      for [int i = 0; i 

Bài Viết Liên Quan

Chủ Đề