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 ?
sumber
Jawaban:
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.
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)sumber
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.
sumber
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.
sumber
!
).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.
sumber
Saya harus mengatakan Forth . Notasi bahwa semua operasi adalah manipulasi tumpukan. Dalam bentuknya yang murni tidak ada variabel lokal yang digunakan.
sumber
Ruby .
Ini membuat saya ingin bunuh diri:
(Saya bisa saja salah sintaks, tetapi Anda mengerti maksudnya).
sumber
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.)Brainfuck
Siapa pun yang dapat dengan jujur menulis ejekan bahasa ini bahkan tidak perlu utas seperti ini.
Hello World (petunjuk, kiri; penjelasan, kanan):
sumber
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.
sumber
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):
sumber
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.
sumber
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.
sumber
[foo bar]
ini hanya gula sintaksisobjc_sendMsg(foo, "bar");
yang pada gilirannya mencari fungsi pointer (ini adalah "bar" khusus, bukan yang umum). Apakah Anda menyadari itu sepenuhnya diketik bebek?[receiver doStuff:arg]
terlihat cukup seperti java dinamisSaya 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.
sumber
Itu pasti Skema , tentunya. Mencoba menjelaskan
call-with-current-continuation
selalu 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!
sumber
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.
sumber
Assembly telah menjadi "penekuk pikiran" yang paling bagi saya, tetapi saya baru memulainya.
sumber
Gangguan . Mempelajarinya adalah serangkaian epifani kecil, yang masing-masing akan benar-benar mengubah cara Anda berpikir tentang memecahkan masalah pemrograman.
sumber
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:
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!)
sumber
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.
sumber
Murni
Pure adalah bahasa fungsional berdasarkan penulisan ulang istilah. Saya suka, itu jarang dan ekspresif, jika sedikit mengecilkan.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
TeX dianggap sebagai bahasa, karena Turing lengkap , dan saya menganggapnya cukup membekas. Bahasa untuk matematika pengaturan huruf, (dan buku tentang pemrograman) ...
sumber
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 .
sumber