Tạo một ngôn ngữ kịch bản mới cho trải nghiệm học tập? [đóng cửa]


13

Là tạo ra một ngôn ngữ kịch bản cho kinh nghiệm học tập cá nhân của riêng tôi có đáng không?

Lý do tôi hỏi là đã có sẵn rất nhiều ngôn ngữ lập trình, tôi biết ngôn ngữ của tôi sẽ không bao giờ có bất kỳ việc sử dụng thực tế nào ngoài việc cung cấp trải nghiệm học tập tốt. Tuy nhiên, tôi thấy những hạn chế khi chỉ cố gắng tạo ra một ngôn ngữ kịch bản như một kinh nghiệm học tập: sẽ mất rất nhiều thời gian và nỗ lực để tôi có thể làm một việc gì đó "hiệu quả hơn".

Việc tạo ra một ngôn ngữ lập trình (bao gồm viết các bản nháp về mục đích, cú pháp, triết lý, thông dịch viên, v.v.) của nó có xứng đáng với thời gian, công sức và kinh nghiệm học tập không? Hoặc có những dự án khác tôi có thể hưởng lợi nhiều hơn từ?


3
Một lựa chọn khác là thực hiện một ngôn ngữ hiện có. Tôi dần dần phát triển một phương ngữ ECMAScript có tên Machete trong hơn một năm và học được khá nhiều.
ChaosPandion

Thú vị, tôi đã không nghĩ về điều đó.
Ivan

2
1) Tìm hiểu điều này ... www1.idc.ac.il/tecs 2) và điều này ... mitpress.mit.edu/sicp
Joe Internet

bạn cũng có thể xem xét đóng góp cho các dự án hiện có v8, SpiderMonkey hoặc Python
treecoder

3
IMHO, cách tốt nhất để học các ngôn ngữ lập trình mới là triển khai các trình biên dịch cho chúng (hoặc ít nhất là cho các tập hợp con quan trọng của ngôn ngữ gốc). Vì vậy, vâng, nó thực sự là một kinh nghiệm học tập hữu ích.
SK-logic

Câu trả lời:


15

Xây dựng kỹ năng và danh mục đầu tư của bạn

Theo tôi đó sẽ là một kinh nghiệm học tập rất tốt vì nó sẽ:

  • buộc bạn phải nhìn dưới mui xe ,
  • hướng dẫn bạn tìm hiểu cách mọi thứ được thực hiện trong nội bộ ,
  • khuyến khích bạn xem xét và so sánh các triển khai khác ,
  • giữ cho kỹ năng thuật toán của bạn lên đến tốc độ,
  • làm cho bạn (và hy vọng tài liệu ) rất nhiều, điều đó cũng không phải là xấu,
  • cung cấp cho bạn một dự án và cơ sở mã quan trọng mà bạn có thể chia sẻ trực tuyến cho tất cả mọi người cùng xem, cho:
    • hưởng thụ và hài lòng cá nhân ,
    • thể hiện kỹ năng của bạn với các nhà tuyển dụng tiềm năng,
    • giao tiếp và trao đổi với các đồng nghiệp quan tâm trong cùng lĩnh vực,
    • có khả năng để nó phát triển thành một thứ gì đó nhiều hơn ...

Vì vậy, tôi thấy điều này là sản xuất, hữu ích và tổng thể "đáng giá".

Bắt đầu

Bây giờ bạn có thể sử dụng các phương pháp khác nhau, tùy thuộc vào thời gian bạn dự định chi tiêu cho việc này ...:

  • Nếu bạn có khung thời gian giới hạn, tôi sẽ nói bổ nhào và viết mã.
  • Nếu bạn có khung thời gian rộng hơn, thì bạn thực sự có thể đi theo con đường dài và viết thông số kỹ thuật, hướng dẫn, hướng dẫn, v.v ...

Khởi đầu nhỏ

Tôi muốn khuyên bạn nên bắt đầu nhỏ . Không ai từng biết, mà tôi biết, đã viết trực tiếp một ngôn ngữ tuyệt vời như thế. Bạn vấp ngã và thất bại, thất bại, thất bại và thất bại . Sau đó, bạn thành công, trong đó nó hoạt động nhưng vẫn hút, vì vậy bạn bắt đầu lại một lần nữa. Và bạn thêm các tính năng mới và cuối cùng nó cũng trở nên thú vị, nhưng đột nhiên bạn nhận ra rằng có một khái niệm cơ bản mà bạn đã làm hỏng ngay từ đầu. Vì vậy, bạn bắt đầu lại một lần nữa ...

Có vẻ rất giáo dục đối với tôi.

Đi trước (và chia sẻ liên kết với chúng tôi).

Nhỏ, như trong "ngắn"

Nhưng một lần nữa, tôi khuyên bạn nên bắt đầu nhỏ . Đừng sợ nếu mọi người nói rằng nó sẽ mất rất nhiều mã và thời gian. Không nhất thiết, nếu bạn không nhắm đến một ngôn ngữ phức tạp. Alan Kay và các kỹ sư khác của Xerox PARC bị cáo buộc đã phát triển một phiên bản đầu tiên của Smalltalk phù hợp với một tờ giấy , như một mục tiêu cho sự căng thẳng (đọc Xerox PARC: Dealers of Lightning để biết chi tiết về lịch sử của PARC ). Có vẻ là một cách tiếp cận đủ tốt, có tính giáo dục và hạn chế (miễn là nó không hy sinh khả năng đọc).

Nhỏ, như trong "ràng buộc"

Bạn không cần phải hỗ trợ ngay một hệ thống loại tiên tiến, chức năng cấp cao hơn và kết hợp của 42 mô hình khác nhau. Nó chỉ có thể là một ngôn ngữ biểu hiện toán học.

Sử dụng lại (và Peek at) Kiến thức khác

Bạn cũng có thể muốn xem qua các công cụ được sử dụng để viết ngôn ngữ từ đầu. Bạn có thể thực hiện lại tất cả mọi thứ của mình, nhưng có lẽ cũng đáng để xem xét các trình tạo từ vựng và trình phân tích cú pháp hiện có.

Và rõ ràng, bạn có thể muốn đọc lên về trình biên dịch lớn.


Bây giờ, nếu chúng tôi sửa đổi câu hỏi của bạn thành "đó có phải là cách sử dụng hiệu quả nhất thời gian của bạn không?" nó trở thành một vấn đề hoàn toàn khác :)

Có rất nhiều dự án học tập khác mà bạn có thể giải quyết, và điều đó sẽ đào tạo và thể hiện các kỹ năng của bạn tốt như nhau, nếu không tốt hơn. Nó phụ thuộc vào những gì bạn muốn nhắm đến.


2
+1 cho "Sau đó, bạn thành công, trong đó nó hoạt động nhưng vẫn hút"
Ivan

1
@Ivan: Cảm ơn :) Đó có lẽ là một phần tốt khác của trải nghiệm học tập: hướng nội, khiêm tốn và kiên trì!
haylem

1
Tôi đồng ý với haylem. Số tiền bạn sẽ học về lập trình trong thế hệ chung, cách ngôn ngữ hoạt động, các phương pháp thực hiện khác nhau sẽ rất xứng đáng. Vâng, bạn có thể sẽ là người duy nhất từng thấy nó nhưng nó sẽ trở thành dự án thú cưng nhỏ của bạn mà bạn làm việc để cải thiện bản thân.
RJay75

3

Tôi nói đi trước.

Việc triển khai ngôn ngữ lập trình bao gồm nhiều chủ đề và bạn sẽ học được rất nhiều về cách mọi thứ hoạt động dưới mui xe. Bạn có thể sẽ trải qua một nửa tá nỗ lực thất bại, nhưng kinh nghiệm học tập là vô giá.


2

Thiết kế và thực hiện ngôn ngữ lập trình (đồ chơi nhưng hoàn chỉnh) thực sự là một trong những bài tập (bắt buộc?) Trong một trong các lớp CS cấp trên của tôi (cả lớp trình biên dịch hoặc khảo sát ngôn ngữ lập trình, tôi quên mất ...)

Vì vậy, ít nhất một giáo sư CS đã nghĩ như vậy.

Bạn sẽ kết thúc với sự đánh giá cao hơn nhiều đối với tất cả những "điều kỳ quặc" mà các ngôn ngữ khác có.


1

Nó sẽ mất một thời gian để làm. Bạn có kế hoạch duy trì nó?

Việc tạo ra một ngôn ngữ lập trình (bao gồm viết các bản nháp về mục đích, cú pháp, triết lý, thông dịch viên, v.v.) của nó có xứng đáng với thời gian, công sức và kinh nghiệm học tập không? Hoặc có những dự án khác tôi có thể hưởng lợi nhiều hơn từ?

Tôi cho rằng tình trạng tài chính của bạn không phải là vô hạn, vì vậy tôi sẽ nói rằng nó không đáng thời gian. Bạn có thể dành thời gian cho các dự án hữu ích khác có thể giúp bạn kiếm tiền. Hãy nhớ rằng đây có thể không phải là câu trả lời bạn đang tìm kiếm, nhưng từ quan điểm hợp lý, tôi sẽ nói rằng ngôn ngữ lập trình của bạn có thể không phải là dự án phù hợp vào lúc này. Tôi sẽ xem xét nó nếu bạn là một nhà khoa học máy tính đã nghỉ hưu, và cảm thấy cần phải đóng góp cho ngành công nghiệp. Có vẻ như bạn có một niềm đam mê mạnh mẽ đối với lập trình, và điều đó thật tuyệt. Nhưng, xây dựng một ngôn ngữ kịch bản hoàn toàn mới? Đó sẽ là một dự án cực kỳ dài. Trong thời gian đó, bạn có thể đã xây dựng nhiều ứng dụng mà bạn có thể đưa vào danh mục đầu tư của mình. Tôi nghĩ câu hỏi là:


2
Tôi không biết ... một lao động lớn của tình yêu đã bỏ qua hai mươi ứng dụng có thể khiến bạn kiếm được một trăm đô la mỗi ứng dụng.
ChaosPandion

Việc triển khai các ngôn ngữ cụ thể trong miền thực sự có thể tăng tốc độ phát triển của một dự án thực tế đáng kể. Vì vậy, nó có thể khá bổ ích về mặt tài chính cũng như thẩm mỹ.
SK-logic

1
Một số người tạo ra mọi thứ vì họ thích tạo ra mọi thứ ... không phải vì hành động sáng tạo nói trên sẽ mang lại cho họ một số tiền mặt.
Jetti

@Jetti. Vâng tôi biết. Đó là lý do tại sao tôi nói câu trả lời này có thể không phải là câu hỏi mà bạn đang tìm kiếm và tôi có thể nói với bạn có niềm đam mê lập trình. Tôi đánh giá cao đầu vào của bạn, vì tôi đang chờ đợi ai đó nói điều gì đó giống như những gì bạn đã nói về câu trả lời này.
Ryan

@Ryan - xin lỗi tôi đã bỏ lỡ phần đó.
Jetti

-2

Lời khuyên của tôi cho bạn là

Không phát minh lại bánh xe

Cảm hứng cho phép ẩn dụ thành ngữ này nằm ở chỗ bánh xe là nguyên mẫu của sự khéo léo của con người, cả nhờ sức mạnh và sự linh hoạt mà nó mang lại cho người sử dụng, và cả nguồn gốc cổ xưa cho phép nó trải qua nhiều, nếu không phải là tất cả , của công nghệ hiện đại. Vì nó đã được phát minh và không được coi là có bất kỳ sai sót nào trong hoạt động, một nỗ lực để phát minh lại nó sẽ là vô nghĩa và không có giá trị cho đối tượng, và sẽ lãng phí thời gian, chuyển hướng các nguồn lực của điều tra viên khỏi các mục tiêu có thể xứng đáng hơn mà kỹ năng của anh ấy hoặc cô ấy có thể tiến bộ hơn.

Bạn nên tự hỏi:

  • Tại sao bạn cần tạo kịch bản? Là kịch bản hiện có ngoài đó không đủ tốt?
  • Bạn sẽ duy trì và xuất bản nó, và bạn có tự tin rằng kịch bản của bạn sẽ được sử dụng bởi các lập trình viên khác không? Nếu câu trả lời của bạn là không, đừng làm điều đó.

Tôi hiểu rằng bạn muốn có nhiều kinh nghiệm học tập hơn và vì lý do đó cá nhân tôi nghĩ rằng việc tạo khung sẽ mang lại cho bạn nhiều kinh nghiệm học tập hơn và với phần thưởng mà bạn / nhóm / cộng đồng của bạn có thể sử dụng lại sau đó, hơn là tạo ra một kịch bản.

Và truyện tranh xkcd này có một chút liên quan, chỉ cần thay đổi "tiêu chuẩn" thành "ngôn ngữ":

nhập mô tả hình ảnh ở đây


-1, ông nói rõ ràng điều này sẽ dành cho trải nghiệm học tập cá nhân.
GrandmasterB

Chỉ muốn thẳng thắn rằng việc tạo ra kịch bản sẽ không mang lại trải nghiệm và lợi ích học tập cá nhân thực sự cho bản thân và cộng đồng. Tôi cũng đã thêm câu trả lời của mình rằng việc tạo khung sẽ thực sự mang lại lợi ích cho anh ấy và cộng đồng nhiều hơn. Tôi không phiền khi nhận được nhiều phiếu bầu hơn, nếu bạn cảm thấy điều đó không đúng.
Rudy

2
Đúng, bạn đúng - sẽ không có lập trình viên năm nhất nào viết "Xin chào, thế giới!" Đầu tiên của anh ấy - sau tất cả, sẽ tốt hơn nhiều nếu chỉ tải xuống một cái hiện có. Và " khuôn khổ " trong bối cảnh này là gì?
SK-logic

5
@Rudy, thực hiện trình biên dịch hoặc trình thông dịch là một kỹ năng cơ bản và tầm thường khá gần với "Xin chào, Thế giới!". Đó là lý do tại sao nó là bắt buộc trong bất kỳ khóa học CS tốt. Và, mặc dù tầm thường, nhiệm vụ này dạy một số kỹ năng rất hữu ích, có thể áp dụng trong thực tế ở hầu hết mọi lĩnh vực. Không cần phải đề cập đến việc triển khai DSL là vô cùng quan trọng (lưu ý bạn - rằng điều Hibernate mà bạn đã đề cập DSL, và có một số trình thông dịch và trình biên dịch nhúng trong đó, một số trong đó được triển khai khá kém).
SK-logic

3
@ SK-logic - Bạn không giúp ích cho lòng tự trọng của tôi ở đây ... :)
ChaosPandion
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.