2009-10-21 35 views
22

Có ai biết nơi tôi có thể nhận được một trình biên dịch B tốt? Tôi đã tìm kiếm một trình biên dịch B trong một thời gian, nhưng đã có một số khó khăn trong việc tìm kiếm bất cứ điều gì hoàn chỉnh cho một hệ thống Windows hoặc Linux.Có ai có trình biên dịch B hoạt động không?

Dưới đây là một ví dụ về B:

main() { 
auto a, b, c, sum; 
a = 1; b = 2; c = 3; 
sum = a+b+c; 
putnumb(sum); 
} 
+10

Sắp xếp như tràn ngăn xếp có thể được sao chép vào cuối tuần thứ 4 tháng 7? ;) – Oorang

+0

https://github.com/sergev/b có một số nội dung liên quan đến B, đặc biệt là một số tệp PDF. – yeti

+0

Lời xin lỗi của tôi với Anthony, và bất cứ ai có thể đã chán nản trước lời bình luận trước đó của tôi. Đó là thiếu tôn trọng, không phù hợp và không thực sự cung cấp bất kỳ thông tin hữu ích nào. –

Trả lời

8

Bạn có Honeywell 6050 chạy GCOS để chạy nó trên? Hoặc có thể là một trình mô phỏng? Tôi biết rằng 360 và 370 của IBM đã được mô phỏng nhưng tôi chưa được nghe về một trình giả lập Honeywell 6000.

Tại Đại học Waterloo trong khoảng thời gian 1974-76 Tôi nhớ viết bài tập CS trong B thay vì Algol-60 mà hầu hết mọi người trong lớp đều đang sử dụng. Tôi tiếp tục viết một trình giả lập cho một máy tính mini HP 2100A, nhưng mã đó từ lâu đã bị mất. Theo như tôi biết, B chỉ được thực hiện trên Honeywell với độ dài từ 36 bit, ASCII 9 bit, vv Và kể từ khi nó kế nhiệm C, đã đánh các trường đại học cùng một lúc, nó đã không ' t kéo dài.

Nếu tôi nhớ chính xác, Trevor Thompson, một trong những người sáng lập MKS, đã viết một thư viện I/O tiêu chuẩn cho B và cũng đã viết một trò chơi cờ vua 3D trong đó. Nếu bạn có thể quản lý để theo dõi anh ta xuống, ông là một người, tại một thời gian, đã có bàn tay của mình trên một trình biên dịch B. Tôi vừa xem LinkedIn và tôi đã tìm thấy anh ấy. Ông là một trong những chủ sở hữu của Satori Solutions.

Nếu bạn có một máy chạy GCOS, hoặc trình giả lập 60 dòng Honeywell chạy GCOS, thì bạn có thể sử dụng trình biên dịch B có trong UW Tools Package từ Thinkage. Nó hỗ trợ cả các chương trình hàng loạt và TSS.

+0

B cũng được thực hiện trong ấn bản đầu tiên của Unix, mặc dù nó đã nhanh chóng bị superceded bởi C. –

11

Xuất phát từ câu hỏi này, bây giờ có một trình biên dịch B có sẵn từ đây: https://github.com/Leushenko/ybc

Chạy trên Windows, Linux, và OSX (mã nhị phân được cung cấp; theo tinh thần của câu hỏi đó được viết bằng một ngôn ngữ tối nghĩa) , nơi nó tạo ra lắp ráp x86-32 chất lượng rất kém. Nên tương thích với GCC. Nó được xây dựng lại từ tài liệu tham khảo sẵn có trên B, và gần như chắc chắn không phản ánh ngôn ngữ như nó thực sự là trong những năm 1960. Đáng chú ý, trong trường hợp không có thông tin loại (B không được nhập), quy tắc &a[b] == &*(a + b)không thể giữ trên x86, có nghĩa là tác vụ này là không thể thực hiện được (không cần sử dụng thông dịch viên). Ngoài ra, bình luận của Pavel Minaev là đúng: ngôn ngữ như được mô tả là cực kỳ nhỏ, nhỏ hơn nhiều so với C, và một lập trình viên có kinh nghiệm/có trình độ có khả năng có thể viết một cho bạn vào buổi chiều.

Rất tiếc, đây chỉ là câu trả lời một phần vì tôi không thể cho bạn biết nơi tìm trình biên dịch tốt B tốt.

+2

Cool! Với '.' là một định danh hợp lệ trong B, có lẽ chúng ta cuối cùng có thể nhầm lẫn một số loại BrainF * ck trên mã golf :) –

+1

Điều này thật tuyệt vời.Tôi đã có thể thực hiện một fizzbuzz trong B. Cảm ơn! https://github.com/jurgemaister/fizzbuzz/blob/master/fizzbuzz.b – jurgemaister

+1

@ 500-InternalServerError: Làm cách nào để '.' là một số nhận dạng hợp lệ trong B? Theo [hướng dẫn B] (http://cm.bell-labs.com/cm/cs/who/dmr/kbman.pdf), số nhận dạng là * alpha * theo sau là từ 0 đến 7 * alphas * hoặc * chữ số *. "Biến cú pháp 'alpha' không được xác định. Nó đại diện cho các ký tự từ A đến Z, a đến z, _ và backspace." (Tôi không biết tại sao không có backspace.) –

Các vấn đề liên quan