ภาษาการเขียนโปรแกรมที่เหลือเชื่อที่สุด? [ปิด]


45

จากเหตุผลพอสมควรภาษาการเขียนโปรแกรมทั่วไปคุณพบว่าเป็นคนที่ใจร้อนที่สุด?

ฉันได้ฟังพอดคาสต์การเขียนโปรแกรมจำนวนมากและใช้เวลาในการเรียนรู้ภาษาใหม่บางอย่างที่กำลังพิจารณาว่าจะเกิดขึ้นและที่สำคัญ ฉันไม่จำเป็นต้องพูดถึงBrainFuckแต่ภาษาใดที่คุณจะพิจารณาว่าเป็นภาษาที่ท้าทายกระบวนทัศน์การเขียนโปรแกรมทั่วไป

สำหรับฉันฉันทำหน้าที่บางอย่างและตรรกะ (ตัวอย่างเช่นPrologเขียนโปรแกรมการ ) ในปี 1990 ดังนั้นฉันจึงไม่สามารถพูดได้ว่าฉันพบสิ่งพิเศษที่นั่น

ผมห่างไกลจากการเป็นผู้เชี่ยวชาญในนั้น แต่แม้ในวันนี้ใจดัดมากที่สุดภาษาการเขียนโปรแกรมสำหรับฉันเป็นPerl ไม่ใช่เพราะ"Hello World"นั้นยากที่จะนำไปใช้ แต่มีความยืดหยุ่นทางคำศัพท์มากจนการแก้ปัญหาที่ยากที่สุดบางส่วนสามารถย่อยสลายได้ดังนั้นกวีที่ฉันต้องเดินออกจากขั้วเพื่อล้างหัว ฉันไม่ได้บอกว่าฉันจะขายซอฟต์แวร์เชิงพาณิชย์ แต่มีเหตุผลที่ชัดเจนว่า Perl มีชื่อเสียง (ใน) เพียงดูรายการพื้นฐานของหนังสือ

ดังนั้นภาษาที่ใช้ในการคิดของคุณที่ส่งเสริมการเขียนโปรแกรมและการปฏิบัติที่ดีขึ้นของคุณคืออะไร?


มันไม่น่าเป็นไปได้และปล่อยมันไว้อย่างนั้นเหรอ?

4
ภาษาใด ๆ ที่พื้นที่สีขาวสำคัญ!
mootinator

@mootinator - แต่ Python สนุกกับการทำงานตราบใดที่ text editor ของคุณไม่ได้ทำให้คุณเจ็บปวด
rjzii

1
@Thorbjorn จะมีคนเพิ่ม INTERCAL หรือไม่ APL เป็นโครงการโรงเรียนมัธยมต้นเมื่อเทียบกับพ่อใหญ่คนนั้น
Mark C

Perl ไม่มีที่ไหนใกล้ที่ยากที่สุด ฉันอายุ 12 ปีและฉันสามารถเขียนโปรแกรม Perl ได้อย่างง่ายดาย
แบบไดนามิก

คำตอบ:


73

APL

ภาษานี้มีพลังอย่างไม่น่าเชื่อและสั้นมากมันจะทำร้ายสมองของคุณ

สำหรับผู้เริ่มใช้งานยากหากไม่มีแป้นพิมพ์ที่กำหนดเองหรืออย่างน้อยแป้นพิมพ์ซ้อนทับเพื่อแสดงสัญลักษณ์ที่คลุมเครือทั้งหมดที่ใช้

APL Keyboard

จากนั้นภาษาเป็นของกระบวนทัศน์เวกเตอร์ / อาเรย์ที่ใช้และเชี่ยวชาญในพีชคณิตเชิงเส้นที่ซับซ้อน รุ่นดั้งเดิมไม่ได้มีการสร้างห่วงอะไรและทุกอย่างทำได้โดยการผูกมัดตัวดำเนินการอาร์เรย์ที่ผิดปกติด้วยกัน

  • strip_tags()ใคร? (ยืมมาจาก Wikipedia)

strip_tags () ala APL


18
+1 สำหรับแสดงแป้นพิมพ์
tcrosley

5
@tcrosley: มันดีถ้าคุณมีของจริง: wickensonline.co.uk/apl/unicomp-apl-top-large.jpg
Orbling

4
และถ้ามันยังไม่น่าสนใจพอมีผู้ให้บริการบางรายที่จำเป็นต้องใช้ปุ่ม backspace / overstrike ตัวอย่างเช่นเมทริกซ์ผกผันคือกล่องสี่เหลี่ยม (บนปุ่ม L) โอเวอร์เทรดที่มีเครื่องหมายหาร (อันที่อยู่ถัดจากปุ่มย้อนกลับที่มุมด้านขวาบนของรูปแป้นพิมพ์)
Tangurena

2
ฉันมีช่วงย้อนหลังถึงต้นทศวรรษ 1980 เมื่อฉันทำ APL เพื่อทำการวิเคราะห์การถดถอยทางสถิติระดับสูงผู้คนยังคงใช้มันอยู่? สั่น.
HLGEM

2
ฉันทำ APL หลายครั้ง - มันยังคงเป็นจุดที่คิดถึงสำหรับฉัน ... ฉันชอบมันในเวลานั้น
quick_now

56

HaskellHaskellมันใกล้เคียงกับการทำงานอย่างหมดจดซึ่งคนส่วนใหญ่ไม่คุ้นเคยกับ; มีความต้องการมากซึ่งจะเป็นประโยชน์เมื่อคุณรู้ว่าคุณกำลังทำอะไรอยู่ มีไวยากรณ์ที่ค่อนข้างเป็นความลับและเป็นสัญลักษณ์สูงซึ่งเยี่ยมมากเมื่อคุณรู้ แต่ทึบแสงก่อนหน้านั้น ... รายการจะดำเนินต่อไป

นอกจากนี้มันเป็นไปไม่ได้เลยที่จะจัดรูปแบบสิ่งต่าง ๆ ในลักษณะที่ดูดีสำหรับฉัน


7
ฉันจะบอกว่า Haskell ด้วย แต่ไม่ใช่เพราะมันเป็นความลับ ในขณะที่มันอาจจะยากที่จะเข้าใจอย่างแน่นอนสิ่งที่ทำให้จิตใจงอเป็นเรื่องเกี่ยวกับทฤษฎีที่อยู่เบื้องหลัง Monad and Arrows ยังคงเป็นโดเมนที่ฉันยังไม่ได้รับการเอาชนะ :)
Matthieu M.

11
ทำไม "ใกล้ถึงการทำงานอย่างหมดจด" มันทำงานได้อย่างหมดจด
dan_waterworth

4
ฉันต้องการเสนอราคาตัวเองและเพิ่มวิธีที่ Haskell จะงอจิตใจของคุณ: "Haskell ป้องกันคุณจากการผลักสิ่งต่าง ๆ ใต้พรมบังคับให้คุณจัดการกับโครงสร้างของโปรแกรมของคุณอย่างชัดเจนและสอนภาษาให้คุณอธิบายโครงสร้างเหล่านี้ : ภาษาของประเภทการทำความเข้าใจกับประเภทโดยเฉพาะประเภท Rich เช่นเดียวกับ Haskell จะทำให้คุณเป็นโปรแกรมเมอร์ที่ดีขึ้นในทุกภาษา " programmers.stackexchange.com/questions/28950/...
Waquo

14
Haskell เป็นภาษาการเขียนโปรแกรมการทำงานอย่างหมดจด รหัสที่คุณเขียนใน Haskell นั้นทำงานได้อย่างหมดจด (ตราบใดที่คุณไม่ได้ใช้ unsafePerformIO และอื่น ๆ ที่คล้ายกัน) IO-Monad นั้นทำงานได้อย่างหมดจดหากคุณเชื่อว่าเป็นอย่างอื่นคุณไม่เข้าใจวิธีที่ monads ใช้ในการสร้างแบบจำลองการควบคุมการไหลในแบบที่ใช้งานได้จริง คิดว่าโปรแกรมของคุณเป็นรายการช้อปปิ้งของการกระทำของ IO โดยที่รายการช้อปปิ้งเป็นเพียงโครงสร้างข้อมูลที่บริสุทธิ์ไม่มีผลข้างเคียงและรันไทม์ภาษาเป็นนักช้อปที่ทำผลข้างเคียง
Waquo

8
@ จอนแล้วเราเห็นด้วยว่า: Haskell ภาษานั้นทำงานได้อย่างหมดจด แต่มันเป็นระบบรันไทม์ไม่ได้ การดำเนินการของโปรแกรม Haskell ไม่บริสุทธิ์ แต่ตัวโปรแกรมนั้นบริสุทธิ์
dan_waterworth

30

อารัมภบท มันแตกต่างจากภาษาอื่น ๆ ที่ฉันเคยใช้เมื่อฉันได้สัมผัสมันเป็นครั้งแรก ฉันชอบมันดังนั้นฉันไม่ได้เกลียดไวยากรณ์หรืออะไรเลย


2
ผมเข้าหาเปิดฉากการเขียนโปรแกรมแบบย้อนกลับที่ต้องการทราบคำตอบของฉันอยู่แล้วและจากนั้นโปรแกรมจะได้รับคำถาม :)
Jéคิว

1
@Xepoch: ฉันคิดว่าคุณอาจจะอยู่ที่นั่น Prolog กำลังกำหนดคำถาม หนึ่งใน 5GL ภาษาที่ถูกต้องเท่านั้นที่ใช้งานอยู่
Orbling

โดยทั่วไปแล้วฉันคิดว่า Prolog มีความน่าสนใจและมีประสิทธิภาพเป็นพิเศษ แต่ฉันมีปัญหาอย่างมากที่จะทำให้หัวของฉันเต็มไปด้วยการถูกตัด ( !)
Orbling

+1 สำหรับ Prolog ฉันมีหลักสูตรปัญญาประดิษฐ์ที่ใช้ Prolog และเป็นเพียงหลักสูตรวิทยาศาสตร์คอมพิวเตอร์เพียงอย่างเดียวที่ฉันทำมาได้ไม่ดี
rjzii

Prolog ไม่ใช่ภาษาโปรแกรมที่ใช้งานได้ การถูกทำให้เน่าในหน้าที่การทำงานโดย Prolog ก็เหมือนกับการถูกทำให้สกปรกในการเขียนโปรแกรมตามขั้นตอนโดย Lisp
เพียงความคิดเห็นที่ถูกต้องของฉัน

24

ฉันจะเห็นด้วยกับคุณใน Perl มันเป็นรูปแบบที่น่าเกลียดที่สุดที่ฉันเคยเห็น พวกเขากล่าวว่าแม้นักพัฒนา Perl จะไม่สามารถจำสิ่งที่พวกเขาเขียนได้ในวันต่อมา


2
def +1 บน Perl ฉันชอบโดยเฉพาะอย่างยิ่งเสมอ (ฉันเชื่อว่าพวกเขาถูกเรียกว่า) ตัวแปร 'นัย' ทำให้เป็นโค้ดสำหรับเขียนอย่างดีเท่านั้น
GrandmasterB

2
ทุกคนเขียน Perl แตกต่างกันมากจนพวกเขาอาจจะเขียนภาษาที่แตกต่างกัน - คุณไม่จำเป็นต้องเรียนรู้ว่า Perl ทำงานอย่างไรเพื่อรับรหัสของคนอื่นในนั้นคุณต้องเรียนรู้ว่าบุคคลนั้นใช้มันอย่างไร
ลนนาตรอน

3
Bah ถึงคำตอบนี้และแสดงความคิดเห็นทั้งคู่ Perl ที่เขียนได้ดีนั้นอ่านและเขียนได้ง่าย Baby-perl ที่เขียนโดย newbies นั้นง่ายถ้า verbose perl "อ่านไม่ได้" เพียงอย่างเดียวคือ obfuscated ตามวัตถุประสงค์หรือสคริปต์หนึ่ง liners
Sean McMillan

22

ผมจะต้องพูดออกมา สัญกรณ์ที่การดำเนินการทั้งหมดเป็นแบบเรียงซ้อน ในรูปแบบบริสุทธิ์ไม่มีตัวแปรท้องถิ่นที่จะใช้


10
FORTH เป็นภาษาที่ยอดเยี่ยม เมื่อฉันได้เรียนรู้การเขียนโปรแกรมครั้งแรกในช่วงต้นยุค 80 ฉันมีอาตาริ 400 และตัวเลือกของฉันถูกตีความพื้นฐานการประกอบและการขึ้นรูป ฉันใช้ทั้งสามอย่างกว้างขวาง แต่มี FORTH มากกว่าที่อื่น ฉันยังมีหนังสือ FORTH FORTH เริ่มต้นและคิดหนังสือ FORTH FORTH คลาสสิกของ Leo Brodie ความจริงแล้วถ้าฉันถูกขอให้สร้างภาษาที่ใช้จัดการโฮสต์ด้วยตนเองตั้งแต่เริ่มต้นบนระบบฮาร์ดแวร์ใหม่ฉันจะเลือก FORTH โดยไม่ลังเล
Adam Crossland

3
@Adam Crossland: การคิด FORTH เป็นหนังสือที่ยอดเยี่ยมคุณอาจสนใจในลิงค์นี้: thinking-forth.sourceforge.net
Orbling

1
@Orbling: จิตใจที่ดีคิดเหมือนกัน ไม่เกิน 10 นาทีก่อนฉันใส่ PDF ลงบน Kindle
Adam Crossland

1
@ Adam Crossland: สถานที่ที่ดีสำหรับมัน โดยทั่วไปหนังสือเล่มนั้นมีประโยชน์สำหรับโปรแกรมเมอร์ควรอยู่ในรายการเรื่องอ่านสำหรับคนที่สนใจ FORTH หรือไม่
Orbling

1
ฉันเห็นด้วยอย่างยิ่ง มันมีข้อตกลงที่ดีมากที่จะพูดเกี่ยวกับวิธีที่เราคิดเกี่ยวกับการแก้ปัญหาโดยทั่วไป Brodie เป็นนักคิดที่ชัดเจนและชัดเจน ผลงานของเขามีความสุขสำหรับฉัน
Adam Crossland

21

ทับทิมทับทิม

นี่ทำให้ฉันอยากฆ่าตัวตาย:

1.month.from.now()

(ฉันอาจมีไวยากรณ์ที่ถูกต้องผิด แต่คุณได้รับจุด)


23
พระเจ้าช่วย. ใครเคยคิดว่านี่เป็นความคิดที่ดี?
EpsilonVector

8
ความคิดไม่ได้อยู่ที่การอ่าน แต่เป็นการเขียน มากับเรื่องไร้สาระนี้ยากและต้องจดจำ / ค้นหาทั้งหมดฟังก์ชั่น / คุณสมบัติในตัวไร้สาระ
Matthew อ่าน

55
ฉันคนเดียวเท่านั้นที่คิดว่าสิ่งนี้ดูยอดเยี่ยมและอาจเป็นเหตุผลที่ดีในการเรียนรู้ทับทิม
Orbling

9
มันยอดเยี่ยมมากที่จะอ่านใช่ แต่นี่หมายความว่าฉันสามารถเขียน 3.months.from.last.month.if.it.was.a.leap.year ได้หรือไม่? ไม่หรืออย่างน้อยฉันก็ไม่คิดอย่างนั้น ถ้าฉันทำได้ ... RoR เป็นภาษาโทรจิตคนแรกได้เลย
morganpdx

15
มีอะไรผิดปกติDateTime.Now.AddMonths(1);? คุณสมบัติเหล่านี้แทบจะทำให้โค้ดอ่านง่ายขึ้น (ฉันไม่ได้บอกว่า C # มีไวยากรณ์ที่ดีที่สุดคุณสามารถเปลี่ยนเป็นอนุสัญญาภาษาใด ๆ และจะยังคงมีผลบังคับใช้)
ChaosPandion

18

brainfuck

ทุกคนที่สามารถเขียนคำเยาะเย้ยของภาษานี้อย่างสุจริตไม่ควรแม้แต่ต้องมีหัวข้อเช่นนี้

สวัสดีชาวโลก (พอยน์เตอร์, ซ้าย; การอธิบาย, ขวา):

+++++ +++++             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
หรือวิธีการเกี่ยวกับช่องว่าง? ความชั่วร้ายทั้งหมดของ Brainfuck รวมกับรหัสที่มองไม่เห็น
Loren Pechtel

17

เสียงกระเพื่อมเป็นภาษาที่เหลือเชื่อของฉันล่าสุด

ฉันได้รับ monads และการเขียนโปรแกรมการทำงานจาก Haskell กับฉันและตอนนี้ฉันมีมาโครเพื่อทำงานด้วย ฉันเพิ่งเข้า CLOS และไม่ได้สัมผัสกับระบบเงื่อนไขเลย


ฉันไม่ชอบ Lisps (ยกเว้น Clojure ที่เป็นไปได้ - ฉันยังไม่ได้ตัดสินใจเลย) และให้ +1 คุณ ส่วนที่ไม่น่าไว้วางใจนั้นอยู่ที่นั่นและสิ่งที่ฉันเรียนรู้จาก Lisp แม้ว่าฉันจะไม่ได้ใช้มันก็บอกได้เลยว่าฉันทำอะไรในภาษาอื่น
เพียงแค่ความคิดเห็นที่ถูกต้องของฉัน

14

คางทูม

นี่คือภาษาที่ปรากฏขึ้นจากเวลาไปเวลาในเรื่องราวออนไลน์และมีเกียรติเพิ่มของการอยู่ในการใช้ผลิตจริงเก็บข้อมูลชีวิตความปลอดภัยที่สำคัญ (นั่นคือระเบียนของผู้ป่วย) อย่างไรก็ตามนี่ยังเป็นภาษาที่มีการชื่นชมความทนทานและฟังก์ชั่นดังต่อไปนี้อาจปรากฏในรหัสการผลิต (ตัวอย่างจากบทความ Wikipediaในหัวข้อ):

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))

ว้าวคุณไม่ได้ล้อเล่นเหรอ ฉันไม่ได้นอนเลยเวลาที่กำหนดและในวันที่ 1 เมษายน ไม่มีสิ่งใดในวงเล็บและเครื่องหมายดอลลาร์ที่ควรจะอยู่ใกล้กับประวัติผู้ป่วยของฉัน
dan_waterworth

1
งานเขียนโปรแกรมครั้งแรกของฉันคือกับ บริษัท ที่เชี่ยวชาญด้าน MUMPS! น่าเศร้าที่ฉันทำหลักสูตรมหาวิทยาลัยเกี่ยวกับการพัฒนาเว็บดังนั้นพวกเขาจึงนำฉันเข้าสู่ทีม ASP ที่จัดตั้งขึ้นใหม่ของ บริษัท แทนที่จะใช้มือเก่า แต่ MUMPS เป็นภาษาที่เราได้รับการฝึกฝนในช่วงสองสามสัปดาห์แรกของเรา บางทีฉันอาจจะโชคดีที่หลบหนี ...
thesunneversets

1
ใครที่โพสต์ที่นี่จากแมดิสันวิสคอนซิน? เวโรนาจริงเหรอ?
Hans Passant

1
ฉันเชื่อว่า thedailywtf.com มีทั้งหมวดเฉพาะสำหรับ MUMPS ดูเหมือนภาษาที่ฉันต้องการสัมผัส
Tyanna

1
ฉันจำการเรียน M ในสถาบันการศึกษาและคิดว่ามันน่าสนใจเป็นภาษาวัตถุประสงค์พิเศษ ความทรหดที่ยอมให้มันเป็นเหมือนการยั่วยุให้ตกต่ำ ในความไร้เดียงสาของฉันฉันคิดว่ารหัสการผลิตจะมีการจดชวเลขน้อยมากของภาษา ครั้งแรกและครั้งเดียวที่ฉันเห็นการผลิต codebase M ลำไส้ของฉันแน่น ... มันดูเหมือนกับตัวอย่างของคุณ โอ้หนังสยองขวัญ!
ajk

13

ฉันจะบอกว่าCoqหรือการใช้ทฤษฎีชนิดพึ่งพาอื่น ระบบประเภทของHaskellนั้นไม่ค่อยมีความชัดเจนเท่าไรนัก การย้ายไปยังระบบประเภทที่แสดงออกมากขึ้น (ตัวอย่างเช่นแคลคูลัสของสิ่งปลูกสร้าง (CoC)) ช่วยให้คุณทำสิ่งที่เป็นระเบียบเช่นการพิสูจน์คุณสมบัติของโปรแกรมภายในภาษาและฝังค่าคงที่ในรูปแบบของคุณซึ่งสามารถตรวจสอบได้


2
ระบบ / ผู้แปล / ภาษาประเภทพึ่งพาใด ๆ อาจมีความสับสนมากกว่าภาษาปกติดังนั้น +1
Orbling

1
การตรวจสอบอย่างเป็นทางการของโปรแกรมเป็นสิ่งที่ฉันเพิ่งเริ่มต้น แน่นอนว่ามันจะทำให้จิตใจโค้งงอและกำลังมีประโยชน์มากขึ้นในโลกแห่งความเป็นจริง +1
dan_waterworth

7

Objective-CObjective-Cเพื่อความเป็นธรรมฉันศึกษาเพียงสั้น ๆ และไม่ชอบไวยากรณ์เมื่อเหลือบมองครั้งแรกจนฉันยอมแพ้

เนื่องจากเป็นภาษาทั่วไป (ค่อนข้าง) (ส่วนใหญ่ใช้สำหรับการพัฒนาMac / iPhone / iPad ) ฉันจึงมั่นใจว่ามันค่อนข้างดีเมื่อคุณคุ้นเคยกับมัน


2
ก็อาจจะมีคุณสมบัติเป็นใจเล็กน้อย แต่ฉันชอบมัน มันอาจช่วยได้ถ้าคุณรู้ว่า[foo bar]มันเป็นแค่น้ำตาลซินแทคติคobjc_sendMsg(foo, "bar");ซึ่งจะมองหาตัวชี้ฟังก์ชั่น (เป็น "บาร์" พิเศษไม่ใช่แบบทั่วไป) คุณรู้หรือไม่ว่ามันเป็นเป็ดที่พิมพ์เต็ม?
ต่อ Johansson

Objective-C เป็นเพียงน้ำตาลซินแทคติคขนาดใหญ่รอบ ๆ ฟังก์ชั่นรันไทม์ เมื่อคุณคุ้นเคยกับ[receiver doStuff:arg]มันมันดูเหมือนจาวาไดนามิก
toasted_flakes

6

ฉันเลือกเมอร์ร์

เมอร์คิวรี่ใจของฉันโดยแสดงให้ฉันเห็นว่าแม้แต่ภาษาที่บริสุทธิ์สามารถทำI / O ได้ได้

วิธีการทำงานนี้คือฟังก์ชั่น I / O ในเมอร์คิวรี่ใช้ค่า 'สถานะของโลก' และคืนค่า 'สถานะของโลก' ใหม่ ดังนั้นฟังก์ชั่น I / O ใน Mercury จะเปลี่ยนโลกและด้วยเหตุนี้ความบริสุทธิ์จึงยังคงอยู่


3
+1 "... ปรอทเปลี่ยนโลกและทำให้ความบริสุทธิ์คงอยู่ตลอดไป" - ฉันชอบที่นอกบริบท ;-)
Orbling

ตอนนี้ฉันกำลังดิ้นรนกับการเรียนรู้กับ Mercury มันเป็นการต่อสู้ที่คู่ควร ผมชอบมันมาก.
เพียงความคิดเห็นที่ถูกต้องของฉัน

สิ่งเดียวที่ทำให้ฉันปิดสารปรอทคือประเภทของสตริงคือ NULL ที่ถูกยกเลิก
dan_waterworth

6

มันจะต้องมีโครงการแน่นอน พยายามอธิบายcall-with-current-continuationเจ็บสมองของฉันอยู่เสมอ แต่เมื่อคุณเข้าใจแล้วคุณจะสามารถแก้ปัญหาที่สง่างามได้อย่างไม่น่าเชื่อ

ต้องการหยุดบางส่วนผ่านอัลกอริทึมและควบคุมมือให้คนอื่นหรือไม่? แน่นอน!

ต้องการกลับมาทำงานต่อเนื่องกันหลายครั้งหรือไม่ แน่นอน!

ต้องการหยุดการดำเนินการของอัลกอริทึมใหม่กำหนดฟังก์ชั่นแล้วดำเนินการต่อด้วยสแต็กดั้งเดิม แต่เป็นสถานะโกลบอลที่อัปเดตหรือไม่ ไม่มีปัญหา! และทำเช่นนี้หลายครั้งด้วยการเปลี่ยนแปลงที่แตกต่างกันไปทั่วโลก แต่สแต็คจุดเข้าใหม่เดียวกัน สำหรับคุณครับอะไร!


+1 LOL + "สำหรับคุณครับอะไรก็ได้!" นอกเหนือจากการเป็นแนวในเพลงใน Oliver! มันเป็นความปรารถนาที่ดีสำหรับภาษาที่จะมี
Orbling

1
โครงการไม่ใช่ภาษาเดียวที่มีความต่อเนื่องชัดเจน ยกตัวอย่างเช่นHaskellสนับสนุนได้อย่างดีและใจจดจ่อ
เพียงความคิดเห็นที่ถูกต้องของฉัน

4
เนื้อหาน่าสนใจยิ่งขึ้นใน Haskell เนื่องจากมีการใช้งาน (call / cc) เป็นไลบรารีไม่ใช่คุณสมบัติภาษา แต่นั่นอาจทำให้ใจงอน้อยลง
โลแกน Capaldo

ฉันคิดว่ามันพร้อมกันมากขึ้นและน้อยใจงอ การรักษาความขัดแย้งในหัวของฉันทำให้จิตใจของฉันงอ ดังนั้นในที่สุดแฮสเค็ลล์ก็ยิ่งทำให้จิตใจงุนงงมากขึ้น :)
เพียงแค่ความคิดเห็นที่ถูกต้องของฉัน

สิ่งดีๆเกี่ยวกับโครงการ (และทับทิม !) ตเป็นว่าพวกเขากำลังในตัวลงในภาษา โดยทั่วไปแล้ว Haskell จะเพิ่มรูปแบบ monadic ของรูปแบบการส่งผ่านความต่อเนื่องทั่วไปซึ่งคุณสามารถทำได้ใน Scheme ด้วย แต่การมีสายเรียกเข้า / ซีซีในตัวทุกหนทุกแห่งโดยไม่ต้องฝังสิ่งทั้งหมดไว้ในโครงสร้างแบบ monadic ทำให้สามารถสร้างโครงสร้างที่มีความคิดสร้างสรรค์ได้อย่างแน่นอน
Dario

4

ฉันเคยใช้เครื่องมือแก้ไขแบบโบราณที่เรียกว่า TECO (Text Editor และ COmparator) ซึ่งเป็นภาษาการปรับเปลี่ยนข้อความที่ทรงพลังมากพร้อมความสามารถของแมโครทุกประเภท ฉันจำไม่ได้ว่าคำพูดที่โด่งดังเกี่ยวกับเรื่องนี้ แต่ส่วนสำคัญคือ "การรวบรวมแบบสุ่มใด ๆ ของตัวละคร 20 ตัวมักจะเป็นโปรแกรม TECO ที่ถูกต้องตามกฎหมายและจะเปลี่ยนไฟล์ของคุณ (มันเป็นตัวแก้ไข) ในลักษณะที่คาดเดาไม่ได้ ตัวแปลง Fortran เป็น PL1 ในหน้าเพจของโค้ด TECO


5
"หนึ่งในเกมที่ให้ความบันเทิงมากกว่าที่จะเล่นกับ TECO คือการพิมพ์ชื่อของคุณเป็นบรรทัดคำสั่งและลองเดาว่ามันทำอะไรข้อผิดพลาดในการพิมพ์ใด ๆ ที่เป็นไปได้ในขณะที่พูดคุยกับ TECO อาจทำลายโปรแกรมของคุณ แนะนำข้อบกพร่องที่ลึกลับและลึกลับในรูทีนย่อยที่ใช้งานได้ครั้งเดียว " ผู้ชายนั่นคือวัน!
เพียงความคิดเห็นที่ถูกต้องของฉัน

1
TECO ก็เป็นฐานดั้งเดิมของ EMACS EMACS เริ่มต้นจากการรวบรวมมาโคร TECO!
Gabe

@Omega: จำเป็นต้องบอกว่า TECO ตัวไหนที่คุณอ้างถึง DEC TECO ซึ่งมาพร้อมกับ TOPS-10 หรือ MIT TECO ซึ่งเป็น MIDAS TECO หลังนี้เป็นสิ่งที่ EMACS เขียนไว้นอกจากนี้ยังมีการขยาย EMACS ด้วยเช่นกัน ฉันเคยแฮ็ค EMACS แทนที่จะผ่านชั้นเรียน
John Saunders

ฉันใช้ DEC TECO เท่านั้น และใช่เหล่านั้นเป็นวัน (จะเป็นหนุ่มอีกครั้ง) ....
โอเมก้า Centauri

1
ทำให้ฉันจำการพิมพ์ในโหมดคำสั่ง Vim ได้
ron

3

การชุมนุมเป็น "ความคิดดัด" ที่สุดสำหรับฉัน แต่ฉันเพิ่งจะเริ่ม


สิ่งที่ทำให้มันแย่ลงมันเป็น OS และขึ้นอยู่กับฮาร์ดแวร์
เดฟ

แล้วมันเกี่ยวกับอะไรเหรอ? คำแนะนำตรงโดยไม่มีคำสั่งการจัดกลุ่มอย่างชัดเจน? อื่น ๆ อีก?
Jé Queue

โดยเฉพาะอย่างยิ่งฉันไม่ชอบความไม่ชัดเจนของการไหลของโปรแกรมอย่างง่ายดาย อ่านไม่ง่ายอย่างรวดเร็ว
Anto

2
Ah, Cincinnati Milacron 2200B: ความยาวของคำที่เปลี่ยนแปลงได้รวมกับการแก้ไขรันไทม์ของที่อยู่ของ JMP มันทำให้ LSD ดูเชื่อง
Peter Rowell

3

เสียงกระเพื่อม การเรียนรู้มันเป็นชุดของ epiphanies ขนาดเล็กซึ่งแต่ละอันจะเปลี่ยนวิธีที่คุณคิดเกี่ยวกับการแก้ปัญหาการเขียนโปรแกรมโดยสิ้นเชิง


3

REBOL

มันสร้างขึ้นตามแนวคิดของ code-as-data เหมือนLispคือ สมัครพรรคพวกของภาษานั้นยากที่จะอธิบายสิ่งที่เป็นประโยชน์เฉพาะเหนือวิธีอื่น ๆ ในครอบครัวนั้นและมักจะจบลงด้วยการยักไหล่และพูดอะไรบางอย่างเช่น"คนที่ออกแบบ AmigaOS มาด้วยห้องสมุดมาตรฐานและกล้องจุลทรรศน์ และเมื่อคุณ 'ได้รับ' มันจะเหมือนกับทานยาเม็ดเมทริกซ์สีแดงและคุณจะไม่ต้องการกลับไป "

ปัญหาของมันคือบางส่วนที่มันแปลกและไม่ได้กำหนดอย่างแม่นยำว่าโปรแกรมเมอร์คือใคร แต่บางส่วนก็เป็นเพราะคนจำนวนมากเรียกร้องให้อธิบายอย่างหนักแน่น :)

แต่Douglas Crockfordเคยเป็นแฟนคลับดึงแรงบันดาลใจบางอย่างจากการสร้างJSONและแนะนำให้คนดูเมื่อเร็ว ๆ นี้ในเดือนตุลาคม 2010:

"Ted Neward ทำงานได้ดีมากในการดูแลแผงใน 'Future of Programming Languages' ในตอนท้ายของคณะผู้อภิปราย Ted ได้ถามผู้ร่วมอภิปรายว่าภาษาใดที่พวกเขาควรจะเรียนรู้เพื่อรับแนวคิดใหม่ ๆ รายการรวม Io (Bruce Tate), Rebol (Douglas Crockford) , Forth and Factor (Alex Payne), Scheme and Assembler (Josh Bloch) และ Clojure (Guy Steele) "

ที่มา: sauria.com

ฉันคิดว่ามันคุ้มค่าที่จะมองหาใครก็ตามที่ต้องการยืดความคิดของพวกเขาเกี่ยวกับการออกแบบภาษาและความสามารถในการขยายความ ตอนนี้มันเป็นโอเพ่นซอร์ส(หลังจาก 18 ปีแห่งการพัฒนาที่เป็นกรรมสิทธิ์)ข้อปฏิเสธความรับผิดชอบตามปกติที่ฉันเคยทำเพื่อรักษาความยาวของแขนไม่ได้ใช้อีกต่อไป ... มันคุ้มค่าที่จะดู! ชุมชนออกจากโปรแกรมส่งข้อความที่เป็นลิขสิทธิ์ของ Rebol และเริ่มแชทกับ Stack Overflow (ทำให้ฉันประหลาดใจมาก!)


1
ฉันหลีกเลี่ยง REBOL เนื่องจากการใช้งานจริงเพียงอย่างเดียวคือซอฟต์แวร์ที่ไม่ได้มาตรฐานและไม่เปิดซึ่งมีการเปลี่ยนแปลงอย่างรวดเร็วของ บริษัท ที่เป็นเจ้าของ (Rebol 2 vs. Rebol 3 ... ) ถ้ามันเป็นมาตรฐานหรือเปิดฉันจะมองอีกครั้ง แต่จนกระทั่งวันนั้น Rebol ยังคงอยู่นอกแถบเครื่องมือของฉัน
เพียงความคิดเห็นที่ถูกต้องของฉัน

1
@JUSTMY แก้ไขที่ถูกต้องอาจเป็นวันที่จะมาดูอีกครั้ง! Rebol 3 เป็นซอฟต์แวร์ลิขสิทธิ์ Apache2แล้ว เรายังได้รับRebolBotที่นี่ในห้องสนทนา Rebol และ Redบน StackOverflow เพื่อช่วยเราในการสาธิตภาษา ( สีแดงเป็นอีกตัวแปรโอเพ่นซอร์ส Rebol ที่แสดงคำสัญญาที่น่าสนใจมากในฐานะรุ่นคอมไพล์ไฮบริด)
HostileFork

2

ฉันจะบอกว่าจากความยาวที่หลาย ๆ คนหลีกเลี่ยงที่จะเขียนโดยตรงนักพัฒนาพบว่าSQL นั้นเป็นสิ่งที่ไม่ควรทำ ฉันเดาว่าหลายคนคงไม่คิดในแง่ของชุด


SQL ทำให้ใจงอ แต่ก็ไม่ได้ช่วยให้ฉันเขียนโค้ดได้ดีขึ้น
dan_waterworth

4
SQL นั้นเป็นเรื่องธรรมดาสำหรับฉันเหมือนกับ BASIC แค่ฉัน น่าทึ่งว่าแอปพลิเคชั่นที่ได้รับการสนับสนุนของ DB นั้นง่ายเพียงใดเมื่อคุณเข้าใจการจัดการข้อมูลอย่างเต็มรูปแบบใน SQL
Jé Queue

@dan_waterworth ฉันคิดว่า SQL สามารถช่วยให้คุณเขียนโค้ดที่สั้นลงและกระชับยิ่งขึ้นได้โดยใส่ตรรกะลงใน SQL เทียบกับการจัดการกับเงื่อนไขส่วนใหญ่และเคียวรีที่ตามมากลับมาที่แอพ
Jé Queue

@ Xepoch ฉันคิดว่าถ้ามีอะไรที่เพิ่มขึ้นของ ORMs สอนเรามันเป็นที่คนไม่ชอบเขียนใน SQL ถ้าพวกเขาสามารถหลีกเลี่ยงได้ พวกเขาต้องการเขียนเป็นภาษาของตัวเองมากกว่า
dan_waterworth

ฉันเดาว่าจะใช้อะไรก็ได้ที่สามารถเขียนโค้ดได้ดีกว่าที่คุณจะทำได้
JeffO

2

บริสุทธิ์

Pure เป็นภาษาที่ใช้งานได้ตามการเขียนคำซ้ำ ฉันชอบมันทั้งกระจัดกระจายและแสดงออกถ้าเล็กน้อย understated


+1 Functional หมายถึง vector ซึ่งเป็นภาษาที่ทรงพลังอย่างยิ่ง ในฐานะผู้สืบทอดของ q (ซึ่งเป็นหนี้ต่อ APL) และยืมตันจาก Haskell และคณะ แน่นอนรับประกันหมายถึง
Orbling

2

มันอาจจะไม่ได้ใจที่สุด แต่มันก็ยากที่สุดสำหรับฉันที่จะเรียนรู้ (ฉันคิดว่าHaskellและภาษาแอสเซมบลีนั้นง่ายกว่า!)

นั่นคือชุดของภาษาHDLโดยเฉพาะVHDL (และVerilogในระดับที่น้อยกว่า)

การได้รับความจริงที่ว่า "ฟังก์ชั่น" ทุกตัวทำงานในเวลาเดียวกันนั้นยากอย่างไม่น่าเชื่อและคุณไม่สามารถหลีกเลี่ยงการเปลี่ยนเป็นขนานทุกอย่างได้อย่างแน่นอน แน่นอนว่านี่เป็นเพียงเส้นขอบสำหรับภาษาการเขียนโปรแกรม


ฉันทำ VHDL เพียงเล็กน้อยครั้งเดียว ฉันมีช่วงเวลาแห่งความจริงที่แท้จริงเมื่อฉันรู้ทันทีว่าในขณะที่ฉันกำลังเพิ่มรหัสฮาร์ดแวร์ที่มีประสิทธิภาพมากขึ้นจะปรากฏขึ้นเพื่อใช้รหัสนั้นและมันก็ทำงานพร้อมกันทั้งหมด เช่นเดียวกับการเขียนโปรแกรมแบบมัลติเธรดที่มีเธรดไม่ จำกัด พร้อมกันอย่างแท้จริง บางทีคนที่มีการเข้าถึงโหนดไม่ จำกัด บน EC2 หรือกลุ่มลดแผนที่ได้รับข่าวลือที่คล้ายกัน (แต่หลังจากนั้นไม่นานฉันก็รู้สึกซาบซึ้งถึงความเจ็บปวดที่สมบูรณ์แบบที่จะนำสิ่งที่ไม่น่าสนใจไปใช้ในภาษาท้องถิ่นและวิ่งหนีไป)
จันทร์ที่

1
ในฐานะวิศวกรไฟฟ้าฉันไม่ได้มีปัญหาอะไรมากเกี่ยวกับความพร้อมกันมันเป็นการปลดปล่อยในความเป็นจริง สำหรับความเจ็บปวดของการนำไปใช้งานที่ดี uP เป็นช่องทางแก้ปัญหาเฉพาะชั้นเรียนของปัญหาที่เปลี่ยนปัญหาเป็นวิธีการแก้ปัญหาที่สามารถอธิบายเป็นอัลกอริทึมแนวคิดที่นำมาจากคณิตศาสตร์ ปัญหาเกี่ยวกับความขนานโดยธรรมชาติเป็นหนึ่งในปัญหาที่แก้ไขได้ง่ายและ VHDL และ FPGA มีประโยชน์ในเวลานั้น

ใช่ VHDL ประหลาดถ้าคุณยังไม่ได้เป็นโปรแกรมเมอร์และคุ้นเคยกับการทำงานพร้อมกันหลายช่วงตึก
medivh

1

Tcl

ฉันเริ่มเรียนรู้มันครั้งเดียว แต่เมื่อฉันเรียนรู้มากพอที่จะทำให้ฉันรู้สึกไม่ชอบวิธีที่มันทำให้สมองของฉันรู้สึก ที่ดูเหมือนจะมีคุณสมบัติเป็นใจงอ


1
ฉันได้เขียนโปรแกรม Tcl จำนวนมากในช่วงปี 2538-2540 โดยไม่มีเหตุผลที่ดี เมื่อฉันเริ่มหางานใหม่ในปี 1998 นายหน้าทุกคนในบริเวณอ่าวทั้งหมดพยายามพาฉันเข้าสัมภาษณ์สัมภาษณ์ VIGNETTE ที่จ่ายเงินไม่ดีและมีแรงกดดันสูง ฉันลบมันออกจากประวัติย่ออย่างรวดเร็ว ฉันคิดว่าการให้เวลากับคุณยากกว่านี้เพราะฉันจำได้ว่า Tcl เป็นเรื่องง่าย แต่ฉันก็หวังว่าฉันจะได้เรียนรู้ Python แทนในการหวนกลับ
Adam Crossland

Tcl เป็นรสชาติที่ได้มาแน่นอน โดยส่วนตัวแล้วฉันคิดว่าการออกแบบของภาษานั้นเป็นอัจฉริยะ - ไม่มีภาษาอื่นที่เหมาะกับสมองของฉันเหมือนกับที่ Tcl ทำ แต่ฉันรู้ว่าฉันเป็นคนกลุ่มน้อย รักหรือเกลียดมันการเรียนรู้มันต้องการให้คุณคิดใหม่ว่าภาษาควรทำงานอย่างไร
ไบรอัน Oakley

1

ทัวริงภาษาเครื่องชัด มันมีประสิทธิภาพอย่างมากพิสูจน์ได้เหนือกว่าภาษาการเขียนโปรแกรมอื่น ๆ ทั้งหมดที่มีอยู่และรับประกันได้ว่าจะทำร้ายสมองของคุณถ้าคุณพยายามใช้มัน


6
ฉันต้องคัดค้านการอ้างว่ามันยอดเยี่ยมกว่าที่พิสูจน์ได้ คำที่ดีกว่าแนะนำให้นำประเด็นที่เป็นประเด็นมาพิจารณา นอกจากนี้หากเรารัน C บนคอมพิวเตอร์ที่มีหน่วยความจำไม่สิ้นสุด (ซึ่งมีความยุติธรรมเพราะเครื่องทัวริงทำงานด้วยหน่วยความจำที่ไม่มีที่สิ้นสุด) พวกเขาจะเทียบเท่ากับพลังงาน
Winston Ewert

2
@ Winston: เทปของเครื่องทัวริงไม่จำเป็นต้องไม่มีที่สิ้นสุด มันจะต้องมีโรงงานเทปที่ปลายแต่ละด้านที่สามารถผลิตเทปเพิ่มเติมตามความจำเป็น :)
ไมค์ Dunlavey

"ดีกว่าอย่างแน่นอน" เป็นคำนิยามโดยมีวัตถุประสงค์ หมายความว่าภาษาใด ๆ ที่สามารถนำไปใช้กับเครื่องทัวริงได้ แต่ไม่ใช่ทุกภาษาที่สามารถนำไปใช้กับเครื่องทัวริงได้ แน่นอนว่ามันก็เป็นจริงสำหรับภาษาเช่น C เช่นกันโดยมีหน่วยความจำไม่สิ้นสุดและสแต็กไม่ จำกัด
user12667

BrainFuck ดังที่ได้กล่าวไปแล้วในคำถามและเป็นภาษาเครื่องของทัวริง
Mchl

1
นั่นแสดงให้เห็นว่าเครื่องจักรทัวริงมีประสิทธิภาพมากกว่า ปัญหาคืออย่างน้อยที่สุดเท่าที่ฉันจะใช้คำว่าการอ้างภาษาที่เหนือกว่าจะคำนึงถึงความสะดวกในการใช้งานความพร้อมใช้งาน ฯลฯ
Winston Ewert

1

C

พอยน์เตอร์การจัดการหน่วยความจำและการส่งงานพิมพ์ล้วน แต่ใช้ความคิดจำนวนมากและง่ายต่อการเข้าใจผิด การขาดโครงสร้างข้อมูลในตัวเช่นตารางแฮชหรือรายการหมายความว่าคุณต้องคิดเองหรือหาห้องสมุดบุคคลที่สามและเรียนรู้ API


ขออนุญาต. C เป็นภาษาแอสเซมบลี แน่นอนมันไม่มีสิ่งเหล่านั้น
Peter Rowell

2
ภาษาแอสเซมบลีกำลังงอจิตใจ
david4dev

-1

JESS (เชลล์ระบบผู้เชี่ยวชาญของ Java) ฝังอยู่ในสภาพแวดล้อม Java การปรับตัวของCLIPSนี้เป็นภาษาระบบผู้เชี่ยวชาญตามกฎการทำงาน การพยายามทำแผนที่วัตถุ Java จริง ๆ เป็นข้อเท็จจริงและค้นหาคำถามที่ถูกต้องเพื่อขอผลลัพธ์ที่คุณคาดว่าเป็นความท้าทายที่แท้จริง น้อยดังนั้นถ้าคุณคุ้นเคยกับทฤษฎีระบบผู้เชี่ยวชาญ แต่เมื่อคุณมาจากแนวคิด OOP ที่บริสุทธิ์มันก็ไม่เหมาะ หมายเหตุ: คลิปไม่ใช่เสียงกระเพื่อม แต่ดูเหมือนว่า อีกความคิดหนึ่งที่ประมาท

เมื่อคุณผ่านช่วงการเรียนรู้เริ่มต้นไปแล้วมันจะทรงพลังและรวดเร็วทีเดียวที่จะได้คำตอบ


Jess เป็น CLIPS รุ่นทันสมัยซึ่งฝังอยู่ในโปรแกรมสคริปต์ / ลอจิกสำหรับแอปพลิเคชันของคุณเอง
Tangurena

ตกลงฉันยืนแก้ไข haskel.com/corp/details/0,10294,CLI1_DIV139_ETI9759,00.html อย่างไรก็ตามมันต้องใช้ความคิดที่แตกต่างจากภาษาที่ฝังอยู่ในนั้น
Berin Loritsch

-1

TeXนับเป็นภาษาเนื่องจากเป็นทัวริงสมบูรณ์และฉันคิดว่ามันค่อนข้างน่าเหลือเชื่อ ภาษาสำหรับคณิตศาสตร์เรียงพิมพ์ (และหนังสือเกี่ยวกับการเขียนโปรแกรม) ...


-1

CIL

CIL, Common Intermediate Language ที่โปรแกรม. NETทั้งหมดรวบรวมเป็นชุดประกอบเชิงวัตถุ มันน่าสนใจสำหรับฉันที่จะลองเขียนหรืออ่านโค้ดและเปรียบเทียบโครงสร้างของมันกับ C # ที่ฉันรู้อยู่แล้ว มันเป็นวิธีที่ดีในการเรียนรู้เพิ่มเติมว่า. NET ทำอะไรอยู่เบื้องหลัง และมันจะมีประโยชน์สำหรับสิ่งที่ต้องการสร้างรหัสแบบไดนามิกหรือเขียนใหม่ที่มีอยู่รหัสเรียบเรียงโดยใช้โมโนเซซิล


2
หรือ bytecode สำหรับเรื่องนั้นด้วย?
Jé Queue

หากคุณหมายถึง Java bytecode ดังนั้นฉันไม่มีประสบการณ์ใด ๆ เลยดังนั้นฉันจึงไม่สามารถแนะนำให้ใช้วิธีนี้ได้
svick

ฉันไม่ได้จริงๆเปรียบเทียบกับ Java Bytecode และ CIL เช่น Java-Bytecode จะรวบรวมแล้วค่อยจะได้รับการเรียบเรียงที่รันไทม์ (Just-In-Time-คอมไพเลอร์ของ .net)
Basti

@chiffre ภายใต้สถานการณ์ส่วนใหญ่ Java Bytecode และ CIL ทำงานเหมือนกันทุกประการ ในทั้งสองกรณีคุณมีซอร์สโค้ด (C # หรือ Java) ที่ได้รับการรวบรวมเป็นภาษาตัวกลางไบนารีที่“ เวลารวบรวม” (CIL หรือ Java Bytecode) ซึ่งจะได้รับการคอมไพล์เป็นรหัสเครื่องจริงที่“ รันไทม์” โดย JIT ผู้รวบรวม
svick
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.