2009-04-06 35 views
26

Tôi thực sự quan tâm nếu ai đó biết ngôn ngữ lập trình sử dụng hình ảnh như Smalltalk ...Ngôn ngữ lập trình nào (ngoài Smalltalk) là hình ảnh?

Tôi nghĩ đó là một trong những ý tưởng vĩ đại nhất trong lịch sử khoa học máy tính .. Tôi không thể tìm thấy ngôn ngữ khác ngoài Smalltalk dựa trên hình ảnh.

+3

Tôi luôn nghĩ này "ý tưởng vĩ đại nhất trong lịch sử của khoa học máy tính" là một trong những lý do Smalltalk như vậy underused. Tôi thích Smalltalk về lý thuyết, nhưng hình ảnh luôn khiến tôi hơi khó chịu. – Chuck

+0

Tôi cảm thấy giống như Chuck, chỉ tôi đã tham gia Smalltalk trong một tháng, và tôi không nghĩ mình sẽ làm bất cứ điều gì "lớn" trong đó để nói ý tưởng của hình ảnh tốt đến mức nào. –

+0

Sẽ là ngớ ngẩn khi nghĩ rằng phát triển dựa trên hình ảnh phù hợp với mọi tình huống - không phải vậy. Khi tình hình liên quan đến một mô hình tên miền phong phú, giống như mô phỏng, có thể chơi và sửa mô hình miền dân cư trên bay giúp khách hàng hài lòng. – igouy

Trả lời

19

Nhiều hệ thống Lisp đang sử dụng 'hình ảnh'. Đó là nơi Smalltalk nhận nó từ, có thể - vì Lisp đã có hình ảnh trước khi Smalltalk tồn tại. Hệ điều hành trên máy Lisp về cơ bản là hình ảnh Lisp (ngay cả hình ảnh phân cấp với hình ảnh đồng bằng tăng dần).

Nếu bạn hỏi ngôn ngữ nào sử dụng cách tương tự để sắp xếp mã nguồn (nghĩa là không có trong tệp), thì Xerox InterLisp lại làm điều đó. Dylan của Apple đã làm điều đó. Một số công cụ phát triển DB có thể làm điều đó.

3

Từ những gì tôi nhớ ngồi bên cạnh cha tôi trong những năm 80, MUMPS là dựa trên hình ảnh. Tôi chắc chắn có thể sai và việc quét nhanh bài viết trên Wikipedia không hiển thị bất cứ điều gì, nhưng có thể ...

+0

Bộ nhớ của bạn là chính xác. Tôi không nghĩ MUMPS là dựa trên hình ảnh, nhưng có một hệ thống chứa/thay thế-lưu trữ nơi dữ liệu chỉ được quản lý bởi hệ thống MUMPS. APL có không gian làm việc để lưu trữ mã và mảng. Tôi nghĩ rằng bạn thậm chí có thể lập luận rằng Forth đã làm một số điều này với hệ thống tập tin theo khối của nó cho mã. Đã có một lúc hệ thống Prolog lưu "bộ nhớ làm việc" dưới dạng ảnh đĩa. Nó thường là một thực tế phổ biến, đặc biệt khi các cuộc gọi hệ điều hành không thực hiện tốt công việc nén và quản lý bộ nhớ các cấu trúc dữ liệu đặc biệt, đó là lý do tại sao LISP và Smalltalk cũng làm như vậy. –

1

Tôi tò mò muốn biết liệu hệ thống Smalltalk Image có cân xứng hay không.

Nếu bạn có 20 lập trình viên làm việc trên cùng một codebase, cách thức hoạt động? Họ từng có hình ảnh của riêng họ hay họ chia sẻ hình ảnh?

Nếu bạn thực hiện sửa đổi mã yêu cầu sửa đổi môi trường của bạn và ai đó thực hiện một sửa đổi khác với yêu cầu tương tự, hình ảnh có thể được hợp nhất (như với Kiểm soát phiên bản) không?

+5

tại sao không đăng câu hỏi đó làm câu hỏi? –

+0

Hoặc các nhà phát triển trao đổi * bộ thay đổi *, tức là tương đương với các bản vá, hoặc sử dụng các công cụ điều khiển phiên bản, có xu hướng hoạt động theo kiểu DVCS hơn và trên các thực thể mã (lớp và phương thức) thay vì tệp và dòng mã : - Envy - Cửa hàng (Cincom Smalltalk) - Monticello (Squeak, Pharo). –

+0

Ví dụ với Envy/Developer, một lập trình viên có thể tạo một phiên bản mới của phương thức, tạo và chấp nhận một loạt các thay đổi đối với phương thức đó (mỗi thay đổi được chấp nhận sẽ được phục hồi), tên và phiên bản rõ ràng. các thay đổi) và sau đó xuất bản. – igouy

2

Hầu hết các triển khai của Common Lisp.

+0

Tôi không biết tại sao nhưng cú pháp LISP rất khó đọc ... dù sao tôi cũng sẽ kiểm tra Làm thế nào phổ biến lisp được thực hiện bằng cách sử dụng hình ảnh. –

+2

Tôi đã không đề nghị Common Lisp. Tôi vừa trả lời câu hỏi. – stesch

+0

Lý do một số người thấy cú pháp khó đọc là có khá nhiều không phải là một. Bạn chỉ cần viết cây phân tích là biểu thức S. Một số người thấy việc thiếu cấu trúc này ... gây rối loạn. –

8

Factor là Forth với nhiều tính năng cấp cao và hình ảnh.

2

Yea, hầu hết Forth đều dựa trên hình ảnh.

1

Để trả lời câu hỏi của Bill K: có vẻ như nó hoạt động tốt (mặc dù tôi đã không cố gắng kiểm soát phiên bản trong một nhóm cá nhân).

Tất cả các hệ thống Smalltalk cũng có một chút khác biệt. Có một podcast rất thú vị tất cả về nó trên The Stack Trace. Phần lớn áp dụng cho tất cả các môi trường phát triển dựa trên hình ảnh.

+1

ELINKDEAD, thật không may, vì tôi muốn đọc điều đó. –

2

Tôi đã xảy ra trên this comment mà tôi nghĩ mang lại cho một hương vị của sự phát triển dựa trên hình ảnh.

'Vì vậy, trong khi tôi có thể và sử dụng JVM để tính toán phía máy chủ, đó là một chút trọng lượng nặng cho các tác vụ nhỏ và đơn giản. Câu trả lời chung của Lisp đối với vấn đề này là một câu hỏi khéo léo. Thay vì xây dựng các chương trình mà bạn chạy lặp đi lặp lại, nó cung cấp một "môi trường" trong đó mã được đánh giá lặp đi lặp lại, để bạn thực sự phát triển và nuôi dưỡng một bộ chức năng đang phát triển trong một máy ảo chạy dài. Tôi thích mô hình này khi thích hợp và tận hưởng nó, ví dụ như trong Emacs, mà tôi có thể để chạy trong nhiều ngày khi đồng thời mở rộng chức năng của nó bằng cách viết các chức năng mới và tùy biến biến. "

5

Bạn thực sự có thể xem xét cơ sở dữ liệu SQL như là hình ảnh dựa trên - dữ liệu và mã (các thủ tục lưu trữ) đều được lưu trữ cùng nhau trong một đốm màu đục lớn.

+0

Tôi muốn thêm "Unix" là một hệ thống phát triển dựa trên hình ảnh. Hình ảnh là hệ thống tệp tin - thật đáng buồn là chúng chỉ lưu trữ văn bản đã chết thay vì các đối tượng có ý nghĩa. DBM quan hệ là các hệ thống phát triển dựa trên hình ảnh. Tôi đồng ý với OP rằng hình ảnh cực kỳ mạnh mẽ. Tôi nghĩ rằng một sai lầm đã nghĩ đến "một" hình ảnh là một điều quan trọng. Nó sẽ là một bộ nhớ đệm nhân rộng, giống như một repo git. Không phải "tất cả công việc của bạn", giống như một tài liệu từ. – Benjohn

1

Phiên dịch BASIC sớm có thể được coi là dựa trên hình ảnh, trong đó chúng kết hợp trình chỉnh sửa thô sơ và giữ lại biểu mẫu nguồn của chương trình trong khi người dùng làm việc trên đó và cung cấp các lệnh như "SAVE" và "LOAD" (hoặc là nó "ĐỌC"?) để lưu toàn bộ chương trình vào một tập tin nguồn và tải nó lại sau.

1

Ứng dụng một trang có thể được coi là một loại hình ảnh cho JavaScript + HTML. Ứng dụng một trang có nghĩa là ứng dụng [web] nơi tất cả dữ liệu, mã và trạng thái được chứa trong một tài liệu HTML.

Cân nhắc TiddleWiki làm ví dụ: http://www.tiddlywiki.com/

+0

Chúng không lưu trữ trạng thái hoạt động của chương trình trong hình ảnh, mặc dù --- mỗi lần trang tải lại, nó bắt đầu thực hiện từ đầu. –

+0

Đây thực sự không phải là một ví dụ. – Shayne

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