Bahasa pemrograman yang paling mencerahkan pikiran? [Tutup]

45

Dari bahasa pemrograman yang cukup umum, manakah yang menurut Anda paling membekas?

Saya telah mendengarkan banyak podcast pemrograman dan meluangkan waktu untuk mempelajari beberapa bahasa baru yang sedang dipertimbangkan, dan penting. Saya tidak perlu berbicara tentang BrainFuck , tetapi bahasa apa yang Anda anggap sebagai salah satu yang menantang paradigma pemrograman umum?

Bagi saya, saya melakukan pemrograman fungsional dan logika (misalnya, Prolog ) pada 1990-an, jadi saya tidak bisa mengatakan bahwa saya menemukan sesuatu yang istimewa di sana.

Saya jauh dari menjadi ahli di dalamnya, tetapi bahkan hari ini bahasa pemrograman yang paling membekas bagi saya adalah Perl . Bukan karena "Hello World" sulit untuk diimplementasikan, tetapi ada begitu banyak fleksibilitas leksikal sehingga beberapa solusi tersulit dapat diurai sedemikian puitis sehingga saya harus berjalan keluar dari terminal untuk menjernihkan pikiran. Saya tidak mengatakan saya kemungkinan akan menjual implementasi perangkat lunak komersial, hanya saja ada alasan berbeda mengapa Perl begitu terkenal. Lihat saja daftar dasar buku di atasnya.

Jadi, apa bahasa yang melemahkan pikiran Anda yang mempromosikan pemrograman dan praktik Anda yang lebih baik ?

Xepoch
sumber
Tidak bisakah itu menjadi mindbending dan biarkan begitu saja?
4
Bahasa apa pun di mana ruang putih penting!
mootinator
@ bootinator - Tapi Python sebenarnya agak menyenangkan untuk dikerjakan selama editor teks Anda tidak membuat Anda kesakitan.
rjzii
1
@Thorbjorn Apakah seseorang akan menambahkan INTERCAL? APL adalah proyek sekolah menengah pertama dibandingkan dengan ayah besar itu.
Mark C
Perl adalah tempat yang paling sulit. Saya berumur 12 tahun dan saya dapat dengan mudah memprogram Perl.
Dinamis

Jawaban:

73

APL

Bahasa ini sangat kuat dan sangat singkat, itu akan melukai otak Anda.

Sebagai permulaan sulit untuk digunakan tanpa keyboard khusus, atau setidaknya overlay keyboard untuk menampilkan semua simbol tidak jelas yang digunakannya.

Keyboard APL

Kemudian bahasanya adalah paradigma berbasis vektor / array dan berspesialisasi pada aljabar linier kompleks. Versi aslinya bahkan tidak memiliki konstruksi loop, apa pun dan semuanya dilakukan dengan merantai operator array yang agak tidak biasa secara bersamaan.

  • strip_tags()siapa saja? (dipinjam dari Wikipedia)

strip_tags () ala APL

Orbling
sumber
18
+1 untuk menampilkan keyboard
tcrosley
5
@tcrosley: Sangat menyenangkan jika Anda memiliki yang asli: wickensonline.co.uk/apl/unicomp-apl-top-large.jpg
Orbling
4
Dan jika itu belum cukup melemahkan pikiran, ada beberapa operator yang perlu menggunakan tombol backspace / overstrike. Sebagai contoh, invers matriks adalah kotak kotak (di atas tombol L) yang disadap dengan tanda divide (yang di sebelah tombol backarrow di sudut kanan atas gambar keyboard).
Tangurena
2
Saya mengalami kilas balik ke awal 1980-an ketika saya melakukan APL untuk melakukan analisis regresi statistik tingkat tinggi, orang masih menggunakannya? Merasa ngeri.
HLGEM
2
Saya melakukan banyak APL sekali - masih memegang tempat nostalgia bagi saya ... Saya menyukainya saat itu.
cepat
56

Haskell . Sangat dekat dengan fungsional murni, yang tidak terbiasa dengan kebanyakan orang; sangat menuntut, yang sangat membantu setelah Anda tahu apa yang Anda lakukan tetapi membuat frustrasi sampai saat itu; memiliki sintaksis yang agak samar, sangat simbolis, yang sangat bagus setelah Anda tahu, tetapi buram sebelum itu ... daftar berjalan.

Juga, sangat tidak mungkin untuk memformat barang dengan cara yang terlihat bagus untuk saya.

Jon Purdy
sumber
7
Saya akan mengatakan Haskell juga, tetapi bukan karena itu samar. Walaupun tentu saja sulit untuk dimengerti, hal yang membekas adalah tentang teori di baliknya. Monad dan Arrows masih merupakan domain yang belum saya taklukkan :)
Matthieu M.
11
Mengapa "Sangat dekat dengan fungsional murni"? Ini murni fungsional.
dan_waterworth
4
Saya ingin mengutip diri saya sendiri dan menambahkan bagaimana Haskell akan membengkokkan pikiran Anda: "Haskell mencegah Anda mendorong sesuatu di bawah karpet, memaksa Anda untuk berurusan dengan struktur program Anda secara eksplisit, dan itu mengajari Anda bahasa untuk menggambarkan struktur ini. : bahasa tipe. Memahami tipe, terutama tipe kaya seperti Haskell, akan menjadikan Anda programmer yang lebih baik dalam bahasa apa pun. " programmers.stackexchange.com/questions/28950/…
Waquo
14
Haskell adalah bahasa pemrograman yang sepenuhnya fungsional. Kode yang Anda tulis di Haskell murni fungsional (selama Anda tidak menggunakan unsafePerformIO dan sejenisnya). IO-Monad adalah murni fungsional, jika Anda percaya sebaliknya, Anda tidak mengerti bagaimana monad digunakan untuk memodelkan aliran kontrol dengan cara yang murni fungsional. Pikirkan program Anda sebagai daftar belanja tindakan-IO, dengan daftar belanja hanya berupa struktur data murni, tanpa efek samping, dan runtime bahasa menjadi pembelanja yang melakukan efek samping.
Waquo
8
@ Jon, bagaimana kalau kita sepakat bahwa: Haskell, bahasanya, murni fungsional, tapi ternyata sistem runtime tidak. Eksekusi program haskell tidak murni, tetapi program itu sendiri murni.
dan_waterworth
30

Prolog. Itu sangat berbeda dari bahasa lain yang saya gunakan saat pertama kali saya mengenalnya. Saya suka, jadi saya tidak membenci sintaks atau apa pun.

Matt H
sumber
2
Saya mendekati Prolog sebagai pemrograman terbalik, ingin mengetahui jawaban saya dan kemudian memprogram untuk mendapatkan pertanyaan :)
Jé Queue
1
@ Xepoch: Saya pikir Anda mungkin ada di sana, Prolog merumuskan pertanyaan. Salah satu-satunya bahasa 5GL yang tepat digunakan.
Orbling
Secara umum saya pikir Prolog sangat menarik dan sangat kuat, tetapi saya mengalami kesulitan besar untuk mendapatkan kepalaku sepenuhnya di sekitar penempatan cut ( !).
Orbling
+1 untuk Prolog, saya memiliki kursus kecerdasan buatan yang menggunakan Prolog dan itu satu-satunya kursus ilmu komputer yang saya
ikuti dengan
Prolog bukan bahasa pemrograman fungsional. Menjadi masam pada fungsional oleh Prolog seperti menjadi masam pada pemrograman prosedural oleh Lisp.
HANYA SAYA PENDAPAT benar
24

Saya akan setuju dengan Anda di Perl. Itu sintaks paling jelek yang pernah saya lihat. Mereka mengatakan, bahwa bahkan pengembang Perl tidak dapat mengingat apa yang telah mereka tulis sehari setelahnya.

Sorantis
sumber
2
Def +1 pada Perl. Saya selalu sangat menyukai (saya percaya mereka dipanggil) variabel 'tersirat'. Membuat kode khusus menulis yang bagus.
GrandmasterB
2
Semua orang menulis Perl sangat berbeda sehingga mereka mungkin juga menulis bahasa yang berbeda-Anda tidak harus hanya belajar bagaimana Perl bekerja untuk mengambil kode orang lain di dalamnya, Anda juga harus belajar bagaimana orang itu menggunakannya.
glenatron
3
Bah untuk jawaban ini dan kedua komentar di atasnya. Perl yang ditulis dengan baik mudah dibaca dan ditulis. Baby-perl yang ditulis oleh pemula itu sederhana, jika verbose. Satu-satunya perl "tidak dapat dibaca" adalah dikaburkan dengan sengaja, atau skrip one-liners.
Sean McMillan
22

Saya harus mengatakan Forth . Notasi bahwa semua operasi adalah manipulasi tumpukan. Dalam bentuknya yang murni tidak ada variabel lokal yang digunakan.

Peter Mortensen
sumber
10
FORTH adalah bahasa yang luar biasa. Ketika saya pertama kali belajar pemrograman pada awal 80-an, saya memiliki Atari 400 dan pilihan saya ditafsirkan BASIC, Assembly dan FORTH. Saya menggunakan ketiganya secara ekstensif, tetapi FORTH lebih dari yang lain. Saya masih memiliki buku-buku Starting ForTH dan Thinking FORTH yang ultra klasik dari Leo Brodie. Bahkan, jika saya diminta untuk membuat bahasa self-hosting dari awal pada sistem perangkat keras baru, saya akan memilih FORTH tanpa ragu-ragu.
Adam Crossland
3
@Adam Crossland: Thinking FORTH adalah buku yang hebat, Anda mungkin tertarik dengan tautan ini: thinking-forth.sourceforge.net
Orbling
1
@Orbling: pikiran besar berpikir sama. Tidak lebih dari 10 menit yang lalu, saya meletakkan PDF di Kindle saya.
Adam Crossland
1
@Adam Crossland: Tempat yang bagus untuk itu. Buku itu umumnya bermanfaat bagi para programmer, harus ada dalam daftar bacaan untuk orang-orang - tertarik pada FORTH atau tidak.
Orbling
1
Saya sepenuhnya setuju. Ada banyak hal yang bisa dikatakan tentang bagaimana kita berpikir tentang menyelesaikan masalah secara umum. Brodie adalah seorang pemikir jernih dan penulis yang jelas. Karya-karyanya menyenangkan bagiku.
Adam Crossland
21

Ruby .

Ini membuat saya ingin bunuh diri:

1.month.from.now()

(Saya bisa saja salah sintaks, tetapi Anda mengerti maksudnya).

Matthew Read
sumber
23
YA TUHAN. Siapa yang pernah berpikir ini adalah ide yang bagus?
EpsilonVector
8
Pembengkokkan pikiran bukanlah dengan bacaan, melainkan dengan tulisan. Membuat omong kosong ini sulit, dan harus menghafal / mencari semua fungsi / properti bawaan adalah konyol.
Matius Baca
55
Apakah hanya saya yang menganggap ini terlihat luar biasa, dan mungkin merupakan alasan yang baik untuk mempelajari Ruby?
Orbling
9
Sangat menyenangkan membaca, ya. Tetapi apakah ini berarti saya dapat menulis 3.months.from.last.month.if.it.was.a.leap.year? Tidak. Atau setidaknya, saya kira tidak . Jika saya bisa ... RoR dapat menjadi bahasa telepati pertama yang pernah ada.
morganpdx
15
Apa yang salah DateTime.Now.AddMonths(1);? Fitur - fitur ini sulit membuat kode lebih mudah dibaca. (Saya tidak mengatakan C # memiliki sintaks terbaik. Anda dapat mengubahnya ke konvensi bahasa apa pun dan itu akan tetap berlaku.)
ChaosPandion
18

Brainfuck

Siapa pun yang dapat dengan jujur ​​menulis ejekan bahasa ini bahkan tidak perlu utas seperti ini.

Hello World (petunjuk, kiri; penjelasan, kanan):

+++++ +++++             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'
Scott Stamp
sumber
2
Atau bagaimana dengan Ruang Putih? Semua kejahatan Brainfuck dikombinasikan dengan kode yang tidak terlihat.
Loren Pechtel
17

Lisp adalah bahasa terakhir yang membengkokkan pikiran saya.

Saya telah membawa monad dan pemrograman fungsional dari Haskell, dan sekarang saya memiliki makro untuk bekerja dengannya. Saya baru saja memasuki CLOS dan belum menyentuh sistem kondisi sama sekali.

Larry Coleman
sumber
Saya bahkan tidak suka Lisps (dengan kemungkinan kecuali Clojure - saya masih belum memutuskan di sana) dan memberi Anda +1. Bagian yang membekas pikiran pasti ada di sana dan apa yang saya pelajari dari Lisp, meskipun saya tidak menggunakannya, memberi tahu banyak tentang apa yang saya lakukan dalam bahasa lain.
HANYA SAYA PENDAPAT benar
14

PENYAKIT GONDOK

Ini adalah bahasa yang muncul dari waktu ke waktu dalam cerita online dan mendapat kehormatan tambahan dalam penggunaan produksi yang sebenarnya menyimpan informasi penting keselamatan-kehidupan (yaitu, catatan pasien). Namun, ini juga merupakan bahasa di mana kesungguhan dihargai dan fungsi-fungsi seperti berikut mungkin muncul dalam kode produksi (contoh dari artikel Wikipedia pada topik):

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))
merampok
sumber
wow, kamu tidak bercanda kan? Saya tidak tidur berlebihan dan tiba-tiba tanggal 1 April? Tidak ada yang dengan banyak tanda kurung dan tanda dolar yang berada di dekat catatan pasien saya.
dan_waterworth
1
Pekerjaan pemrograman saya yang pertama adalah dengan perusahaan yang berspesialisasi dalam MUMPS! Sayangnya saya telah melakukan kursus universitas tentang pengembangan web sehingga mereka menempatkan saya di tim ASP yang baru dibentuk perusahaan alih-alih dengan tangan lama, tetapi MUMPS adalah bahasa yang kami latih selama beberapa minggu pertama kami. Mungkin aku bisa lolos ...
matahari terbenam
1
Adakah yang memposting di sini dari Madison Wisconsin? Verona, benarkah?
Hans Passant
1
Saya yakin thedailywtf.com memiliki seluruh bagian yang didedikasikan untuk MUMPS. Tidak terlihat seperti bahasa yang ingin saya sentuh.
Tyanna
1
Saya ingat belajar M di dunia akademis, dan berpikir itu menarik sebagai bahasa tujuan khusus. Kesempitan yang dimilikinya seperti semacam minifikasi yang menyimpang. Dalam kenaifan saya, saya pikir kode produksi akan mengandung sedikit singkatan bahasa yang ekstrem. Pertama dan satu-satunya kali saya melihat basis kode M produksi usus saya diperketat ... itu tampak seperti contoh Anda. Oh, kengeriannya!
ajk
13

Saya akan mengatakan Coq , atau implementasi lain dari teori tipe dependen. Sistem tipe Haskell relatif tidak ekspresif. Pindah ke sistem tipe yang lebih ekspresif (misalnya, kalkulus konstruksi (CoC)) memungkinkan Anda untuk melakukan beberapa hal yang rapi, seperti membuktikan properti program dalam bahasa tersebut, dan menanamkan invarian kuat ke dalam tipe Anda yang dapat diperiksa secara statis.

Peter Mortensen
sumber
2
Sistem / pepatah Jenis Tergantung apa pun mungkin akan menilai lebih membingungkan daripada bahasa biasa, jadi +1.
Orbling
1
Verifikasi formal program adalah sesuatu yang baru saya mulai. Ini tentu membengkokkan pikiran dan menjadi semakin berguna di dunia nyata. +1
dan_waterworth
7

Objektif-C . Agar adil, saya hanya mempelajarinya dengan sangat singkat dan tidak menyukai sintaks pada pandangan pertama sehingga saya menyerah.

Karena itu adalah bahasa yang relatif (relatif) (terutama untuk pengembangan Mac / iPhone / iPad ), saya yakin itu sebenarnya cukup baik setelah Anda terbiasa.

Peter Mortensen
sumber
2
Yah, mungkin memang memenuhi syarat sebagai sedikit membengkokkan pikiran, tetapi saya menyukainya. Mungkin membantu jika Anda menyadari bahwa [foo bar]ini hanya gula sintaksis objc_sendMsg(foo, "bar");yang pada gilirannya mencari fungsi pointer (ini adalah "bar" khusus, bukan yang umum). Apakah Anda menyadari itu sepenuhnya diketik bebek?
Per Johansson
Objective-C hanyalah gula sintaksis yang sangat besar di sekitar fungsi runtime. Setelah Anda terbiasa [receiver doStuff:arg]terlihat cukup seperti java dinamis
toasted_flakes
6

Saya memilih Merkurius .

Mercury membungkuk pikiran saya dengan menunjukkan bahwa bahkan bahasa murni dapat melakukan I / O .

Cara kerjanya adalah fungsi I / O di Merkurius mengambil nilai 'keadaan dunia' dan mengembalikan nilai 'keadaan dunia' baru. Jadi fungsi I / O dalam Merkurius mengubah dunia dan karenanya kemurnian dipertahankan.

dan_waterworth
sumber
3
+1 "... merkuri mengubah dunia dan karenanya kemurnian dipertahankan." - Saya suka itu di luar konteks. ;-)
Orbling
Saya berjuang melalui kurva belajar dengan Merkurius sekarang. Ini merupakan perjuangan yang layak sejauh ini. Saya sangat menyukainya.
HANYA SAYA PENDAPAT benar
Satu-satunya hal yang membuat saya lepas dari merkuri adalah bahwa tipe stringnya adalah NULL yang diakhiri.
dan_waterworth
6

Itu pasti Skema , tentunya. Mencoba menjelaskan call-with-current-continuationselalu menyakiti otak saya, tetapi begitu Anda memahaminya, Anda dapat membuat solusi yang sangat elegan.

Ingin berhenti di tengah jalan melalui algoritme dan kendali tangan ke orang lain? Tentu!

Ingin melanjutkan lanjutan yang sama beberapa kali? Tentu saja!

Ingin menjeda eksekusi suatu algoritma, mendefinisikan kembali suatu fungsi, kemudian melanjutkan eksekusi dengan tumpukan asli tetapi keadaan global yang diperbarui? Tidak masalah! Dan apakah ini beberapa kali dengan perubahan yang berbeda pada keadaan global tetapi titik masuk kembali tumpukan yang sama? Untuk Anda, tuan, apa saja!

Cameron Skinner
sumber
+1 LOL + "Untuk Anda, tuan, apa saja!" Selain hampir menjadi garis dalam sebuah lagu dalam Oliver!, Itu juga merupakan aspirasi yang baik untuk memiliki bahasa.
Orbling
1
Skema bukan satu-satunya bahasa dengan kelanjutan eksplisit. Haskell , misalnya, mendukungnya baik-baik saja dan sama membekasnya.
HANYA SAYA PENDAPAT benar
4
Ini bisa dibilang lebih gila di Haskell, karena itu (panggilan / cc) diimplementasikan sebagai perpustakaan dan bukan fitur bahasa. Tapi mungkin itu membuatnya kurang bengkok pikiran.
Logan Capaldo
Saya pikir itu secara bersamaan lebih dan kurang membengkokkan pikiran. Menyimpan kontradiksi itu di kepalaku menekuk pikiranku. Jadi pada akhirnya Haskell lebih membekukan pikiran. :)
HANYA PENDAPATAN SAYA yang benar
Hal yang paling keren tentang kelanjutan Skema (dan Ruby !) Adalah mereka terintegrasi ke dalam bahasa. Haskell pada dasarnya hanya menambahkan sintaks monadiknya di sekitar gaya passing kelanjutan biasa, yang dapat Anda lakukan dalam Skema juga. Tetapi memiliki panggilan / cc yang terpasang di mana - mana tanpa harus menyematkan semuanya dalam konstruksi monadik pasti memungkinkan banyak konstruksi yang membengkokkan pikiran.
Dario
4

Saya biasa menggunakan editor kuno yang disebut TECO (Editor Teks dan COmparator), yang merupakan bahasa modifikasi teks yang sangat kuat, dengan segala macam kemampuan makro. Saya tidak ingat kutipan terkenal yang tepat tentang itu tetapi intinya adalah "kumpulan acak 20 karakter hampir selalu merupakan program TECO yang sah, dan akan mengubah file Anda (ini adalah editor) dengan cara yang secara fundamental tidak dapat diprediksi. Saya ingat menulis konverter Fortran ke PL1 di sekitar satu halaman kode TECO.

Omega Centauri
sumber
5
"Salah satu gim yang lebih menghibur untuk dimainkan dengan TECO adalah mengetikkan nama Anda sebagai baris perintah dan mencoba menerka apa yang terjadi. Hampir semua kesalahan pengetikan saat berbicara dengan TECO mungkin akan menghancurkan program Anda, atau bahkan lebih buruk - memperkenalkan bug halus dan misterius dalam subrutin sekali bekerja. " Bung, itu hanya hari-hari masa lalu!
HANYA SAYA PENDAPAT benar
1
TECO juga merupakan basis asli EMACS. EMACS dimulai hanya sebagai koleksi makro TECO!
Gabe
@ Omega: perlu untuk mengatakan TECO mana yang Anda maksud. DEC TECO, sebagaimana dikirim dengan TOPS-10, atau MIT TECO, yang ditulis dalam MIDAS. TECO terakhir ini adalah apa yang ditulis EMACS. Ini juga bagaimana EMACS diperpanjang. Saya biasa meretas EMACS alih-alih melewati kelas.
John Saunders
Saya hanya menggunakan DEC TECO. Dan ya itu adalah hari-hari (untuk menjadi muda kembali) ....
Omega Centauri
1
Buat saya ingat mengetik dalam mode perintah Vim
ron
3

Assembly telah menjadi "penekuk pikiran" yang paling bagi saya, tetapi saya baru memulainya.

Peter Mortensen
sumber
apa yang membuatnya lebih buruk adalah tergantung pada OS & hardware
Dave
Bagaimana dengan itu membuatnya begitu? Instruksi langsung tanpa urutan pengelompokan eksplisit? sesuatu yang lain?
Jé Queue
baik, khususnya, saya tidak suka betapa tidak jelasnya aliran program dengan mudah terlihat. Tidak mudah dibaca dengan cepat.
Anto
2
Ah, Cincinnati Milacron 2200B: Panjang kata variabel dikombinasikan dengan modifikasi runtime dari alamat JMP. Itu membuat LSD terlihat jinak.
Peter Rowell
3

Gangguan . Mempelajarinya adalah serangkaian epifani kecil, yang masing-masing akan benar-benar mengubah cara Anda berpikir tentang memecahkan masalah pemrograman.

Peter Mortensen
sumber
3

REBOL

Itu dibangun di sekitar gagasan kode-sebagai-data, seperti Lisp . Penganut bahasa mengalami kesulitan menjelaskan apa manfaatnya yang unik atas pendekatan lain dalam keluarga itu, dan biasanya mengangkat bahu dan mengatakan sesuatu seperti "Orang yang mendesain AmigaOS datang dengan itu, perpustakaan standar disertakan dan mikroskopis, dan begitu Anda 'mendapatkannya' itu akan seperti mengambil pil Matrix merah dan Anda tidak akan pernah ingin kembali. "

Masalahnya adalah sebagiannya unik dan belum secara tepat mendefinisikan programmer mana yang menjadi pasarnya. Tetapi juga sebagian karena banyak orang yang mengadvokasi itu hanya payah untuk menjelaskan . :)

Tapi Douglas Crockford dulunya adalah penggemar, menarik beberapa inspirasi darinya dengan penciptaan JSON , dan telah menyarankan orang-orang melihat ke dalamnya baru-baru ini Oktober, 2010:

"Ted Neward melakukan pekerjaan yang sangat baik untuk memoderasi panel pada 'Masa Depan Bahasa Pemrograman'. Di akhir panel, Ted bertanya kepada panelis bahasa mana yang mereka harus pelajari untuk mendapatkan ide-ide baru. Daftar itu termasuk Io (Bruce Tate), Rebol (Douglas Crockford) , Keempat dan Faktor (Alex Payne), Skema dan Assembler (Josh Bloch), dan Clojure (Guy Steele). "

Sumber: sauria.com

Saya pikir ada baiknya mencari siapa pun yang ingin meregangkan bagaimana mereka berpikir tentang desain bahasa dan ekstensibilitas. Sekarang ini adalah open source (setelah 18 tahun pengembangan hak milik) penafian yang biasa saya berikan untuk menjaga jarak tidak berlaku lagi ... layak untuk dilihat! Komunitas bahkan telah keluar dari program pesan berbasis Rebol milik mereka dan mulai mengobrol di Stack Overflow (sangat mengejutkan saya!)

HostileFork
sumber
1
Saya menghindari REBOL karena satu-satunya implementasi praktisnya adalah perangkat lunak yang tidak terstandarisasi, non-terbuka yang diubah sesuai dengan keinginan perusahaan yang dimilikinya. (Rebol 2 vs. Rebol 3 ...) Jika itu pernah distandarisasi atau dibuka, saya akan melihat lagi tetapi sampai hari itu Rebol tetap lepas dari sabuk alat saya.
HANYA SAYA PENDAPAT benar
1
@JUSTMYcorrectOPINION mungkin sudah tiba saatnya untuk melihat lagi! Rebol 3 sekarang adalah perangkat lunak berlisensi Apache2 . Kami bahkan punya RebolBot di sini di ruang obrolan Rebol dan Merah di StackOverflow untuk membantu kami dengan demo bahasa. ( Red adalah varian Rebol open source lain yang menunjukkan beberapa janji yang sangat menarik sebagai versi kompilasi hibrid.)
HostileFork
2

Saya akan mengatakan dari panjang bahwa banyak orang pergi untuk menghindari harus menulisnya secara langsung, bahwa pengembang menemukan SQL untuk membengkokkan pikiran. Saya kira banyak orang tidak berpikir secara alami dalam hal set.

Peter Mortensen
sumber
SQL tentu membengkokkan pikiran, tetapi tidak membantu saya untuk menulis kode yang lebih baik.
dan_waterworth
4
SQL bagi saya sama dengan BASIC, hanya saya. Luar biasa betapa mudahnya aplikasi yang didukung DB bisa ketika Anda memegang penanganan data penuh dalam SQL.
Jé Queue
@dan_waterworth, saya pikir SQL dapat membantu Anda menulis kode yang lebih kecil dan lebih ringkas dengan menempatkan lebih banyak logika ke dalam SQL vs menangani sebagian besar persyaratan dan permintaan berikutnya kembali di app.
Jé Queue
@Xepoch, saya pikir, jika ada sesuatu yang telah diajarkan oleh ORM kepada kita, itu karena orang tidak suka menulis dalam SQL jika mereka bisa menghindarinya. Mereka lebih suka menulis dalam bahasa mereka sendiri.
dan_waterworth
Saya kira menggunakan apapun yang dapat menulis kode yang lebih baik daripada yang Anda bisa adalah hal yang baik.
JeffO
2

Murni

Pure adalah bahasa fungsional berdasarkan penulisan ulang istilah. Saya suka, itu jarang dan ekspresif, jika sedikit mengecilkan.

Aliud Alius
sumber
+1 Fungsional artinya vektor, bahasa yang sangat kuat itu. Sebagai keturunan q (yang berutang sedikit ke APL) dan meminjam satu ton dari Haskell et al. Itu tentu waran menyebutkan.
Orbling
2

Ini mungkin bukan yang paling membekas, tetapi sejauh ini yang paling sulit bagi saya untuk belajar (saya pikir Haskell dan bahasa assembly lebih mudah!)

Itu adalah set bahasa HDL , terutama, VHDL (dan Verilog pada tingkat lebih rendah)

Mengatasi kenyataan bahwa setiap "fungsi" berjalan pada saat yang sama adalah sangat sulit dan Anda tidak dapat menghindari pergeseran untuk memaralelkan segalanya. Tentu saja, ini hanya garis batas bahasa pemrograman.

Peter Mortensen
sumber
Saya pernah melakukan sedikit VHDL. Saya memiliki momen pencerahan nyata ketika saya tiba-tiba menyadari bahwa, ketika saya menambahkan kode, semakin banyak perangkat keras yang muncul untuk mengimplementasikan kode itu dan semuanya berjalan secara bersamaan. Seperti pemrograman multithread dengan benar-benar tanpa batas mengeksekusi utas; mungkin orang-orang dengan akses ke node tak terbatas pada EC2 atau cluster pengurang peta mendapatkan buzz serupa. (Tapi tak lama kemudian saya mulai menghargai betapa sakitnya mengimplementasikan sesuatu yang tidak sepele dalam bahasa ini, dan melarikan diri).
timday
1
Menjadi insinyur listrik saya tidak punya banyak masalah dengan simultanitas, itu sebenarnya pembebasan. Adapun rasa sakit implementasi, baik uP adalah solusi khusus untuk kelas masalah tertentu yang mengubah masalah menjadi solusi yang dapat digambarkan sebagai algoritma, sebuah konsep yang awalnya diambil dari matematika. Masalah dengan paralelisme yang melekat adalah di antara masalah yang mudah dipecahkan dan VHDL dan FPGA berguna pada saat itu.
Ya, VHDL aneh jika Anda belum menjadi programmer dan terbiasa bekerja dengan beberapa blok simultan.
medivh
1

Tcl

Saya mulai mempelajarinya sekali, tetapi ketika saya belajar cukup banyak untuk membuat masuk akal saya benar-benar tidak menyukai cara itu membuat otak saya merasa. Itu tampaknya memenuhi syarat sebagai membengkokkan pikiran.

David Thornley
sumber
1
Saya melakukan banyak pemrograman Tcl sekitar 1995-1997 tanpa alasan yang bagus. Ketika saya mulai mencari pekerjaan baru pada tahun 1998, setiap perekrut di seluruh Bay Area mencoba membuat saya untuk mewawancarai pertunjukan VIGNETTE dengan tekanan tinggi yang dibayar rendah. Saya dengan cepat menghapusnya dari resume saya. Saya menganggap memberi Anda kesulitan atas hal ini, karena saya ingat Tcl sangat mudah, tetapi saya agak berharap bahwa saya telah belajar Python sebagai gantinya, dalam retrospeksi.
Adam Crossland
Tcl jelas merupakan rasa yang didapat. Secara pribadi saya pikir desain bahasanya jenius - tidak ada bahasa lain yang cocok dengan otak saya seperti halnya Tcl, tapi saya tahu saya termasuk minoritas. Suka atau benci, mempelajarinya mengharuskan Anda memikirkan kembali bagaimana bahasa seharusnya bekerja.
Bryan Oakley
1

Bahasa mesin Turing , jelas. Ini sangat kuat, terbukti lebih unggul dari semua bahasa pemrograman lain yang ada, dan dijamin akan melukai otak Anda jika Anda mencoba menggunakannya.

Peter Mortensen
sumber
6
Saya harus menolak untuk mengklaim bahwa itu terbukti unggul. Istilah atasan menyarankan untuk mempertimbangkan masalah subjektif. Juga, jika kita menjalankan C pada komputer dengan memori tak terbatas (yang hanya wajar karena mesin Turing berjalan dengan memori tak terbatas) mereka setara dalam kekuasaan.
Winston Ewert
2
@ Winston: Kaset mesin turing tidak harus tanpa batas. Hanya perlu memiliki pabrik kaset di setiap ujung yang dapat memproduksi pita tambahan sesuai kebutuhan :)
Mike Dunlavey
"Terbukti unggul" menurut definisi merupakan istilah objektif. Ini berarti bahwa bahasa apa pun dapat diimplementasikan pada mesin Turing, tetapi tidak semua bahasa dapat menerapkan mesin Turing. Tentu saja, itu juga berlaku untuk bahasa seperti C juga, memberikan memori tak terbatas dan tumpukan tak terbatas.
user12667
BrainFuck seperti yang disebutkan dalam pertanyaan, dan itu cukup banyak bahasa mesin Turing.
Mchl
1
Itu menunjukkan bahwa mesin Turing lebih kuat. Masalahnya adalah, setidaknya saat saya menggunakan istilah ini, mengklaim bahasa sebagai yang unggul juga akan mempertimbangkan kemudahan penggunaan, ketersediaan, dll.
Winston Ewert
1

C

Pointer, manajemen memori dan tipe casting semua membutuhkan banyak pemikiran dan mudah salah. Kurangnya struktur data bawaan seperti tabel atau daftar hash berarti Anda harus membuat sendiri atau menemukan perpustakaan pihak ketiga dan mempelajari API-nya.

david4dev
sumber
Permisi. C adalah bahasa rakitan. Tentu saja tidak ada hal-hal itu.
Peter Rowell
2
Bahasa majelis membengkokkan pikiran.
david4dev
-1

JESS (Java Expert System Shell). Tertanam dalam lingkungan Java, adaptasi CLIPS ini adalah bahasa sistem pakar berdasarkan aturan fungsional. Mencoba memetakan objek Java nyata sebagai fakta dan mencari pertanyaan yang tepat untuk mendapatkan hasil yang Anda harapkan adalah tantangan nyata. Kurang begitu jika Anda terbiasa dengan teori sistem pakar, tetapi ketika Anda berasal dari pola pikir OOP murni itu tidak cocok. CATATAN: KLIP bukan Lisp, tapi sepertinya itu. Namun pikiran lain bender.

Setelah Anda melewati kurva belajar awal, itu sangat kuat dan sangat cepat untuk datang dengan jawabannya.

Berin Loritsch
sumber
Jess adalah versi modern CLIPS yang juga dapat digunakan sebagai semacam mesin scripting / logika untuk aplikasi Anda sendiri.
Tangurena
Ok, saya berdiri dikoreksi. haskel.com/corp/details/0,10294 , CLI1_DIV139_ETI9759,00.html Namun demikian, ini membutuhkan pola pikir yang sangat berbeda dari bahasa yang digunakan.
Berin Loritsch
-1

TeX dianggap sebagai bahasa, karena Turing lengkap , dan saya menganggapnya cukup membekas. Bahasa untuk matematika pengaturan huruf, (dan buku tentang pemrograman) ...

Peter Mortensen
sumber
-1

CIL

CIL, Common Intermediate Language yang dikompilasi oleh semua .NET program, semacam perakitan berorientasi objek. Sangat menarik bagi saya untuk mencoba menulis atau membaca kode di dalamnya dan membandingkan konstruknya dengan C # yang sudah saya ketahui. Ini adalah cara yang baik untuk mempelajari lebih lanjut apa yang dilakukan .NET di belakang layar. Dan itu bisa berguna untuk hal-hal seperti pembuatan kode dinamis atau menulis ulang kode yang dikompilasi menggunakan Mono Cecil .

Peter Mortensen
sumber
2
atau bytecode dalam hal ini juga?
Jé Queue
Jika Anda maksudkan bytecode Java, maka saya tidak punya pengalaman dengan itu sama sekali, jadi saya tidak dalam posisi untuk merekomendasikannya sebagai mind-bending.
svick
Saya tidak akan benar-benar membandingkan Java-Bytecode dan CIL, karena Java-Bytecode sudah dikompilasi dan CIL akan dikompilasi pada saat runtime (Just-In-Time-Compiler dari .net)
basti
@ Chiffre Dalam sebagian besar keadaan, Java Bytecode dan CIL bekerja persis sama. Dalam kedua kasus, Anda memiliki kode sumber (C # atau Java) yang akan dikompilasi ke bahasa perantara biner di "waktu kompilasi" (CIL atau Java Bytecode), yang kemudian dikompilasi ke kode mesin aktual saat "runtime", oleh JIT penyusun.
svick