Ngôn ngữ lập trình uốn cong tâm trí nhất? [đóng cửa]


45

Từ một ngôn ngữ lập trình hợp lý phổ biến, bạn thấy mình là người có đầu óc nhất?

Tôi đã nghe rất nhiều podcast lập trình và dành thời gian để học một số ngôn ngữ mới đang được coi là sắp tới và quan trọng. Tôi không nhất thiết phải nói về BrainFuck , nhưng ngôn ngữ nào bạn sẽ coi là ngôn ngữ thách thức các mô hình lập trình phổ biến?

Đối với tôi, tôi đã thực hiện một số lập trình chức năng và logic (ví dụ, Prolog ) vào những năm 1990, vì vậy tôi không thể nói rằng tôi tìm thấy bất cứ điều gì đặc biệt ở đó.

Tôi không phải là một chuyên gia về nó, nhưng ngay cả ngày nay, ngôn ngữ lập trình gây chú ý nhất đối với tôi là Perl . Không phải vì "Hello World" khó thực hiện, mà là có rất nhiều tính linh hoạt từ vựng đến nỗi một số giải pháp khó nhất có thể bị phân hủy đến nỗi tôi phải đi ra khỏi nhà ga để rời khỏi đầu. Tôi không nói rằng tôi có khả năng bán một triển khai phần mềm thương mại, chỉ là có một lý do riêng biệt khiến Perl nổi tiếng như vậy. Chỉ cần nhìn vào danh sách cơ bản của cuốn sách trên đó.

Vì vậy, ngôn ngữ uốn cong tâm trí của bạn thúc đẩy lập trình và thực hành tốt hơn của bạn là gì?


Nó không thể là tâm trí và chỉ để nó ở đó?

4
Bất kỳ ngôn ngữ nơi không gian trắng quan trọng!
mootinator

@mootinator - Nhưng Python thực sự rất thú vị khi làm việc miễn là trình soạn thảo văn bản của bạn không gây đau đớn cho bạn.
rjzii

1
@Thorbjorn Có ai đó sẽ thêm INTERCAL không? APL là một dự án trung học cơ sở so với người cha lớn đó.
Đánh dấu C

Perl không ở đâu gần nhất. Tôi 12 tuổi và tôi có thể dễ dàng lập trình Perl.
Động

Câu trả lời:


73

APL

Ngôn ngữ này cực kỳ mạnh mẽ và rất ngắn gọn, nó sẽ làm tổn thương não của bạn.

Đối với người mới bắt đầu, thật khó để sử dụng mà không có bàn phím tùy chỉnh hoặc ít nhất là lớp phủ bàn phím để hiển thị tất cả các biểu tượng tối nghĩa mà nó sử dụng.

Bàn phím APL

Sau đó, ngôn ngữ là mô hình dựa trên vectơ / mảng và chuyên về đại số tuyến tính phức tạp. Phiên bản gốc thậm chí không có cấu trúc vòng lặp, bất cứ điều gì và mọi thứ được thực hiện bằng cách kết nối các toán tử mảng khá bất thường với nhau.

  • strip_tags()có ai không (mượn từ Wikipedia)

dải_tags () ala APL


18
+1 để hiển thị bàn phím
tcrosley

5
@tcrosley: Thật tuyệt nếu bạn có một cái thật: wickensonline.co.uk/apl/unicomp-apl-top-large.jpg
Orble

4
Và nếu nó chưa đủ uốn cong, có một số toán tử được yêu cầu sử dụng phím backspace / overstrike. Ví dụ, nghịch đảo ma trận là hộp vuông (trên phím L) quá mức với dấu phân chia (cái bên cạnh phím backarrow ở góc trên bên phải của hình ảnh bàn phím).
Tangurena

2
Tôi đang hồi tưởng vào đầu những năm 1980 khi tôi làm APL để thực hiện phân tích hồi quy thống kê cấp cao, mọi người vẫn sử dụng nó? Nghẹn ngào.
HLGEM

2
Tôi đã làm rất nhiều APL một lần - nó vẫn giữ một vị trí hoài cổ đối với tôi ... Tôi yêu nó vào thời điểm đó.
quick_now

56

Haskell . Nó rất gần với chức năng hoàn toàn, mà hầu hết mọi người không quen thuộc; rất khắt khe, rất hữu ích khi bạn biết bạn đang làm gì nhưng bực bội cho đến lúc đó; có một cú pháp khá khó hiểu, mang tính biểu tượng cao, thật tuyệt vời khi bạn biết điều đó nhưng mờ đục trước đó ... danh sách vẫn tiếp tục.

Ngoài ra, đơn giản là không thể định dạng nội dung theo cách có vẻ tốt với tôi.


7
Tôi cũng có thể nói Haskell, nhưng không phải vì nó khó hiểu. Trong khi nó chắc chắn có thể khó hiểu, điều uốn cong tâm trí là về lý thuyết đằng sau nó. Monad và Mũi tên vẫn là một miền tôi chưa chinh phục được :)
Matthieu M.

11
Tại sao "Rất gần với chức năng hoàn toàn"? Nó hoàn toàn là chức năng.
dan_waterworth

4
Tôi muốn tự trích dẫn và thêm vào cách Haskell sẽ bẻ cong tâm trí của bạn: "Haskell ngăn bạn đẩy những thứ dưới thảm, buộc bạn phải xử lý rõ ràng cấu trúc chương trình của bạn và nó dạy cho bạn một ngôn ngữ để mô tả các cấu trúc này : ngôn ngữ của các loại. Hiểu các loại, đặc biệt là các loại phong phú như Haskell, sẽ giúp bạn trở thành một lập trình viên tốt hơn trong bất kỳ ngôn ngữ nào. " lập trình
viên.stackexchange.com/questions/28950 / từ

14
Haskell là một ngôn ngữ lập trình chức năng thuần túy. Mã bạn viết trong Haskell hoàn toàn có chức năng (miễn là bạn không sử dụng unsafePerformIO và tương tự). IO-Monad hoàn toàn có chức năng, nếu bạn tin khác, bạn không hiểu làm thế nào các đơn vị được sử dụng để mô hình hóa dòng điều khiển theo cách hoàn toàn có chức năng. Hãy nghĩ về chương trình của bạn như một danh sách mua sắm các hành động IO, với danh sách mua sắm chỉ là một cấu trúc dữ liệu thuần túy, không có tác dụng phụ và thời gian chạy ngôn ngữ là người mua sắm thực hiện các tác dụng phụ.
Chờ

8
@Jon, làm thế nào, chúng tôi đồng ý rằng: Haskell, ngôn ngữ, hoàn toàn là chức năng, nhưng hệ thống thời gian chạy thì không. Việc thực hiện một chương trình haskell là không tinh khiết, nhưng bản thân chương trình này là thuần túy.
dan_waterworth

30

Prolog. Nó chỉ khác biệt so với bất kỳ ngôn ngữ nào khác mà tôi đã sử dụng khi lần đầu tiên tiếp xúc với nó. Tôi thích nó, vì vậy tôi không ghét cú pháp hay bất cứ điều gì.


2
Tôi đã tiếp cận Prolog như lập trình ngược, muốn biết câu trả lời của mình và sau đó lập trình để nhận câu hỏi :)
Jé Queue

1
@Xepoch: Tôi nghĩ bạn có thể ở ngay đó, Prolog đang hình thành câu hỏi. Một trong những ngôn ngữ 5GL thích hợp duy nhất được sử dụng.
Orble

Nói chung, tôi nghĩ Prolog rất thú vị và đặc biệt mạnh mẽ, nhưng tôi gặp khó khăn lớn khi phải hoàn toàn xoay quanh vị trí bị cắt ( !).
Orble

+1 cho Prolog, tôi đã có một khóa học về trí tuệ nhân tạo sử dụng Prolog và đó chỉ là khóa học khoa học máy tính duy nhất mà tôi đã làm rất kém.
rjzii

Prolog không phải là một ngôn ngữ lập trình chức năng mặc dù. Được Prolog chua chát về chức năng cũng giống như bị chua về lập trình thủ tục bởi Lisp.
CHỈ CẦN HOẠT ĐỘNG CỦA TÔI NGÀY

24

Tôi sẽ đồng ý với bạn trên Perl. Đó là cú pháp xấu nhất tôi từng thấy. Họ nói rằng, ngay cả các nhà phát triển Perl cũng không thể nhớ những gì họ đã viết ngày hôm sau.


2
Def +1 trên Perl. Tôi luôn đặc biệt thích (tôi tin rằng chúng được gọi) các biến 'ngụ ý'. Làm cho mã chỉ viết tuyệt vời.
GrandmasterB

2
Mọi người viết Perl khác nhau đến mức họ cũng có thể viết các ngôn ngữ khác nhau - bạn không cần phải học cách Perl hoạt động để lấy mã của người khác trong đó, bạn cũng phải học cách người đó sử dụng nó.
glenatron

3
Bah cho câu trả lời này và cả hai ý kiến ​​về nó. Perl viết tốt là dễ đọc và viết. Baby-perl được viết bởi người mới là đơn giản, nếu dài dòng. Perl "không thể đọc được" duy nhất bị che khuất về mục đích, hoặc kịch bản một lớp.
Sean McMillan

22

Tôi sẽ phải nói Forth . Ký hiệu rằng tất cả các hoạt động là thao tác ngăn xếp. Ở dạng thuần túy của nó không có biến cục bộ để sử dụng.


10
FORTH là một ngôn ngữ tuyệt vời. Khi tôi lần đầu tiên học lập trình vào đầu những năm 80, tôi đã có một Atari 400 và các lựa chọn của tôi đã được giải thích BASIC, hội và FORTH. Tôi đã sử dụng cả ba rộng rãi, nhưng FORTH nhiều hơn bất kỳ khác. Tôi vẫn có những cuốn sách FORTH và Thinking FORTH cực kỳ kinh điển của Leo Brodie. Trong thực tế, nếu tôi được yêu cầu tạo một ngôn ngữ tự lưu trữ từ đầu trên một hệ thống phần cứng mới, tôi sẽ chọn FORTH mà không do dự.
Adam Crossland

3
@ Adam Crossland: Tư duy QUY ĐỊNH là một cuốn sách tuyệt vời, bạn có thể quan tâm liên kết này: thinking-forth.sourceforge.net
Orbling

1
@ Tổ chức: những bộ óc vĩ đại nghĩ giống nhau. Không quá 10 phút trước, tôi đã đặt bản PDF lên Kindle.
Adam Crossland

1
@Adam Crossland: Một nơi tốt cho nó. Cuốn sách đó thường hữu ích cho các lập trình viên, nên có trong danh sách đọc cho những người - quan tâm đến FORTH hay không.
Orble

1
Tôi hoàn toàn đồng ý. Nó có rất nhiều điều để nói về cách chúng ta nghĩ về việc giải quyết vấn đề nói chung. Brodie là một nhà tư tưởng sáng suốt và nhà văn rõ ràng. Những tác phẩm của anh ấy là một niềm vui đối với tôi.
Adam Crossland

21

Ruby .

Điều này khiến tôi muốn tự sát:

1.month.from.now()

(Tôi có thể có cú pháp chính xác sai, nhưng bạn nhận được điểm).


23
CHÚA ƠI. Ai đã từng nghĩ đây là một ý tưởng tốt?
EpsilonVector

8
Tâm trí không phải là với việc đọc, nó là với văn bản. Đến với điều vô nghĩa này là khó khăn, và phải ghi nhớ / tra cứu tất cả các chức năng / thuộc tính tích hợp là vô lý.
Matthew Đọc

55
Có phải chỉ mình tôi nghĩ rằng điều này có vẻ tuyệt vời, và có thể là một lý do tốt để học Ruby?
Orble

9
Nó là tuyệt vời để đọc, vâng. Nhưng điều này có nghĩa là tôi có thể viết 3.months.from.last.month.if.it.was.a.leap.year? Không. Hoặc ít nhất, tôi không nghĩ vậy. Nếu tôi có thể ... RoR có thể là ngôn ngữ ngoại cảm đầu tiên.
morganpdx

15
Có chuyện gì DateTime.Now.AddMonths(1);vậy Các tính năng này hầu như không làm cho mã dễ đọc hơn. (Tôi không nói C # có cú pháp tốt nhất. Bạn có thể chuyển nó sang bất kỳ quy ước ngôn ngữ nào và nó vẫn sẽ được áp dụng.)
ChaosPandion

18

Brainfuck

Bất cứ ai có thể thành thật viết ra sự nhạo báng ngôn ngữ này thậm chí không cần một chủ đề như thế này.

Hello World (con trỏ, trái; giải thích, phải):

+++++ +++++             initialize counter (cell #0) to 10
[                       use loop to set the next four cells to 70/100/30/10
    > +++++ ++              add  7 to cell #1
    > +++++ +++++           add 10 to cell #2 
    > +++                   add  3 to cell #3
    > +                     add  1 to cell #4
    <<<< -                  decrement counter (cell #0)
]                   
> ++ .                  print 'H'
> + .                   print 'e'
+++++ ++ .              print 'l'
.                       print 'l'
+++ .                   print 'o'
> ++ .                  print ' '
<< +++++ +++++ +++++ .  print 'W'
> .                     print 'o'
+++ .                   print 'r'
----- - .               print 'l'
----- --- .             print 'd'
> + .                   print '!'
> .                     print '\n'

2
Hay làm thế nào về khoảng trắng? Tất cả sự xấu xa của Brainfuck kết hợp với mã vô hình.
Loren Pechtel

17

Lisp là ngôn ngữ uốn cong tâm trí mới nhất của tôi.

Tôi đã mang theo các đơn nguyên và lập trình chức năng từ Haskell với tôi và bây giờ tôi có macro để làm việc. Tôi mới vào CLOS và chưa chạm vào hệ thống điều kiện.


Tôi thậm chí không thích Lisps (với ngoại lệ có thể có của Clojure - tôi vẫn chưa quyết định ở đó) và cho bạn +1. Phần suy nghĩ chắc chắn là có và những gì tôi học được từ Lisp, mặc dù tôi không sử dụng nó, đã thông báo nhiều về những gì tôi làm trong các ngôn ngữ khác.
CHỈ CẦN HOẠT ĐỘNG CỦA TÔI đúng

14

NHIỀU

Đây là một ngôn ngữ mà bật lên từ thời gian để thời gian trong câu chuyện trên mạng và có vinh dự nhất của việc sử dụng thực tế sản xuất lưu trữ thông tin quan trọng cuộc sống an toàn (có nghĩa là, hồ sơ bệnh án). Tuy nhiên, đây cũng là ngôn ngữ mà sự căng thẳng được đánh giá cao và các chức năng như sau có thể xuất hiện trong mã sản xuất (ví dụ từ bài viết Wikipedia về chủ đề này):

s A="String" F i=1:1:$L(A) W $c($S($A($E(A,i))<91:$A($E(A,i))-52#26+65,1:$A($E(A,i))-84#26+97))

wow, bạn không nói đùa phải không? Tôi đã không ngủ và đột nhiên là ngày 1 tháng 4? Không có gì với nhiều dấu ngoặc đơn và ký hiệu đô la nên ở bất cứ đâu gần hồ sơ bệnh nhân của tôi.
dan_waterworth

1
Công việc lập trình đầu tiên của tôi là với một công ty chuyên về MUMPS! Đáng buồn là tôi đã thực hiện một khóa học đại học về phát triển web để họ đưa tôi vào nhóm ASP mới thành lập của công ty thay vì với bàn tay cũ, nhưng MUMPS là ngôn ngữ mà chúng tôi đã được đào tạo trong vài tuần đầu tiên. Có lẽ tôi đã có một cuộc trốn thoát may mắn ...
thesunneversets

1
Bất cứ ai đăng ở đây từ Madison Wisconsin? Verona, thật sao?
Hans Passant

1
Tôi tin rằng thed Dailywtf.com có ​​cả một phần dành riêng cho MUMPS. Không giống như một ngôn ngữ tôi muốn chạm vào.
Tyanna

1
Tôi nhớ việc học M ở học viện, và nghĩ rằng nó thật thú vị như một ngôn ngữ có mục đích đặc biệt. Sự căng thẳng mà nó cho phép giống như một kiểu thu nhỏ. Trong sự ngây thơ của tôi, tôi đã hình dung mã sản xuất sẽ chứa rất ít tốc ký cực đoan của ngôn ngữ. Lần đầu tiên và duy nhất tôi thấy một sản phẩm M codebase, ruột của tôi thắt chặt ... nó trông giống như ví dụ của bạn. Ôi, kinh hoàng!
ajk

13

Tôi muốn nói Coq , hoặc một triển khai khác của lý thuyết loại phụ thuộc. Hệ thống loại của Haskell không phải là rất biểu cảm so sánh. Chuyển sang một hệ thống loại biểu cảm hơn (ví dụ: phép tính các cấu trúc (CoC)) cho phép bạn thực hiện một số việc gọn gàng, như chứng minh các thuộc tính của các chương trình trong ngôn ngữ và nhúng các bất biến mạnh vào các loại có thể được kiểm tra tĩnh.


2
Bất kỳ hệ thống / câu tục ngữ / ngôn ngữ phụ thuộc nào cũng có thể đánh giá khó hiểu hơn các ngôn ngữ thông thường, vì vậy +1.
Orble

1
Xác minh chính thức các chương trình là điều mà tôi mới bắt đầu. Nó chắc chắn bẻ cong tâm trí và ngày càng trở nên hữu ích trong thế giới thực. +1
dan_waterworth

7

Mục tiêu-C . Công bằng mà nói, tôi chỉ nghiên cứu nó cực kỳ ngắn gọn và không thích cú pháp ngay từ cái nhìn đầu tiên đến nỗi tôi đã từ bỏ nó.

Vì đây là ngôn ngữ phổ biến (tương đối) (chủ yếu dành cho phát triển Mac / iPhone / iPad ), tôi chắc chắn rằng nó thực sự có phần đàng hoàng một khi bạn đã quen với nó.


2
Chà, nó có lẽ đủ điều kiện như một chút uốn éo, nhưng tôi thích nó. Nó có thể hữu ích nếu bạn nhận ra [foo bar]chỉ là đường cú pháp objc_sendMsg(foo, "bar");mà lần lượt tìm kiếm con trỏ hàm (nó là một "thanh" đặc biệt, không phải là một loại chung chung). Bạn có nhận ra nó hoàn toàn gõ vịt?
Per Johansson

Objective-C chỉ là một đường cú pháp khổng lồ xung quanh các hàm thời gian chạy. Khi bạn đã quen với [receiver doStuff:arg]nó, nó trông khá giống một java động
to nướng_flakes

6

Tôi chọn sao Thủy .

Thủy cúi tâm trí của tôi bằng cách hiển thị cho tôi rằng ngay cả ngôn ngữ thuần có thể thực hiện I / O .

Cách thức hoạt động này là các chức năng I / O trong Sao Thủy lấy giá trị 'trạng thái của thế giới' và trả về giá trị 'trạng thái mới của thế giới'. Vì vậy, các chức năng I / O trong Sao Thủy biến đổi thế giới và do đó độ tinh khiết được duy trì.


3
+1 "... thủy ngân biến đổi thế giới và do đó độ tinh khiết được duy trì." - Tôi thích điều đó ra khỏi bối cảnh. ;-)
Orble

Tôi đang vật lộn qua đường cong học tập với Sao Thủy ngay bây giờ. Đó là một cuộc đấu tranh xứng đáng cho đến nay. Tôi rất thích nó.
CHỈ CẦN HOẠT ĐỘNG CỦA TÔI NGÀY

Điều duy nhất khiến tôi không còn thủy ngân là loại chuỗi đó là NULL bị chấm dứt.
dan_waterworth

6

Nó phải là Scheme , chắc chắn. Cố gắng giải thích call-with-current-continuationluôn làm tổn thương não tôi, nhưng một khi bạn hiểu nó, bạn có thể đưa ra những giải pháp vô cùng tao nhã.

Bạn muốn dừng một phần thông qua một thuật toán và điều khiển tay cho người khác? Chắc chắn rồi!

Bạn muốn tiếp tục cùng tiếp tục nhiều lần? Tất nhiên!

Bạn muốn tạm dừng thực thi thuật toán, xác định lại hàm, sau đó tiếp tục thực hiện với ngăn xếp ban đầu nhưng trạng thái toàn cầu được cập nhật? Không vấn đề gì! Và làm điều này nhiều lần với các thay đổi khác nhau đối với trạng thái toàn cầu nhưng cùng một điểm nhập lại ngăn xếp? Đối với bạn, thưa ông, bất cứ điều gì!


+1 LOL + "Dành cho bạn, thưa ngài, bất cứ điều gì!" Ngoài việc gần như là một dòng trong một bài hát trong Oliver!, Đó cũng là một khát vọng tốt cho một ngôn ngữ.
Orble

1
Lược đồ không phải là ngôn ngữ duy nhất có sự tiếp nối rõ ràng. Haskell , ví dụ, hỗ trợ nó tốt và vừa ý.
CHỈ CẦN HOẠT ĐỘNG CỦA TÔI NGÀY

4
Có thể nói là khó hiểu hơn ở Haskell, vì nó (cuộc gọi / cc) được triển khai như một thư viện chứ không phải là một tính năng ngôn ngữ. Nhưng có lẽ điều đó làm cho nó ít uốn cong tâm trí.
Logan Capaldo

Tôi nghĩ rằng nó đồng thời nhiều hơn và ít suy nghĩ hơn. Giữ mâu thuẫn đó trong đầu làm tôi suy sụp. Vì vậy, cuối cùng Haskell là uốn cong tâm trí hơn. :)
CHỈ CẦN HOẠT ĐỘNG CỦA TÔI NGÀY

Điều thú vị về các phần tiếp theo của Scheme (và Ruby !) chúng được tích hợp vào ngôn ngữ. Haskell về cơ bản chỉ cần thêm cú pháp đơn điệu xung quanh kiểu chuyển tiếp tiếp tục thông thường, điều mà bạn cũng có thể làm trong Lược đồ. Nhưng có cuộc gọi / cc tích hợp ở mọi nơi mà không cần phải nhúng toàn bộ vào một cấu trúc đơn nguyên chắc chắn cho phép nhiều cấu trúc uốn cong tâm trí.
Dario

4

Tôi đã từng sử dụng một trình soạn thảo cổ có tên là TECO (Text Editor và COmparator), đây là một ngôn ngữ sửa đổi văn bản rất mạnh mẽ, với tất cả các loại khả năng vĩ mô. Tôi không nhớ câu trích dẫn nổi tiếng chính xác về nó nhưng ý chính là "bất kỳ bộ sưu tập ngẫu nhiên nào gồm 20 ký tự hầu như luôn là một chương trình hợp pháp của TECO và sẽ thay đổi tệp của bạn (nó là một trình soạn thảo) theo cách cơ bản không thể tin được. Tôi nhớ là đã viết bộ chuyển đổi Fortran sang PL1 trong khoảng một trang mã TECO.


5
"Một trong những trò chơi thú vị hơn khi chơi với TECO là nhập tên của bạn dưới dạng một dòng lệnh và cố gắng đoán xem nó có tác dụng gì. Chỉ cần về bất kỳ lỗi đánh máy nào trong khi nói chuyện với TECO có thể sẽ phá hủy chương trình của bạn, hoặc thậm chí tệ hơn-- giới thiệu những lỗi tinh vi và bí ẩn trong chương trình con đã từng hoạt động. " Man, những ngày đã!
CHỈ CẦN HOẠT ĐỘNG CỦA TÔI

1
TECO cũng là cơ sở ban đầu của EMACS. EMACS khởi đầu chỉ là một bộ sưu tập các macro của TECO!
Gabe

@Omega: cần phải nói rằng bạn đang đề cập đến TECO nào. DEC TECO, như được vận chuyển với TOPS-10, hoặc MIT TECO, một bản được viết bằng MIDAS. Điều này sau đó là TECO là những gì EMACS đã được viết. Đó cũng là cách EMACS được mở rộng. Tôi đã từng hack EMACS thay vì vượt qua các lớp.
John Saunders

Tôi chỉ sử dụng DEC TECO. Và vâng, đó là những ngày (được trẻ lại) ....
Omega Centauri

1
Làm cho tôi nhớ gõ trong chế độ lệnh Vim
ron

3

Hội đã là "uốn cong tâm trí" nhất đối với tôi, nhưng tôi chỉ mới bắt đầu nó.


Điều làm cho nó tồi tệ hơn là nó phụ thuộc vào hệ điều hành và phần cứng
Dave

Điều gì về nó làm cho nó như vậy? Hướng dẫn thẳng mà không có thứ tự nhóm rõ ràng? thứ gì khác?
Jé Queue

tốt, đặc biệt, tôi không thích làm thế nào không rõ ràng dòng chương trình dễ dàng nhìn ra. Nó không dễ đọc nhanh.
Anto

2
À, Cincinnati Milacron 2200B: Độ dài từ biến đổi kết hợp với sửa đổi thời gian chạy địa chỉ của JMP. Nó làm cho LSD trông thuần phục.
Peter Rowell

3

Lisp . Học nó là một loạt các epiphère nhỏ, mỗi cái sẽ thay đổi hoàn toàn cách bạn nghĩ về việc giải quyết các vấn đề lập trình.


3

REBOL

Nó được xây dựng xung quanh khái niệm mã dưới dạng dữ liệu, giống như Lisp . Các tín đồ của ngôn ngữ có một thời gian khó giải thích những lợi ích độc đáo của nó so với các cách tiếp cận khác trong gia đình đó, và thường nhún vai và nói điều gì đó như "Chà, người thiết kế AmigaOS đã đưa ra, thư viện tiêu chuẩn được bao gồm và kính hiển vi, và một khi bạn 'hiểu', nó sẽ giống như uống viên thuốc Ma trận màu đỏ và bạn sẽ không bao giờ muốn quay lại. "

Vấn đề với nó một phần là nó kỳ quặc và chưa xác định chính xác những lập trình viên nào là thị trường của nó. Nhưng cũng một phần vì nhiều người ủng hộ nó chỉ mút giải thích . :)

Nhưng Douglas Crockford đã từng là một người hâm mộ, đã lấy một số cảm hứng từ nó với việc tạo ra JSON và đã đề nghị mọi người xem xét nó gần đây vào tháng 10 năm 2010:

"Ted Neward đã làm rất tốt việc kiểm duyệt bảng điều khiển về 'Tương lai của ngôn ngữ lập trình'. Cuối phần hội thảo, Ted đã hỏi các thành viên tham gia hội thảo về ngôn ngữ mà mọi người nên học để có ý tưởng mới. (Bruce Tate), Rebol (Douglas Crockford) , Forth và Factor (Alex Payne), Scheme và Assembler (Josh Bloch), và Clojure (Guy Steele). "

Nguồn: sauria.com

Tôi nghĩ rằng nó đáng để xem xét cho bất cứ ai đang tìm cách kéo dài cách họ nghĩ về thiết kế ngôn ngữ và khả năng mở rộng. Bây giờ nó là nguồn mở (sau 18 năm phát triển độc quyền) những từ chối thông thường mà tôi đã sử dụng để giữ nó ở độ dài của cánh tay không còn áp dụng nữa ... thật đáng để xem xét! Cộng đồng thậm chí đã thoát khỏi chương trình nhắn tin dựa trên Rebol độc quyền của họ và bắt đầu trò chuyện trên Stack Overflow (thật ngạc nhiên!)


1
Tôi tránh REBOL bởi vì triển khai thực tế duy nhất của nó là một phần mềm không được chuẩn hóa, không mở được thay đổi trong sự thay đổi của công ty sở hữu nó. (Rebol 2 so với Rebol 3 ...) Nếu nó đã được chuẩn hóa hoặc mở, tôi sẽ xem xét lại nhưng cho đến ngày đó Rebol vẫn không sử dụng công cụ của tôi.
CHỈ CẦN HOẠT ĐỘNG CỦA TÔI đúng

1
@JUSTMYc CorrOPINION có lẽ ngày này đã đến để có một cái nhìn khác! Rebol 3 hiệnphần mềm được cấp phép Apache2 . Chúng tôi thậm chí đã có RebolBot ở đây trong phòng trò chuyện Rebol và Red trên StackOverflow để giúp chúng tôi giới thiệu ngôn ngữ. ( Màu đỏ là một biến thể Rebol mã nguồn mở khác đang thể hiện một số lời hứa rất thú vị dưới dạng phiên bản được biên dịch lai.)
HostileFork

2

Tôi sẽ nói từ độ dài mà nhiều người đi để tránh phải trực tiếp viết nó, rằng các nhà phát triển thấy SQL là khó khăn. Tôi đoán nhiều người không tự nhiên nghĩ về các bộ.


SQL chắc chắn bẻ cong tâm trí, nhưng nó không giúp tôi viết mã tốt hơn.
dan_waterworth

4
SQL là tự nhiên đối với tôi như BASIC, chỉ có tôi. Thật ngạc nhiên khi ứng dụng được hỗ trợ DB có thể dễ dàng như thế nào khi bạn nắm bắt được việc xử lý dữ liệu đầy đủ trong SQL.
Jé Queue

@dan_waterworth, tôi nghĩ rằng SQL có thể giúp bạn viết mã nhỏ hơn và ngắn gọn hơn bằng cách đưa nhiều logic hơn vào SQL so với xử lý hầu hết các điều kiện và các truy vấn tiếp theo tại ứng dụng.
Jé Queue

@Xepoch, tôi nghĩ, nếu có bất cứ điều gì mà sự gia tăng của ORM đã dạy chúng ta, đó là mọi người không muốn viết bằng SQL nếu họ có thể tránh được. Họ muốn viết bằng ngôn ngữ của họ.
dan_waterworth

Tôi đoán sử dụng bất cứ điều gì có thể viết mã tốt hơn bạn có thể là một điều tốt.
JeffO

2

Nguyên chất

Pure là một ngôn ngữ chức năng dựa trên thuật ngữ viết lại. Tôi thích nó, nó vừa thưa thớt vừa biểu cảm, nếu nói một chút.


+1 Chức năng có nghĩa là vectơ, ngôn ngữ đặc biệt mạnh mẽ mà. Là hậu duệ của q (nợ một chút với APL) và vay một tấn từ Haskell et al. Nó chắc chắn bảo đảm đề cập.
Orble

2

Nó có thể không phải là thứ khó chịu nhất, nhưng cho đến nay tôi là người khó học nhất (tôi nghĩ rằng Haskellngôn ngữ lắp ráp dễ dàng hơn!)

Đó là tập hợp các ngôn ngữ HDL , đáng chú ý là VHDL (và Verilog ở mức độ thấp hơn)

Vượt qua thực tế là mọi "chức năng" chạy cùng một lúc là vô cùng khó khăn và bạn không thể tránh được việc chuyển sang song song hoàn toàn mọi thứ. Tất nhiên, đây chỉ là một ngôn ngữ lập trình biên giới.


Tôi đã làm một chút VHDL một lần. Tôi đã có một khoảnh khắc hiển nhiên thực sự khi tôi đột nhiên nhận ra rằng, khi tôi thêm mã, ngày càng có nhiều phần cứng xuất hiện để thực thi mã đó và tất cả đều chạy đồng thời. Giống như lập trình đa luồng với các luồng thực hiện đồng thời thực sự không giới hạn; có thể những người có quyền truy cập vào các nút không giới hạn trên EC2 hoặc các cụm giảm bản đồ có được tiếng vang tương tự. (Nhưng ngay sau đó tôi đã đánh giá cao một nỗi đau hoàn toàn là gì khi thực hiện bất cứ điều gì không tầm thường trong các langauges này, và bỏ chạy).
timday

1
Là kỹ sư điện, tôi không gặp nhiều vấn đề với tính đồng thời, thực tế nó là một sự giải phóng. Đối với nỗi đau của việc thực hiện, uP là một giải pháp thích hợp cho các lớp vấn đề cụ thể biến vấn đề thành giải pháp có thể được mô tả như thuật toán, một khái niệm ban đầu được lấy từ toán học. Một vấn đề với tính song song vốn có là một trong những vấn đề dễ giải quyết và VHDL và FPGA trở nên hữu dụng vào thời điểm đó.

Vâng, VHDL thật kỳ cục nếu bạn chưa phải là lập trình viên và đã từng làm việc với nhiều khối đồng thời.
medivh

1

Tcl

Tôi bắt đầu học nó một lần, nhưng khi tôi học đủ để hiểu thì tôi thực sự không thích cách nó khiến não tôi cảm thấy. Điều đó dường như đủ điều kiện như uốn cong tâm trí.


1
Tôi đã làm rất nhiều chương trình Tcl vào khoảng năm 1995-1997 mà không có lý do đặc biệt chính đáng. Khi tôi bắt đầu tìm kiếm một công việc mới vào năm 1998, mọi nhà tuyển dụng trong toàn bộ Vùng Vịnh đã cố gắng đưa tôi vào phỏng vấn cho các hợp đồng VIGNETTE được trả lương thấp, áp lực cao. Tôi nhanh chóng loại bỏ nó khỏi sơ yếu lý lịch của tôi. Tôi đã cân nhắc cho bạn một khoảng thời gian khó khăn vì điều này, vì tôi nhớ Tcl là rất dễ dàng, nhưng tôi ước rằng tôi đã học được Python thay vào đó, khi nhìn lại.
Adam Crossland

Tcl chắc chắn là một hương vị có được. Cá nhân tôi nghĩ rằng thiết kế của ngôn ngữ là thiên tài - không có ngôn ngữ nào phù hợp với bộ não của tôi cũng như Tcl, nhưng tôi biết tôi thuộc thiểu số. Yêu hay ghét nó, học nó đòi hỏi bạn phải suy nghĩ lại về cách ngôn ngữ nên hoạt động.
Bryan Oakley

1

Ngôn ngữ máy Turing , rõ ràng. Nó cực kỳ mạnh mẽ, có thể vượt trội so với tất cả các ngôn ngữ lập trình khác đang tồn tại và được đảm bảo sẽ làm tổn thương não của bạn nếu bạn cố gắng sử dụng nó.


6
Tôi phải phản đối để tuyên bố rằng nó vượt trội. Thuật ngữ cấp trên gợi ý đưa vấn đề chủ quan vào tài khoản. Ngoài ra, nếu chúng ta chạy C trên máy tính có bộ nhớ vô hạn (điều này chỉ công bằng vì máy Turing chạy với bộ nhớ vô hạn) thì chúng có sức mạnh tương đương.
Winston Ewert

2
@Winston: Băng của máy turing không phải là vô hạn. Nó chỉ cần có một nhà máy sản xuất băng ở mỗi đầu có thể sản xuất thêm băng khi cần thiết :)
Mike Dunlavey

"Có thể vượt trội" là theo định nghĩa một thuật ngữ khách quan. Điều đó có nghĩa là bất kỳ ngôn ngữ nào cũng có thể được triển khai trên máy Turing, nhưng không phải ngôn ngữ nào cũng có thể thực hiện máy Turing. Tất nhiên, điều đó cũng đúng với các ngôn ngữ như C, cung cấp bộ nhớ vô hạn và ngăn xếp vô hạn.
dùng12667

BrainFuck như đã đề cập trong câu hỏi và ngôn ngữ máy của Turing khá nhiều.
Mchl

1
Điều đó cho thấy một máy Turing mạnh hơn. Vấn đề là, ít nhất là khi tôi sử dụng thuật ngữ này, tuyên bố một ngôn ngữ vượt trội cũng sẽ tính đến sự dễ sử dụng, tính sẵn có, v.v.
Winston Ewert

1

C

Con trỏ, quản lý bộ nhớ và kiểu đúc đều mất rất nhiều suy nghĩ và rất dễ bị sai. Việc thiếu các cấu trúc dữ liệu tích hợp như bảng băm hoặc danh sách có nghĩa là bạn phải tự nghĩ ra hoặc tìm thư viện của bên thứ ba và tìm hiểu API của nó.


Xin lỗi. C là một ngôn ngữ lắp ráp. Tất nhiên nó không có những thứ đó.
Peter Rowell

2
Ngôn ngữ hội là uốn cong tâm trí.
david4dev

-1

JESS (Java Expert System Shell). Được nhúng trong môi trường Java, sự thích ứng này của CLIPS là ngôn ngữ hệ thống chuyên gia dựa trên quy tắc chức năng. Cố gắng ánh xạ các đối tượng Java thực sự thành các sự kiện và tìm các câu hỏi phù hợp để hỏi để có được kết quả mà bạn mong đợi là một thách thức thực sự. Ít hơn nếu bạn quen thuộc với lý thuyết hệ thống chuyên gia, nhưng khi bạn xuất phát từ một tư duy OOP thuần túy thì nó không phù hợp lắm. LƯU Ý: CLIPS không phải là Lisp, nhưng có vẻ như nó. Một tâm trí khác uốn éo.

Một khi bạn vượt qua giai đoạn học tập ban đầu, nó rất mạnh mẽ và khá nhanh chóng để đưa ra câu trả lời.


Jess là một phiên bản hiện đại của CLIPS, cũng có thể nhúng như một loại công cụ logic / kịch bản cho các ứng dụng của riêng bạn.
Tangurena

Ok, tôi đứng sửa. haskel.com/corp/details/0,10294,CLI1_DIV139_ETI9759,00.html Tuy nhiên, nó đòi hỏi một tư duy rất khác với ngôn ngữ mà nó được nhúng vào.
Berin Loritsch


-1

CIL

CIL, Ngôn ngữ trung gian phổ biến mà tất cả các chương trình .NET biên dịch thành, một loại lắp ráp hướng đối tượng. Thật thú vị đối với tôi khi thử viết hoặc đọc mã trong đó và so sánh các cấu trúc của nó với các cấu trúc của C # mà tôi đã biết. Đó là một cách tốt để tìm hiểu thêm những gì .NET làm đằng sau hậu trường. Và nó có thể hữu ích cho những thứ như tạo mã động hoặc viết lại mã được biên dịch hiện có bằng Mono Cecil .


2
hoặc mã byte cho vấn đề đó quá?
Jé Queue

Nếu bạn có nghĩa là mã byte Java, thì tôi không có kinh nghiệm gì với nó, vì vậy tôi không ở vị trí nào để giới thiệu nó như là suy nghĩ.
Svick

Tôi thực sự sẽ không so sánh Java-Bytecode và CIL, vì Java-Bytecode đã được biên dịch và CIL sẽ được biên dịch trong thời gian chạy (Just-In-Time-Compiler of .net)
basti

@chiffre Trong hầu hết các trường hợp, Java Bytecode và CIL hoạt động giống hệt nhau. Trong cả hai trường hợp, bạn có mã nguồn (C # hoặc Java) được biên dịch sang ngôn ngữ trung gian nhị phân tại thời gian biên dịch thời gian biên dịch (CIL hoặc Java Bytecode), sau đó được biên dịch thành mã máy thực tế tại thời gian chạy thời gian, bởi JIT trình biên dịch.
Svick
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.