Apakah bahasa apa pun menjadi sangat populer untuk sesuatu selain tujuan yang dimaksudkan?

70

Ambil skenario ini:

  • Seorang programmer menciptakan bahasa untuk memecahkan beberapa masalah.

  • Dia kemudian merilis bahasa ini untuk membantu orang lain memecahkan masalah seperti itu.

  • Programmer lain menemukan itu sebenarnya jauh lebih baik untuk beberapa kategori masalah yang berbeda.

  • Berdasarkan aplikasi baru ini, bahasa kemudian menjadi populer untuk aplikasi itu terutama.

Apakah ada kejadian yang benar-benar terjadi?

Dengan kata lain, apakah tujuan dari suatu bahasa memiliki kaitan dengan bagaimana itu sebenarnya digunakan, atau apakah itu menjadi populer? Apakah penting bahwa suatu bahasa memiliki tujuan yang diiklankan?

Jon Purdy
sumber
4
Contoh HTML Anda sepertinya tidak sesuai dengan yang Anda cari, apakah dokumen teknis sangat berbeda dari dokumen lainnya? Tujuan inti HTML masih sama seperti di tahun 1989, untuk menyediakan sarana yang mudah bagi dokumen untuk saling referensi. IMHO HTML adalah kebalikan dari apa yang sebenarnya Anda cari.
yannis
5
Mempertimbangkan daftar panjang jawaban; mungkin pertanyaan sebaliknya lebih menarik: bahasa apa (populer) yang hanya digunakan untuk tujuan yang dimaksudkan?
Jaap
@Yannis: Poin bagus. Itu bukan contoh terbaik, dan benar-benar bisa diperdebatkan dengan cara baik. Diedit untuk menghapus.
Jon Purdy
@ Jaap: Saya pikir sama!
leonbloy
2
Saya bisa saja salah dalam hal ini, tetapi saya cukup yakin sebagian besar bahasa tidak digunakan untuk apa yang dimaksudkan pembuatnya. Saya pikir alasan utama untuk ini adalah bahwa orang luar tidak tahu apa yang seharusnya digunakan untuk yang membantu mereka menjadi lebih berpikiran terbuka tentang potensi bahasa.
Kenneth

Jawaban:

118

Gangguan . McCarthy awalnya menetapkan Lisp dalam sebuah makalah untuk menunjukkan bahwa beberapa notasi sederhana cukup untuk membangun bahasa yang lengkap. Dia terkejut menemukan bahwa Lisp dapat diimplementasikan dalam kode mesin (Steve Russel melakukan implementasi interpreter Lisp pertama). Lisp banyak digunakan untuk pemrograman AI.

ayah
sumber
70
+1, Lisp tidak dimaksudkan sebagai bahasa pemrograman! Saya tidak berpikir Anda bisa mengatasi itu.
Kilian Foth
7
OTOH, orang bisa berpendapat bahwa LISP dirancang untuk digunakan di perbatasan antara pemrograman dan matematika, dan itu tetap ada.
MSalters
1
Saya percaya McCarthy menggunakan Lisp sebagai contoh di kelasnya dan bermaksud menulis kompiler untuk itu, tetapi disebutkan di kelas suatu hari bahwa pengkodean tangan fungsi eval akan mengimplementasikan seorang juru bahasa, tetapi tentu saja 'tidak ada yang benar-benar ingin melakukan itu'
Steven A. Lowe
Teman-teman Lisper saya memberi tahu saya bahwa itu tidak lagi digunakan dalam AI, tetapi masih memiliki aplikasi di mana-mana .
greyfade
111

Java awalnya ditujukan untuk pemrograman sistem tertanam. Dari Wikipedia "Java pada awalnya dirancang untuk televisi interaktif" . Tetapi menjadi sangat populer untuk Aplikasi dan pemrograman Web.

ayah
sumber
4
Hah. Tidak percaya saya tidak memikirkan yang ini. Ini bisa dibilang contoh kanonik ... meskipun bukan berarti saya belum akan terkejut.
Jon Purdy
Meskipun, apakah Java pernah benar-benar dirilis untuk pekerjaan embedded (sebelum embedded java, yang muncul setelah promosi untuk web)?
Marcin
Elemen desain penting dalam desain Java adalah kemampuan untuk menjalankan kode yang tidak dipercaya.
13
ceritanya bahkan lebih buruk: A) itu dimaksudkan untuk sistem embedded. B) tetapi tidak pernah melihat cahaya sampai bisa tertanam di halaman web. C) tidak mendapat rasa hormat sampai digunakan untuk aplikasi web 'enterprisey' dan D) akhirnya tertanam di banyak OS ponsel; tetapi bukan sebagai pengontrol perangkat keras, ini adalah platform GUI.
Javier
Sudah ada proyek untuk membawanya ke set-top box selama lebih dari 10 tahun sekarang - lihat OCAP atau tru-2way
Bill K
32

Lua dirancang terutama sebagai bahasa konfigurasi, dan akhirnya menemukan ceruk sebagai bahasa scripting yang paling populer untuk game (karena itu kecil, cepat, kuat, portabel, mudah diperluas dan disematkan, dengan sintaks yang ramah pengguna). Gim yang paling populer untuk menggunakannya, World of Warcraft, bahkan tidak benar-benar menggunakannya untuk konfigurasi, sebagai gantinya menggunakan XML.

Lumpur
sumber
... dan sekarang dengan LuaJIT semakin banyak digunakan dalam aplikasi pemrosesan waktu nyata
Javier
2
Tidak benar-benar en.wikipedia.org/wiki/Lua_%28programming_language%29
Lukasz Madon
@ Lukas: "Tidak juga" apa ? Perhatikan bahwa pendahulunya, SOL dan DEL, bahkan tidak memiliki aliran kontrol, mereka murni bahasa konfigurasi. Lua adalah ekstensi dari bahasa konfigurasi untuk memasukkan dukungan pemrograman.
Lumpur
"Lua dirancang terutama sebagai bahasa konfigurasi" saya akan mengatakan sebagai bahasa pemrograman.
Lukasz Madon
7
Mungkin saya seharusnya mengatakan "tujuan yang dimaksudkan" daripada "dirancang terutama sebagai". Tujuan yang dimaksudkan adalah menggunakan Lua di mana SOL dan DEL digunakan. Ini adalah bahasa konfigurasi tempat pengguna mulai meminta fitur pemrograman. Lua dibuat untuk memenuhi kebutuhan itu. Seperti yang penulis sendiri nyatakan , "Adopsi Lua secara luas dalam game datang sebagai kejutan bagi kami. Kami tidak memiliki pengembangan game sebagai target untuk Lua." Itu persis seperti apa yang dicari OP, bukan?
Lumpur
32

Niat asli Larry Wall untuk perl adalah untuk " bahasa scripting Unix tujuan umum untuk membuat pemrosesan laporan lebih mudah " dan halaman manual menggambarkan bahasa sebagai:

Perl adalah bahasa yang ditafsirkan dioptimalkan untuk memindai file teks sewenang-wenang, mengekstraksi informasi dari file teks tersebut, dan mencetak laporan berdasarkan informasi itu.

Dan tentu saja halaman manual juga memberi tahu kita bahwa Perl singkatan dari Praktis Ekstraksi dan Bahasa Laporan (nama sebenarnya adalah salah mengeja nama asli Pearl , berubah ketika Wall menemukan bahasa PEARL yang sudah ada ).

Perl berjalan jauh sejak saat itu, karena itu adalah bahasa dari mana para dewa membangun alam semesta .

masukkan deskripsi gambar di sini

Yannis Rizos
sumber
23
Orang harus memperbaikinya: Lister Sampah Eklektik yang Patologis
Richard
3
Ada lebih dari satu cara unabbrev! Sangat Perly
Setiap akronim untuk Perl sebenarnya adalah backronym.
CanSpice
1
@DarkTemplar Cara saya menafsirkannya adalah perl yang telah merayap itu jalan hampir di mana-mana. Dari permulaannya yang sederhana, perl tumbuh menjadi bahasa web yang sangat populer, bahasa skrip yang sangat populer, bahasa serba guna yang agak populer, sintaks ekspresi regulernya menjadi sesuatu yang definitif, melahirkan bahasa lain (php) dll. Ditambah komik juga referensi lisp, yang merupakan jawaban yang diterima untuk pertanyaan itu, jadi saya pikir itu adalah penggambaran yang menyenangkan (walaupun tidak akurat) dari hubungan kedua bahasa (satu adalah bahasa yang melamun, satu lagi yang benar-benar digunakan oleh satu orang).
yannis
1
@DarkTemplar Yeap. Ada dalam sepuluh besar dalam indeks TIOBE . Tentu saja Anda tidak dapat menganggap indeks TIOBE dengan sangat serius, itu relatif dan subyektif. Namun masih indikasi yang baik dari popularitas bahasa.
yannis
28

Saya akan menebak bahwa JavaScript cocok dengan pertanyaan ini juga karena saya tidak berpikir bahwa Brendan Eich, kembali pada zaman Netscape, pernah membayangkan bahwa versi mendatang dari LiveScript- nya akan digunakan untuk membuat web yang disebut "aplikasi" hari ini.

JavaScript telah beralih dari validasi formulir sederhana dan rollover gambar ke alat canggih yang mampu menyaingi aplikasi offline, baik dari segi fungsionalitas dan kecantikan.

Sayangnya, saya pikir banyak orang masih menganggapnya sebagai mainan.

Andreas Grech
sumber
31
Hal yang menarik adalah bahwa ia bergerak menuju menjadi bahasa rakitan web. Dengan kata lain, bahasa apa yang dikompilasi dan dieksekusi. Saya tidak percaya Brendan Eich mengharapkan itu .
3
punya sesuatu untuk ditambahkan: Ini bukan hanya bahasa skrip sisi klien. Banyak proyek seperti node.js atau badak menggunakan javascript sebagai bahasa sisi server
gion_13
Hanya ingin tahu, tapi apa itu "bahasa scripting sisi klien" vs. "bahasa sisi server" .......?
Dark Templar
@DarkTemplar. Bahasa scripting sisi server dijalankan di server dan hasilnya dikirim ke browser. Bahasa skrip sisi klien dikirim ke browser apa adanya, dan dijalankan di sana. (Tentu saja, bahasa sisi server dapat digunakan untuk menampilkan bahasa sisi klien, jika Anda mau.) Satu-satunya bahasa yang berjalan di sebagian besar browser adalah javascript.
TRiG
19

Erlang. Sudah lama ditemukan di laboratorium Ericsson untuk mengembangkan aplikasi telepon, mungkin untuk jalur switching dan perangkat akses mereka. Sekarang telah berkembang menjadi bahasa dinamis tujuan umum yang menjanjikan dengan konsep konkurensi yang menarik.

Akan menarik jika di masa depan akan ada lebih banyak bahasa dari dunia telekomunikasi yang melintasi batas mereka ke dunia TI dan berkembang dari sana, terutama bahasa yang awalnya dirancang untuk pemodelan dan verifikasi protokol.

UUlum
sumber
Dan bukankah itu salah satu inspirasi untuk node.js?
dodgy_coder
Jangan pikir ini memenuhi syarat. Alasan Erlang diciptakan untuk telepon adalah mereka membutuhkan bahasa konkurensi dinamis umum. Masih begitu.
Alan Baljeu
15

Pascal. Diciptakan untuk mengajar pemrograman.

Nerevar
sumber
3
Heh, itu menjelaskan banyak hal ...
colok
2
@poke: Of kutukan , aku tahu.
Nerevar
Hehe, aku melihat apa yang kamu lakukan di sana.
Trufa
Hei, bisakah seseorang tolong jelaskan jawaban ini? Lol. Saya seorang noob!
Dark Templar
14

PHP awalnya berarti Personal Home Page , tetapi hari ini digunakan untuk beberapa aplikasi web yang sedikit lebih besar juga.

Jaap
sumber
18
tentu saja, pengguna PHP terbesar, Facebook, dalam banyak hal masih di pasar halaman rumah pribadi.
Jaap
3
"PHP / FI dibuat oleh Rasmus Lerdorf pada tahun 1995, awalnya sebagai satu set skrip Perl sederhana untuk melacak akses ke resume online-nya." Sudah lama, sayang.
nickf
Sementara PHP masih sangat banyak bahasa Web, itu mengalami sedikit pembalikan peran: PHP dimaksudkan untuk tertanam sebagai potongan kecil di dalam HTML, sedangkan banyak proyek sekarang menghasilkan string HTML dalam PHP. Mereka masih membutuhkan <?phptag di awal file!
Warbo
14

Saya cukup yakin bahwa VBScript tidak dimaksudkan untuk menulis malware, meskipun itu adalah penggunaan yang sangat umum untuk itu.

user16764
sumber
1
Menurutmu itu agak kasar. Java dan C memiliki pangsa malware yang adil.
Jeremy
@JChild: Beberapa tahun telah berlalu sejak komentar Anda. Meski begitu, bagaimanapun, mempertahankan VB adalah hal yang sangat aneh untuk dilakukan.
Magus
@Magus Ini bahkan bukan VB. Ini VBScript. Anda tahu, file dengan ekstensi .vbs. Yang Anda anggap otomatis adalah virus ketika Anda melihatnya.
user16764
13

Awalnya dirancang sebagai metode pembuatan kode yang lebih umum, Template Meta Programming di C ++ ternyata lengkap, dan hingga hari ini digunakan untuk sangat meningkatkan bahasa C ++ melalui perpustakaan seperti boost.

Jason McCarrell
sumber
8
... dan untuk membuat programmer C ++ meneteskan air mata dengan waktu yang sangat lama ;-)
quant_dev
8
dan pesan kesalahan yang mengerikan.
DeadMG
11

BASIC adalah kasus terkenal lainnya. Itu namanya ( Kode Instruksi Simbolik Serba Guna Pemula ) mengisyaratkan asal-usulnya sebagai bahasa pembelajar, tetapi sejak itu berkembang sedikit.

MSalters
sumber
24
heh - microsoft menggantikan "pemula" dengan "bisnis" dan menyedot dalam jutaan
Steven A. Lowe
11

VHDL dan Verilog (alias VerilogHDL) pada awalnya dimaksudkan untuk menggambarkan sirkuit dan komponen digital. Mereka digunakan sebagai bentuk dokumentasi dan untuk mensimulasikan perilaku komponen. Kemudian, Synopsys dan yang lainnya mengembangkan teknologi yang dapat menerjemahkan (sebagian dari) deskripsi ini ke dalam daftar gerbang yang bersih, yang pada gilirannya dapat digunakan untuk menghasilkan perangkat keras yang nyata.

VHDL dan Verilog disebut Perangkat Keras Deskripsi Bahasa (HDL) karena alasan historis. Hari ini mereka sebenarnya digunakan sebagai bahasa desain perangkat keras (akronim yang sama).

Philippe
sumber
Bagus, pengembangan model kehidupan nyata didorong
Jaap
@Ark Ya, VHDL adalah sirkuit terintegrasi berkecepatan sangat tinggi, bahasa deskripsi perangkat keras. Verilog adalah bahasa yang sangat berbeda. Verilog kadang-kadang juga disebut Verilog HDL. en.wikipedia.org/wiki/Verilog
Philippe
2
QHDL sangat mirip dengan VHDL dan digunakan untuk menggambarkan sirkuit untuk komputer kuantum. Saya tidak bisa membayangkan bahasa yang berangkat begitu jauh dari asalnya.
Mark Booth
@Ark Wow, itu menarik "QHDL"! Google menunjukkan banyak noice. Apakah Anda punya referensi?
Philippe
1
Saya mengetahuinya di sesi Paul Blacks "Quantum Computing for Programmer" yang sangat baik di konferensi ACCU 2011. Slide-nya ada di accu.org/content/conf2011/…
Mark Booth
10

ML dimulai sebagai bahasa untuk mengembangkan dan membuat skrip prover teorema. Itu adalah "meta bahasa" pepatah teorema itu.

Ryan Culpepper
sumber
Baik. Perlu dicatat bahwa alasan ini adalah jawaban yang valid adalah bahwa aplikasi utamanya sekarang adalah kompiler dan alat bahasa lainnya (setidaknya sejauh yang saya tahu).
Jon Purdy
6
+1, tetapi mengatakan bahwa ML menjadi "sangat populer" adalah sedikit peregangan
nikie
Mungkin, tetapi di samping pengguna langsungnya hari ini, itu memengaruhi hampir setiap bahasa yang diketik setelahnya.
Ryan Culpepper
7

C
Awalnya ini dikembangkan untuk digunakan dengan sistem operasi Unix. Tetapi Bahasa menjadi begitu populer bahkan Dennis Ritchie terkejut.
Dalam bukunya yang terkenal bahasa pemrograman C . Ritchie menyatakan "ia telah menyebar jauh melampaui asalnya sebagai bahasa sistem operasi UNIX." dan betapa terkejutnya dia karena menjadi bahasa populer untuk pengembangan aplikasi.

Ranger
sumber
11
Yah, pada awalnya dirancang untuk mengembangkan sistem dan aplikasi tingkat rendah secara lintas platform. Itu tetap sesuai dengan tujuan aslinya meskipun populer, sehingga tidak cocok.
Jon Purdy
3
@Jon Yah itu cocok, karena ini lebih penting dari tujuannya dengan menjadi cara termudah untuk menembak diri sendiri di kaki.
yannis
1
@Yannis: Haha, benar. Tetapi saya bertanya tentang bahasa yang tujuan utamanya berubah sepenuhnya, bukan bahasa yang tumbuh untuk mencakup lebih banyak tujuan.
Jon Purdy
Saya ingin menambahkan bahwa C menjadi populer sebagai salah satu bahasa utama untuk kontes kode yang dikaburkan.
Peter G.
Bukankah itu dirancang untuk mengimplementasikan sistem operasi?
Nikko
3

C ++ awalnya dirancang sebagai "C dengan kelas" untuk memfasilitasi pemrograman berorientasi objek di C ++.

Templat kemudian disediakan dalam versi yang lebih baru untuk memungkinkan implementasi kelas kontainer yang diketik dengan kuat. Baru kemudian diketahui bahwa templat ini sebenarnya merupakan bahasa pemrograman waktu kompilasi Turing-complete.

Sebagai konsekuensinya, banyak aplikasi sekarang menggunakan C ++ bukan sebagai bahasa pemrograman berorientasi objek tetapi sebagai bahasa pemrograman yang digerakkan oleh algoritma yang sangat bergantung pada kompilasi waktu polimorfisme dan metaprogramming.

Konrad Rudolph
sumber
7
Tetapi C ++ dirancang untuk tujuan umum, dan digunakan sebagai bahasa tujuan umum.
BenjaminB
@ Ubiquité Saya tidak berpikir C ++ benar-benar dirancang sebagai bahasa tujuan umum. Atau lebih tepatnya, ia dirancang untuk digunakan untuk tujuan yang berbeda (tetapi dalam pemrograman sistem tertentu). Tapi itu tidak dirancang untuk bekerja dengan banyak paradigma .
Konrad Rudolph
Sebenarnya, sifat multi-paradigma melekat dalam desainnya, hanya berdasarkan perbautan fitur OO ke C sambil mempertahankan kemampuan untuk menggunakan fitur-fitur yang lebih prosedural yang sesuai.
Jon Purdy
@Jon OK, aku akan mengakui itu. Namun, pemrograman generik dan metaprogramming template tidak termasuk di antara fitur-fitur ini. Dan saat ini C ++ adalah satu-satunya bahasa (dan bisa dibilang utama) yang mendukung fitur-fitur ini.
Konrad Rudolph
Sangat benar. Neraka, dukungan untuk pemrograman generik dan constadalah yang dua alasan paling penting yang saya gunakan C ++.
Jon Purdy
2

ADA - awalnya dirancang di bawah kontrak DoD untuk avionik. Meskipun masih digunakan dalam aplikasi itu, itu juga populer misalnya untuk perangkat menengah bisnis real-time.

vartec
sumber
5
Itu dibangun sebagai bahasa tujuan umum. DoD menginginkan bahasa yang dapat digunakan untuk semuanya, untuk mengurangi jumlah bahasa yang berbeda yang digunakan.
BenjaminB
Itu sangat lucu. Ada adalah bahasa yang dibuat secara eksplisit dengan tujuan mengurangi jumlah bahasa yang berbeda di luar sana. Dengan metrik itu ("dirancang dengan satu tujuan, digunakan untuk yang lain") Ada harus dipilih ke bagian atas daftar dengan Lisp, bahasa anti-bahasa lain.
Jared Updike
2

"Apakah tujuan dari suatu bahasa memiliki kaitan dengan bagaimana itu sebenarnya digunakan, atau apakah itu menjadi populer?"

Saya tidak berpikir tujuan dari suatu bahasa memiliki banyak kaitan dengan penggunaan dan popularitas aktualnya: Ada beberapa bahasa hebat yang dirancang sejak awal untuk menjadi inovatif, fleksibel dan fleksibel, tetapi tidak pernah menjadi yang banyak digunakan atau populer kecuali di pasar vertikal yang sangat terspesialisasi - misalnya Eiffel. OTOH, Basic, Pascal, C dll dll mendominasi lansekap selama bertahun-tahun meskipun awalnya dirancang untuk tujuan terbatas dan spesifik.

Pertimbangan pemasaran / keuangan dan dukungan IMO selalu memainkan peran utama dalam penyebaran dan perluasan bahasa tertentu. Sebagai contoh: Borland hadir dengan TurboPascal dan paket, memasarkan dan mendukungnya. MS datang dengan C # dan paket, memasarkan dan mendukungnya. Akibatnya, bahasa-bahasa ini menjadi populer, industri alat pihak ketiga bermunculan dan semakin banyak pengembang dan perusahaan ikut serta.

Tetapi selama beberapa tahun terakhir, bahasa dan perangkat openSource mengubah dinamika dan bahasa sekarang menjadi lebih populer berdasarkan 'jasa' daripada pemasaran - misalnya Ruby, Python dan Perl. Tapi itu bukan karena 'niat' para penemu sebanyak bahasa yang dibangun dalam potensi untuk perluasan dan penggunaan bijaksana.

Mikey
sumber
2

Saya tidak berpikir ada bahasa populer yang belum menggunakan bahasa aslinya. Bahkan C pada awalnya ditulis untuk membuat OS portabel (unix).

Setiap upaya untuk menulis bahasa pemrograman yang benar-benar generik tanpa target spesifik dalam pikiran mungkin akan gagal total karena kurangnya pengendalian dan fokus.

Bill K
sumber
postscript - ada di mana-mana (di hampir setiap komputer dan printer), tetapi hanya digunakan untuk mencetak grafik. Meskipun, orang dapat berargumen bahwa itu digunakan kembali ketika digunakan dalam pdf.
13ren
1

Saya pernah mendengar Ruby dirancang sebagai bahasa untuk menulis puisi, ternyata Anda juga bisa menulis kode yang cantik!

Saya akan langsung dengan Anda. Aku ingin kamu menangis. Menangis. Merengek dengan manis. Buku ini adalah panduan pedih untuk Ruby. Itu berarti kode begitu indah sehingga air mata tumpah. Itu berarti kisah-kisah gagah dan kebenaran-kebenaran yang menyedihkan yang membuat Anda bangun keesokan paginya dalam pelukan buku ini.

Tinco
sumber
2
Kedengarannya ... menarik. Sumber apa saja?
Anto
Tautan Ruby membawa Anda ke sebuah buku yang ditulis untuk mengajarkan Ruby dengan cara artistik. Jawaban saya adalah lelucon yang merujuk pada buku yang menyatakan menulis Ruby itu seperti puisi. Pada kenyataannya orang mungkin mengatakan bahwa Ruby dirancang untuk menjadi bahasa pemrograman tujuan umum tetapi itu mengilhami (beberapa) orang untuk melihat kode Ruby sebagai puisi.
Tinco