30/09/2018, 16:43

Các ngôn ngữ lập trình được tạo ra như thế nào?

Cho em hỏi, các ngôn ngữ lập trình được tạo ra như thế nào ?, (đặc biệt là khi mà chưa có ngôn ngữ nào để làm nền tảng)
Có cuốn sách nào nói chi tiết về vấn đề này không ạ( tiếng việt thì tốt quá )

Lập Trình Sư viết 18:56 ngày 30/09/2018

Programming language and compiler theory, cuốn này cũ lắm rồi, thử search coi có ra không :v

Thành Phạm viết 18:56 ngày 30/09/2018

em search nó lại ra cuốn này, không biết đúng không

Implementing Programming Languages

Minh Hoàng viết 18:57 ngày 30/09/2018

chắc là từ assembly đi lên cơ mà assembly từ đâu thì…

Thành Phạm viết 18:47 ngày 30/09/2018

Hóng cao thủ trả lời câu này

Khoa Nguyen viết 18:45 ngày 30/09/2018

Chắc đi từ đây đó
0100010101001001010010010

Minh Hoàng viết 18:49 ngày 30/09/2018

chắc đúng rồi… 101010 là cha của tất cả rồi

vi.wikipedia.org

Hợp ngữ

Hợp ngữ (assembly language) là một ngôn ngữ lập trình bậc thấp dùng để viết các chương trình máy tính. Cách dùng các thuật nhớ (mnemonics) thân thiện để viết chương trình đã thay thế cách lập trình trực tiếp lên máy tính bằng mã máy dạng số (numeric machine code) - từng áp dụng cho những máy tính đầu tiên - vốn rất mệt nhọc, dễ gây lỗi và tốn nhiều thời giờ. Một chương trình viết bằng hợp ngữ sẽ được dịch sang ngôn ngữ máy bằng một tiện ích gọi là trình hợp dịch. Lưu ý rằng, trình hợp dịch khác h...

Thành Phạm viết 18:45 ngày 30/09/2018

Nếu em muốn “trải nghiệm” giống người xưa từ khi chưa có asm có được k nhỉ? Tức là dùng mã máy thử làm 1 phép toán, rồi tiến tới tạo ra 1 hợp ngữ, rồi tạo ra 1 ngôn ngữ lập trình

*grab popcorn* viết 18:54 ngày 30/09/2018

Rất tốn thời gian và công sức để đi lên từ binary code đến ngôn ngữ hiện nay! Nên đừng điên rồ mà làm cái ngta cất công vắt óc ra làm cho rồi nhé. Nếu thích hãy tập dịch cái cao sang cái thấp nó sẽ dễ hơn đó!
Bạn có thể xem clip này để có thể hình dung về thời đó code như thế nào. Và mục đích của compiler khi ra đời!

Còn nếu thích bạn người xưa code ntn có thể tìm hiểu về instruction set và opcode của họ 8085 là một con chip cũ rồi. Nó khá đơn giản so với các con khác ‘3’ Bạn có thể dễ dàng tìm hiểu và luyện code instruction set và opcode của nó cũng như ASM của nó và sẽ thấy cảm giác code của người xưa ntn :#

Thành Phạm viết 18:47 ngày 30/09/2018

Hehe, mình mình mới chỉ từng thử lập trình vi điều khiển bằng hex thôi, công nhận là rất rắc rối, nhưng vẫn muốn thử lập trình bằng binary code 1 lần ,

Nguyễn Minh Dũng viết 18:47 ngày 30/09/2018

Nên nghiên cứu về vấn đề này, rất thú vị đấy Hiện giờ rất nhiều Ngôn ngữ sử dụng C để viết compiler đầu tiên.

Nhưng Compiler đầu tiên cho C viết bằng gì? hợp ngữ

Compiler đầu tiên cho hợp ngữ viết bằng gì?

Khoa Nguyen viết 18:56 ngày 30/09/2018

Compiler đầu tiên cho hợp ngữ viết bằng gì?

Xem video ở trên thì đó là mã nhị phân

Nguyễn Minh Dũng viết 18:47 ngày 30/09/2018

Chính xác rồi

Từ sau khi có được C compiler rồi thì các ngôn ngữ mới hơn sẽ dùng C để viết compiler. Khi có được compiler của ngôn ngữ đó, người ta có thể viết lại compiler bằng chính ngôn ngữ đó.

Khoa Nguyen viết 18:57 ngày 30/09/2018

Hơi rối vụ này. Như coffescript là 1 dạng javascript, code coffescript được dịch ra javascript và hạy trên trình duyệt. Nhưng mà coffescript complier lại được viết bằng chính coffescript.(trang chủ của nó) Đọc ko hiểu gì hết

Nguyễn Minh Dũng viết 18:52 ngày 30/09/2018

Lúc đầu Coffescript dùng Ruby để viết compiler cho nó. Sau khi đã có được compiler cho CoffeScript rồi thì người ta viết lại compiler bằng chính CoffeScript

en.wikipedia.org

CoffeeScript | History

On December 13, 2009, Jeremy Ashkenas made the first Git commit of CoffeeScript with the comment: "initial commit of the mystery language." The compiler was written in Ruby. On December 24, he made the first tagged and documented release, 0.1.0. On February 21, 2010, he committed version 0.5, which replaced the Ruby compiler with a self-hosting version in pure CoffeeScript. By that time the project had attracted several other contributors on GitHub, and was receiving over 300 page hits per day On...

Trước hết phải có một ngôn ngữ nào đó để viết compiler. Sau khi có compiler rồi thì coi như ta có thể viết lại compiler bằng chính ngôn ngữ đó.

Bản chất ngôn ngữ lập trình là text (source code) thôi, phải có một ngôn ngữ đọc hiểu được text đó ( là Ruby code) để chuyển thành compiler (binary viết bằng Ruby). Sau khi có được binary rồi thì ta lại dùng binary đó để chuyển text (bây giờ là CoffeScript code) thành compiler (binary viết bằng CoffeScript).

Khoa Nguyen viết 18:44 ngày 30/09/2018

Ah. Got it. Hay quá nhỉ

Nguyễn Đức Minh viết 18:48 ngày 30/09/2018

Mọi ngôn ngữ bao gồm cả ngôn ngữ lập trình đều được sản sinh trong một bảng kí tự, văn phạm và một quy luật nhất định…và Alan Turing là cha đẻ ngành khoa học máy tính…với những nghiên cứu về trí tuệ nhân tạo, những đặc tính, tính chất, văn phạm cần phải có trong một ngôn ngữ điện toán…Đặc biệt là sự ra đời của Máy Turing là mô hình đầy đủ và tổng quát nhất mà mọi nhà khoa học máy tính cần phải nắm vững nếu muốn tạo ra một ngôn ngữ và cách mà một compiler hiểu, phân biệt, hoạt động để có thể biến ý tưởng của một ngôn ngữ lập trình thành ngôn ngữ máy tính.

en.wikipedia.org

Alan Turing

Alan Mathison Turing OBE FRS (/ˈtjʊərɪŋ/; 23 June 1912 – 7 June 1954) was an English computer scientist, mathematician, logician, cryptanalyst, philosopher, and theoretical biologist. Turing was highly influential in the development of theoretical computer science, providing a formalisation of the concepts of algorithm and computation with the Turing machine, which can be considered a model of a general purpose computer. Turing is widely considered to be the father of theoretical comp During t...


en.wikipedia.org

Formal language

In mathematics, computer science, and linguistics, a formal language is a set of strings of symbols together with a set of rules that are specific to it. The alphabet of a formal language is the set of symbols, letters, or tokens from which the strings of the language may be formed. The strings formed from this alphabet are called words, and the words that belong to a particular formal language are sometimes called well-formed words or well-formed formulas. A formal language is often defined b...


en.wikipedia.org

Turing machine

A Turing machine is a mathematical model of computation that defines an abstract machine, which manipulates symbols on a strip of tape according to a table of rules. Despite the model's simplicity, given any computer algorithm, a Turing machine capable of simulating that algorithm's logic can be constructed. The machine operates on an infinite memory tape divided into discrete cells. The machine positions its head over a cell and "reads" (scans) the symbol there. Then, as per the symbol and its ...

Nguyễn Đức Minh viết 18:52 ngày 30/09/2018

Về các cuốn sách tìm hiểu về vấn đề này thì bác hãy tìm các cuốn sách có tự đề là Ngôn ngữ hình thức (Formal Language) hay Automata trong đó bác sẽ dần dần hiểu cách các nhà nghiên cứu đã làm những gì để tạo nên các ngôn ngữ lập trình rất chặt chẽ ngày nay…hoặc bạn có thể nghiên cứu qua bài giảng này trên Coursera của ĐH Stanford:
https://class.coursera.org/compilers/lecture
Chương cuối có nói về quá trình nghiên cứu và hoàn thiện một trong những ngôn ngữ phổ biến nhất ngày nay: Java

Thành Phạm viết 18:52 ngày 30/09/2018

wow, Alan turing em chỉ biết có máy giải enigma của ông thôi, không biết nó có phải là Alan machine k.
Automata nghe rất giống tên phim hehe

K viết 18:43 ngày 30/09/2018

Có phim Imitation game nói về Alan đó

Root Xin viết 18:52 ngày 30/09/2018

theo mình nghĩ, chỉ có 1 ngôn ngữ đầu tiên là 1 và 0 thôi
1 là tắt đèn 0 là bật chẳng hạn
thì cái ngôn ngữ đầu tiên đó dựa vào cái 1 0 này mà ra , ví dụ pascal cái lênh write đâu đơn giản là in ra mà phải dựa trên 1 nên tảng nào đó mà chắn chắn ban đầu là 1 và 0
bạn cũng có thể tạo ra 1 ngôn ngữ mới nếu bạn đủ trình dựa trên nền tảng 1 ngôn ngữ khác, ví dụ tạo ra 1 hàm bằng ngôn ngữ python chẳng hạn, nhưng nó có tốc độ sử lí chậm hơn rất nhiều do nó còn phải thông qua 1 ngôn ngữ là python.
còn tùy vào độ ăn sâu những ngôn ngữ đầu tiên là những ngôn ngữ nhanh nhất, mạnh nhất, nhưng cũng khó học nhất. > Bản thân cái C và C++ ko phải là đầu tiên, nên rất khó nói.
còn cái trình dịch, bạn nào thử tải về rồi dịch ngược coi thủ ra sao, chắc ko được!!!
còn IDE trình soạn thảo thì cũng có thể dựa trên ngôn ngữ đó như sublime text viết bằng python, soạn nó ra kết nối với trình dịch rồi bla bla sau đó là ra.

Bài liên quan
0