Bahasa apa yang penting untuk dipelajari untuk memahami berbagai pendekatan dan konsep? [Tutup]

172

Ketika semua yang Anda miliki adalah sepasang pemotong baut dan sebotol vodka, semuanya tampak seperti kunci di pintu gudang perahu Wolf Blitzer. (Ganti dengan palu dan paku jika Anda tidak membaca xkcd)

Saat ini saya memprogram Clojure, Python, Java dan PHP, jadi saya akrab dengan sintaks C dan LISP serta hal spasi putih. Saya tahu imperatif, fungsional, tidak berubah, OOP dan beberapa jenis sistem dan hal lainnya. Sekarang saya ingin lebih!

Bahasa apa yang mengambil pendekatan yang berbeda dan akan berguna untuk pemilihan alat praktis atau pemahaman teoretis?

Saya tidak ingin belajar bahasa fungsional lain (Haskell) atau bahasa OOP imperatif lainnya (Ruby), saya juga tidak ingin mempraktikkan bahasa menyenangkan yang tidak praktis seperti Brainfuck.

Satu hal yang sangat menarik yang saya temukan adalah bahasa berbasis tumpukan monoikonik seperti Factor.

Hanya ketika saya merasa saya mengerti sebagian besar konsep dan memiliki jawaban untuk semua pertanyaan saya, saya ingin mulai berpikir tentang bahasa mainan saya sendiri untuk memuat semua preferensi pribadi saya.

Pepijn
sumber
3
Saya akan memberi +1 untuk referensi xkcd saja, tetapi pertanyaannya juga menarik.
63
Anda tampaknya menjadi programmer yang sukses, sisanya adalah tambahan. Bukan mencoba menjadi pelacur, tapi ... bagaimana hidup Anda dalam hal keuangan, hubungan, kesehatan, menyenangkan, hobi? Mungkin sekarang saatnya mengejar beberapa hal itu. Saya tidak percaya Anda perlu tahu lebih dari selusin bahasa sekaligus. Jika Anda dibayar untuk menggunakannya - pelajari saja. Jika Anda ingin menulis buku tentang buku itu - pelajarilah. Selain itu, Anda memiliki basis pemrograman yang baik. Mengapa mempelajari sesuatu (seperti J - my subj opinion :)) yang Anda tidak akan serius (baca make $) gunakan di mana saja? Jangan menjadi peretas paling keren di pemakaman.
Hamish Grubijan
6
Ya, saya seorang programmer yang sukses sesuai dengan standar saya sendiri. Saat ini saya tidak menghasilkan banyak uang, tapi hei, saya 19. Saya menginvestasikan waktu dalam semua poin dan banyak lagi, tetapi saya menemukan hobi dan kesenangan dalam pemrograman. Saya juga ingin mengatakan ada perbedaan antara memahami bahasa dan menguasainya. Menguasai Python dan Clojure sudah cukup bagi saya. Saya ingin memahami opsi lain yang ada, karena itu akan meningkatkan kode saya, membantu saya memahami komputer saya dan membantu saya mendefinisikan bahasa pemrograman saya sendiri.
Pepijn
5
Pernahkah Anda melihat Programmers.SE ? Ini termasuk dalam jenis pertanyaan yang lebih baik ditanyakan di sana.
3
Buku ini mungkin menarik: Tujuh Bahasa dalam Tujuh Minggu: Panduan Pragmatis untuk Belajar Bahasa Pemrograman , oleh Bruce A. Tate
Martin Ba

Jawaban:

287

Masalah kepraktisan sangat subjektif, jadi saya hanya akan mengatakan bahwa mempelajari paradigma bahasa yang berbeda hanya akan membuat Anda menjadi programmer yang lebih baik. Apa yang lebih praktis dari itu?

Fungsional, Haskell - Saya tahu Anda mengatakan bahwa Anda tidak mau, tetapi Anda harus benar-benar mempertimbangkan kembali. Anda telah mendapatkan beberapa paparan fungsional dengan Clojure dan bahkan Python, tetapi Anda belum mengalaminya secara maksimal tanpa Haskell. Jika Anda benar-benar menentang Haskell maka kompromi yang baik adalah ML atau OCaml.

Deklaratif, Datalog - Banyak orang akan merekomendasikan Prolog di slot ini, tapi saya pikir Datalog adalah contoh yang lebih bersih dari bahasa deklaratif.

Array, J - Saya baru saja menemukan J, tapi saya merasa itu bahasa yang menakjubkan. Ini akan memutar pikiran Anda menjadi pretzel. Anda akan berterima kasih pada J untuk itu.

Stack, Factor / Forth - Factor sangat kuat dan saya berencana untuk menggali ASAP. Forth adalah kakek buyut dari bahasa Stack, dan sebagai bonus tambahan itu mudah untuk diterapkan sendiri. Ada sesuatu yang bisa dikatakan tentang belajar melalui implementasi.

Dataflow, Oz - Saya pikir pengaruh Oz sedang naik dan hanya akan terus tumbuh di masa depan.

Berbasis prototipe, JavaScript / Io / Self - Self adalah grand-daddy dan sangat berpengaruh pada setiap bahasa berbasis prototipe. Ini tidak sama dengan OOP berbasis kelas dan tidak boleh diperlakukan seperti itu. Banyak orang datang ke bahasa prototipe dan membuat sistem kelas ad-hoc, tetapi jika tujuan Anda adalah untuk memperluas pikiran Anda, maka saya pikir itu adalah kesalahan. Gunakan bahasa untuk kapasitas penuhnya. Baca Program Pengorganisasian tanpa Kelas untuk ide.

Sistem Pakar, KLIP - Saya selalu merekomendasikan ini. Jika Anda tahu Prolog maka kemungkinan Anda akan unggul dalam kecepatan, tetapi bahasa yang sangat berbeda.

Frink - Frink adalah bahasa tujuan umum, tetapi terkenal dengan sistem konversi unitnya. Saya menemukan bahasa ini sangat menginspirasi dalam dorongan tanpa henti untuk menjadi yang terbaik dalam fungsinya. Plus ... itu sangat menyenangkan!

Tipe Fungsional + Opsional, Qi - Anda mengatakan Anda memiliki pengalaman dengan beberapa sistem tipe, tetapi apakah Anda memiliki pengalaman dengan "sistem tipe skinnable *? Tidak ada yang ... tetapi mereka seharusnya. Qi seperti Lisp dalam banyak hal, tetapi sistem ketik akan meniup pikiran Anda.

Aktor + Toleransi kesalahan, Erlang - Model proses Erlang mendapat banyak perhatian, tetapi mekanisme toleransi kesalahan dan hot-code-swapping-nya mengubah permainan. Anda tidak akan belajar banyak tentang FP yang tidak akan Anda pelajari dengan Clojure, tetapi fitur FT-nya akan membuat Anda bertanya-tanya mengapa lebih banyak bahasa sepertinya tidak bisa melakukan ini dengan benar.

Nikmati!

fogus
sumber
8
+1 - jawaban yang bagus.
duffymo
2
Terima kasih telah mengarahkan saya ke begitu banyak bahasa untuk dipelajari.
2
Saya akan menambahkan Erlang untuk pemrograman berbasis aktor dan Benteng untuk hal-hal Pemrograman paralel.
nickik
2
+1 untuk hot swap dan pengakuan toleransi kesalahan Erlang
Mic
14
Tidak ada perakitan? Adalah baik untuk memiliki pemahaman tentang bagaimana prosesor bekerja untuk mempelajari kode seperti apa yang mereka sukai.
Nick T
33

Bagaimana dengan Prolog (untuk unifikasi / backtracking dll), Smalltalk (untuk "semuanya pesan"), Keempat (reverse polish, interpreter ulir dll), Skema (lanjutan)?

Bukan bahasa, tetapi Seni Protokol Metaobject adalah hal yang membekas

Pola Dasar Paul
sumber
Perbaiki saya jika saya salah, tapi saya pikir Python sortof sudah melanjutkan. Dan dari apa yang saya baca, saya lebih suka belajar Factor dan Objective-C daripada Forth dan Smalltalk, tetapi saya mungkin akan mengambil jalan pintas di sana.
Pepijn
1
@pepijn, python tidak memiliki kelanjutan kelas satu (meskipun saya sedang mengerjakan hack bytecode untuk memalsukannya)
aaronasterling
1
Objective-C menarik dari Smalltalk, tapi saya pikir takeaway nyata dari ST adalah dinamika lingkungan itu sendiri.
John Cromartie
33

Aku yang kedua Haskell. Jangan berpikir "Saya tahu Lisp, jadi saya tahu pemrograman fungsional". Pernah mendengar tentang kelas tipe? Tipe data aljabar? Monad? Bahasa-bahasa fungsional "modern" (kurang lebih - setidaknya tidak berusia 50 tahun;)), khususnya Haskell, telah mengeksplorasi sejumlah besar konsep baru yang sangat kuat dan bermanfaat. Kelas jenis menambahkan polimorfisme ad-hoc, tetapi ketikkan inferensi (hal lain yang tidak dimiliki bahasa yang sudah Anda miliki) berfungsi seperti pesona. Tipe data aljabar sangat mengagumkan, terutama untuk memodelkan struktur data seperti pohon, tetapi berfungsi dengan baik untuk enum atau catatan sederhana juga. Dan monads ... well, katakan saja orang menggunakannya untuk membuat pengecualian, I / O, parser, daftar pemahaman dan banyak lagi - dengan cara yang murni fungsional!

Juga, seluruh topik cukup dalam untuk membuat orang sibuk selama bertahun-tahun;)

user395760
sumber
"Juga, seluruh topik cukup dalam untuk membuat orang sibuk selama bertahun-tahun;)" - Aku ingin tahu, mengapa ini menjadi hal yang baik? Bagaimanapun, hidup kita terbatas.
vegai
1
@vegai: Mengapa itu hal yang buruk? Ada cara yang lebih buruk untuk menghabiskan seumur hidup daripada belajar. Dan tidak ada yang mengatakan Anda harus belajar selama bertahun-tahun hanya untuk menggunakan bahasa dengan benar - hanya saja topiknya tidak habis setelah waktu yang singkat. (Perhatikan juga smiley - bagian itu tidak sepenuhnya serius.)
32

Saat ini saya memprogram Clojure, Python, Java dan PHP [...] Apa bahasa yang mengambil pendekatan yang berbeda dan akan berguna untuk pemilihan alat praktis atau pemahaman teoretis?

C

Ada banyak kode C tergeletak di sekitar --- itu pasti praktis. Jika Anda belajar C ++ juga, ada banyak kode lebih banyak di sekitar (dan lompatan singkat setelah Anda tahu C dan Java).

Ini juga memberi Anda (atau memaksa Anda untuk memiliki) pemahaman yang bagus tentang beberapa masalah teoritis; misalnya, setiap program yang berjalan hidup dalam array 4 GB byte, dalam arti tertentu. Pointer di C benar-benar hanya indeks ke dalam array ini --- mereka hanya jenis integer yang berbeda. Tidak berbeda di Java, Python, PHP, kecuali disembunyikan di bawah lapisan permukaan.

Juga, Anda dapat menulis kode berorientasi objek dalam C, Anda hanya perlu sedikit manual tentang vtables dan semacamnya. Koleksi Teka-teki Portabel Simon Tatham adalah contoh yang bagus dari kode C berorientasi objek yang dapat diakses; itu juga dirancang dengan cukup baik dan layak dibaca untuk pemula / programmer C menengah. Inilah yang terjadi di Haskell juga --- kelas tipe dalam beberapa hal "hanyalah vtable lain".

Hal hebat lainnya tentang C: terlibat dalam Q&A dengan programmer C yang terampil akan memberi Anda banyak jawaban yang menjelaskan C dalam hal konstruksi tingkat rendah, yang membangun basis pengetahuan Anda yang lebih dekat.

Saya mungkin kehilangan poin OP --- saya pikir saya, menilai dengan jawaban lain --- tapi saya pikir itu mungkin jawaban yang berguna untuk orang lain yang memiliki pertanyaan serupa dan membaca utas ini.

Jonas Kölker
sumber
1
Ini membutuhkan lebih banyak upvotes. C adalah bahasa nomor satu ketika Anda perlu atau ingin turun ke bare metal dan memahami cara kerja mesin - atau bahasa pemrograman tingkat tinggi - dari bawah ke atas. Selain itu, ini juga sangat universal, kompiler C ada untuk (hampir) setiap arsitektur CPU yang pernah dibuat.
dietr
27

Dari situs Peter Norvig:

"Pelajari setidaknya setengah lusin bahasa pemrograman. Sertakan satu bahasa yang mendukung abstraksi kelas (seperti Java atau C ++), yang mendukung abstraksi fungsional (seperti Lisp atau ML), yang mendukung abstraksi sintaksis (seperti Lisp), yang mendukung deklaratif spesifikasi (seperti templat Prolog atau C ++), yang mendukung coroutine (seperti Ikon atau Skema), dan yang mendukung paralelisme (seperti Sisal). "

http://norvig.com/21-days.html

Galactus
sumber
13

Saya kagum bahwa setelah 6 bulan dan ratusan suara, tidak ada yang menyebutkan SQL ...

ypercubeᵀᴹ
sumber
10

Dalam tipe sebagai teorema / sistem tipe lanjutan: Coq (saya pikir Agda juga termasuk dalam kategori ini).

Coq adalah asisten bukti yang dibenamkan ke dalam bahasa pemrograman fungsional.

Anda dapat menulis bukti matematika dan Coq membantu membangun solusi. Anda dapat menulis fungsi dan membuktikan properti tentang itu.

Itu memiliki tipe-tipe dependen, itu saja yang menghancurkan pikiranku. Contoh sederhana:

concatenate: forall (A:Set)(n m:nat), (array A m)->(array A n)->(array A (n+m))

adalah tanda tangan dari fungsi yang menggabungkan dua array ukuran n dan m elemen A dan mengembalikan array ukuran (n + m). Itu tidak akan dikompilasi jika fungsi tidak mengembalikan itu!

Didasarkan pada kalkulus konstruksi induktif, dan ia memiliki teori yang kuat di belakangnya. Saya tidak cukup pintar untuk memahami semuanya, tetapi saya pikir layak untuk dilihat, khususnya jika Anda cenderung ke arah teori tipe.

EDIT: Saya perlu menyebutkan: Anda menulis fungsi dalam Coq dan kemudian Anda dapat MEMBUKTIKAN itu benar untuk setiap input, itu luar biasa!

GClaramunt
sumber
Saya coq kedua. Saat mempelajari sebagian besar bahasa, Anda masih dapat menggunakan teknik lama Anda, tetapi coq memaksa Anda untuk menulis total program yang selalu berhasil.
Bruno Martinez
Saya mencoba untuk belajar Coq musim panas lalu tetapi menyerah karena saya merasa sulit untuk menemukan dokumentasi yang baik tentang pembelajaran dan menggunakannya . Ada saran?
Saya belajar dari kursus di universitas saya dan kemudian membaca "Coq'Art: The Calculus of Inductive Constructions" Tidak cukup untuk benar-benar menguasainya, tetapi cukup untuk menghargainya.
Bruno Martinez
6

Salah satu bahasa yang saya tertarik untuk memiliki titik yang sangat berbeda pandang (termasuk kosa kata baru untuk menentukan unsur-unsur bahasa dan sintaks diff radikal) adalah J . Haskell akan menjadi pilihan yang jelas bagi saya, meskipun merupakan bahasa fungsional, karena sistem tipenya dan fitur unik lainnya membuka pikiran Anda dan membuat Anda memikirkan kembali pengetahuan Anda sebelumnya dalam pemrograman (fungsional).

jneira
sumber
5

Sama seperti fogus telah menyarankannya kepada Anda dalam daftar, saya juga menyarankan Anda untuk melihat bahasa OzML / Mozart Banyak paradigma, terutama ditargetkan pada pemrograman concurrency / multi-agen.

Mengenai konkurensi, dan kalkulus terdistribusi, setara dengan kalkulus Lambda (yang berada di belakang pemrograman functionnal) disebut Pi Calculus.

Saya baru mulai melihat beberapa implementasi kalkulus Pi. Tapi mereka sudah memperbesar konsepsi saya tentang komputasi.

Stephane Rolland
sumber
5

Pemrograman dataflow, alias pemrograman berbasis aliran adalah langkah maju di depan. Beberapa kata kunci: pemrosesan paralell, prototyping cepat, pemrograman visual (tidak seburuk suara pertama).

Artikel Wikipedia bagus:

Dalam ilmu komputer, pemrograman berbasis aliran (FBP) adalah paradigma pemrograman yang mendefinisikan aplikasi sebagai jaringan proses "kotak hitam", yang bertukar data melintasi koneksi yang telah ditentukan melalui pengiriman pesan, di mana koneksi tersebut ditentukan secara eksternal untuk proses tersebut. Proses black box ini dapat dihubungkan kembali tanpa henti untuk membentuk aplikasi yang berbeda tanpa harus diubah secara internal. FBP dengan demikian berorientasi komponen secara alami.

Baca buku JPM: http://jpaulmorrison.com/fbp/

(Kami telah menulis implementasi sederhana dalam C ++ untuk keperluan otomatisasi rumah, dan kami sangat senang dengannya. Dokumentasi sedang dalam pembuatan.)

ern0
sumber
+1, saya percaya aliran data dan pemrograman berbasis aliran (mungkin juga pemrograman fungsional-reaktif) akan menjadi bagian penting dari masa depan multicore kami.
5

Anda telah belajar banyak bahasa. Sekarang adalah waktunya untuk fokus pada satu bahasa, dan menguasainya.

Sandman
sumber
3

mungkin Anda mungkin ingin mencoba LabView untuk pemrograman visualnya, meskipun ini untuk tujuan rekayasa.

Namun, Anda tampaknya cukup tertarik dengan semua yang ada di luar sana, maka saran itu

juga, Anda bisa mencoba appinventor android untuk membuat benda secara visual

Belun
sumber
LabView memiliki 'sintaks' yang lucu tetapi sangat menyakitkan untuk mengklik dan menyeret semua kode Anda. Saya tidak akan merekomendasikan ini kepada seorang programmer.
Ishtar
Itulah yang dikirimkan dengan Lego NXT, bukan? Sama sekali tidak bekerja untuk saya. Terima kasih atas sarannya.
Pepijn
ini dari National Instruments. LabVIEW adalah lingkungan pengembangan grafis yang membuat para ilmuwan dan insinyur lebih produktif
Belun
2

Bruce A. Tate, mengambil satu halaman dari The Pragmatic Programmer menulis buku tentang hal itu: Tujuh Bahasa dalam Tujuh Minggu: Panduan Pragmatis untuk Belajar Bahasa Pemrograman

Dalam buku itu, ia meliput Clojure, Haskell, Io, Prolog, Scala, Erlang, dan Ruby.

Aissen
sumber
2
Berhati-hatilah karena buku ini penuh dengan referensi film yang tampaknya telah menjadi bagian dari budaya pop AS. Jika Anda belum melihat film, Anda akan bertanya-tanya tentang apa yang Tate bicarakan. Jika Anda pernah menonton film, Anda mungkin masih terhanyut oleh antropomorfikasi terus-menerus dari bahasa pemrograman atau hanya karena tidak menyukai karakter yang dimaksud (saya tidak suka Mary Poppins; secara kebetulan saya juga tidak suka Ruby, jadi analoginya mungkin ke sesuatu).
Alan Plum
2

Merkuri : http://www.mercury.csse.unimelb.edu.au/

Ini adalah Prolog yang diketik, dengan jenis dan mode keunikan (yaitu menentukan predikat itu append(X,Y,Z) makna X ditambahkan ke Y adalah Z menghasilkan satu Z yang diberi X dan Y, tetapi dapat menghasilkan beberapa X / Y untuk Z yang diberikan). Juga, tidak ada cut atau predikat ekstra-logis lainnya.

Jika Anda mau, itu ke Prolog karena Haskell adalah untuk Lisp.

yatima2975
sumber
1
  1. Pemrograman tidak mencakup tugas pemrogram.
  2. Hal-hal baru selalu menarik, tetapi ada beberapa hal lama yang sangat keren.

Sistem database pertama adalah dBaseIII untuk saya, saya menghabiskan sekitar satu bulan untuk menulis contoh kecil (dBase / FoxPro / Clipper adalah db berbasis tabel dengan indeks). Kemudian, di tempat kerja pertama saya, saya bertemu MUMPS, dan saya sakit kepala. Saya masih muda dan berotak segar, tetapi butuh 2 minggu untuk memahami model database MUMPS. Ada momen, seperti di komik: setelah 2 minggu, sebuah tombol telah dihidupkan, dan bola lampu baru saja menyala di pikiran saya. MUMPS alami, level rendah, dan sangat-sangat cepat. (Ini btree tidak seimbang, tidak diformalkan tanpa jenis.) Tren hari ini menunjukkan jalan kembali ke sana: NoSQL, db nilai kunci, db multidimensi - jadi hanya ada beberapa langkah yang tersisa, dan kami mencapai gondongan.

Berikut adalah presentasi tentang keuntungan MUMPS: http://www.slideshare.net/george.james/mumps-the-internet-scale-database-presentation

Dokumen pendek tentang hierarki db: http://www.cs.pitt.edu/~chang/156/14hier.html

Pengantar MUMPS global (dalam MUMPS, variabel lokal, pendek: lokal adalah variabel memori, dan variabel global, pendek: global adalah "variabel db", pengaturan variabel global langsung menuju ke disk): http: // gradvs1.mgateway.com/download/extreme1.pdf (PDF)

ern0
sumber
1

Katakanlah Anda ingin menulis puisi cinta ...

Alih-alih menggunakan palu hanya karena sudah ada di tangan Anda, pelajari alat yang tepat untuk tugas ini: belajar berbicara bahasa Prancis.

Setelah Anda mencapai tingkat berbicara yang hampir asli, Anda siap untuk memulai puisi Anda.

roger
sumber
4
Tentu saja, itu akan menjadi puisi sampah, karena Anda perlu berbicara jauh di atas tingkat asli untuk menulis puisi. Dan pacar Anda perlu belajar bahasa Prancis untuk membacanya. Kecuali dia sudah Prancis, dalam hal ini dia mungkin akan merasa itu memalukan.
John Lawrence Aspden
Ironi lezat, John, aku suka itu (aku orang Prancis, btw)
Vinzz
1

Meskipun mempelajari bahasa baru di tingkat akademis adalah hobi yang menarik, IMHO Anda tidak bisa benar-benar belajar menggunakannya sampai Anda mencoba menerapkannya pada masalah dunia nyata. Jadi, alih-alih mencari bahasa baru untuk dipelajari, saya akan menggantikan Anda terlebih dahulu mencari hal-hal baru untuk dibangun, dan hanya kemudian saya akan mencari bahasa yang tepat untuk digunakan untuk satu proyek tertentu. Pertama-tama pilih masalahnya, lalu alatnya, bukan sebaliknya ..

ivanhoe
sumber
1

Bagi siapa pun yang belum ada sejak pertengahan 80-an, saya sarankan belajar BASIC 8-bit. Tingkatnya sangat rendah, sangat primitif dan merupakan latihan yang menarik untuk diprogram di sekitar lubangnya.

Pada baris yang sama, saya akan memilih kalkulator seri HP-41C (atau emulator, meskipun tidak ada yang mengalahkan perangkat keras nyata). Sulit untuk membungkus otak Anda di sekitarnya, tetapi sangat berharga. TI-57 akan melakukannya, tetapi akan menjadi pengalaman yang sama sekali berbeda. Jika Anda berhasil menyelesaikan persamaan derajat kedua pada TI-55, Anda akan dianggap sebagai master (tidak memiliki persyaratan dan tidak ada cabang kecuali RST, yang melompati program kembali ke langkah 0).

Dan terakhir, saya akan memilih FORTH (disebutkan sebelumnya). Ini memiliki hal Lisp-ish "bangun bahasa" yang bagus, tetapi jauh lebih sederhana. Ini akan mengajarkan Anda mengapa Rails menarik dan ketika DSL masuk akal dan Anda akan melihat sekilas apa yang dipikirkan kalkulator non-RPN saat Anda mengetik.

kasar
sumber
1

Nota bene. Ini adalah bahasa yang agak menarik karena berbasis tumpukan, dan cukup praktis setelah Anda ingin meletakkan sesuatu di atas kertas dan Anda ingin menyelesaikannya atau memecahkan masalah mengapa itu tidak dilakukan.

Erlang. Paralelisme intrinsik memberikannya perasaan yang agak tidak biasa dan Anda dapat lagi belajar hal-hal yang bermanfaat dari itu. Saya tidak begitu yakin tentang kepraktisan, tetapi dapat berguna untuk beberapa tugas prototyping cepat dan sistem yang sangat berlebihan.

Coba pemrograman GPU - CUDA atau OpenCL. Ini hanya ekstensi C / C ++, tetapi model mental dari arsitektur sekali lagi sangat berbeda dari pendekatan klasik, dan itu pasti menjadi praktis setelah Anda perlu menyelesaikan bilangan real angka.

pasif
sumber
1

Erlang, Keempat dan beberapa pekerjaan tertanam dengan bahasa assembly. Betulkah; membeli kit Arduino atau yang serupa, dan membuat bip polifonik di perakitan. Anda akan benar-benar mempelajari sesuatu.

Bart van Deenen
sumber
1

Ada juga anic :

https://code.google.com/p/anic/

Dari situsnya:

Lebih cepat dari C, Lebih aman dari Jawa, Lebih sederhana dari * sh

anic adalah kompiler implementasi referensi untuk ANI, bahasa pemrograman untuk dataflow umum-tujuan umum, berkinerja tinggi, paralel, bebas-kebuntuan, bebas hambatan.

Tampaknya tidak sedang dalam pengembangan aktif lagi, tetapi tampaknya memiliki beberapa konsep yang menarik (dan, setelah semua, adalah apa yang Anda cari).

hari ini
sumber
1

Meskipun tidak memenuhi persyaratan Anda "berbeda" - Saya bertaruh Fantom itu adalah bahasa yang harus dilihat oleh programmer profesional. Menurut pengakuan mereka sendiri, penulis fantom menyebutnya sebagai bahasa yang membosankan. Ini hanya menopang kasus penggunaan paling umum Jawa dan C #, dengan beberapa sintaks penutupan pinjaman dari ruby ​​dan bahasa-bahasa baru yang serupa.

Namun ia berhasil memiliki compiler bootstrapped sendiri, menyediakan platform yang memiliki drop in install tanpa dependensi eksternal, mendapatkan paket yang benar - dan berfungsi di Java, C # dan sekarang Web (via js).

Ini mungkin tidak memperluas wawasan Anda dalam hal cara pemrograman baru, tetapi tentu saja akan menunjukkan kepada Anda cara pemrograman yang lebih baik.

vkd
sumber
1

Satu hal yang saya lihat hilang dari jawaban lain: bahasa berdasarkan penulisan ulang istilah.

Anda dapat melihat Pure - http://code.google.com/p/pure-lang/ .

Mathematica juga berbasis penulisan ulang, meskipun tidak mudah untuk mengetahui apa yang terjadi, karena agak tertutup.

JonyEpsilon
sumber
0

APL, Forth and Assembly.

Selamat bersenang-senang. Ambil kit robot Lego Mindstorm dan RobotC CMU dan tulis beberapa kode robotika. Hal-hal terjadi ketika Anda menulis kode yang harus "menjadi kotor" dan berinteraksi dengan dunia nyata yang tidak mungkin Anda pelajari dengan cara lain. Ya, bahasa yang sama, tetapi perspektif yang sangat berbeda.

martin
sumber