Ruby menjadi populer , sebagian besar dari pengaruh Ruby on Rails, tetapi rasanya saat ini sedang berjuang melewati masa remajanya. Ada banyak kesamaan antara Ruby dan Smalltalk - maglev adalah buktinya. Meskipun memiliki sintaks yang lebih tidak biasa, Smalltalk memiliki semua (jika tidak lebih) keindahan berorientasi objek dari Ruby.
Dari apa yang saya baca, Smalltalk sepertinya memiliki Ruby yang mengalahkan:
- Kedewasaan (dikembangkan pada tahun 1970-an)
- Stabilitas
- Dukungan komersial
- Kontrol sumber terdistribusi (memahami struktur kode, bukan hanya perbedaan teks)
- Beberapa implementasi VM
- Dukungan lintas platform
- The framework pantai web sebagai alternatif kuat untuk Rails
Sepertinya Ruby baru saja menciptakan kembali kemudinya. Jadi, mengapa pengembang Ruby tidak menggunakan SmallTalk? Apa yang tidak dimiliki Ruby oleh Smalltalk?
Sebagai catatan: Saya pria Ruby dengan sedikit atau tanpa pengalaman di Smalltalk, tapi saya mulai bertanya-tanya mengapa.
Sunting: Saya pikir masalah kemudahan skrip telah diatasi oleh GNU Smalltalk . Seperti yang saya pahami, ini memungkinkan Anda untuk menulis smalltalk dalam file teks lama biasa, dan Anda tidak perlu lagi menggunakan Smalltalk IDE. Anda kemudian dapat menjalankan skrip Anda dengan:
gst smalltalk_file
sumber
Jawaban:
Saya lebih dari seorang Pythonista daripada pengguna Ruby, namun hal yang sama berlaku untuk Ruby karena alasan yang hampir sama.
Arsitektur Smalltalk agak sempit sedangkan Python dan Ruby dibangun dari awal untuk memfasilitasi integrasi. Smalltalk tidak pernah benar-benar mendapatkan dukungan aplikasi hybrid seperti yang dimiliki Python dan Ruby, jadi konsep 'smalltalk sebagai bahasa skrip tertanam' tidak pernah tertangkap.
Selain itu, Java bukanlah hal termudah untuk berinteraksi dengan basis kode lain (JNI cukup kikuk), tetapi itu tidak menghentikannya untuk mendapatkan mindshare. IMO argumen interfacing signifikan - kemudahan embedding tidak merugikan Python - tetapi argumen ini hanya memiliki bobot sedang karena tidak semua aplikasi memerlukan kemampuan ini. Juga, versi Smalltalk yang lebih baru secara substansial mengatasi ketidaksopanan.
Pustaka kelas dari sebagian besar implementasi smalltalk utama (VisualWorks, VisualAge, dll.) Berukuran besar dan memiliki reputasi untuk kurva pembelajaran yang cukup curam. Sebagian besar fungsi utama di Smalltalk disembunyikan di suatu tempat di perpustakaan kelas, bahkan hal-hal dasar seperti aliran dan koleksi. Paradigma bahasa juga merupakan suatu kejutan budaya bagi seseorang yang tidak terbiasa dengannya, dan pandangan sedikit demi sedikit dari program yang disajikan oleh browser sangat berbeda dengan apa yang biasa dilakukan kebanyakan orang.
Efek keseluruhannya adalah Smalltalk mendapat reputasi (agak pantas) karena sulit dipelajari; dibutuhkan sedikit waktu dan upaya untuk menjadi programmer Smalltalk yang sangat mahir. Ruby dan Python jauh lebih mudah dipelajari dan mempercepat pemrogram baru.
Secara historis, implementasi Smalltalk arus utama cukup mahal dan membutuhkan perangkat keras eksotis untuk dijalankan, seperti yang dapat dilihat pada postingan net.lang.st80 ini dari tahun 1983 . Windows 3.1, NT dan '95 dan OS / 2 adalah sistem operasi pasar massal pertama pada perangkat keras utama yang mampu mendukung implementasi Smalltalk dengan integrasi sistem asli yang layak. Sebelumnya, perangkat keras Mac atau workstation adalah platform termurah yang mampu menjalankan Smalltalk secara efektif. Beberapa implementasi (terutama Digitalk) mendukung sistem operasi PC dengan cukup baik dan berhasil mendapatkan beberapa daya tarik.
Namun, OS / 2 tidak pernah sesukses itu dan Windows tidak diterima secara umum hingga pertengahan 1990-an. Sayangnya ini bertepatan dengan munculnya Web sebagai platform dan dorongan pemasaran yang besar di belakang Java. Java merebut sebagian besar mindshare di bagian akhir tahun 1990-an, membuat Smalltalk sedikit juga berjalan.
Ruby dan Python bekerja di toolchain yang lebih konvensional dan tidak terkait erat dengan lingkungan pengembangan tertentu. Sementara Smalltalk IDE yang saya gunakan cukup bagus, saya menggunakan PythonWin untuk pengembangan Python sebagian besar karena ia memiliki editor yang bagus dengan penyorotan sintaks dan tidak terpengaruh.
Namun, Smalltalk dirancang untuk digunakan dengan IDE (pada kenyataannya, Smalltalk adalah IDE grafis asli) dan masih memiliki beberapa fitur bagus yang tidak direplikasi oleh sistem lain. Menguji kode dengan highlight dan 'Show it' masih merupakan fitur yang sangat bagus yang belum pernah saya lihat di Python IDE, meskipun saya tidak dapat berbicara untuk Ruby.
Smalltalk agak terlambat datang ke pesta aplikasi web. Upaya awal seperti VisualWave tidak pernah terlalu berhasil dan tidak sampai Seaside keluar bahwa kerangka web yang layak diterima di kalangan Smalltalk. Sementara itu, Java EE telah memiliki siklus penerimaan yang lengkap dimulai dengan para penggemar yang mengoceh mempromosikannya dan akhirnya bosan dan pindah ke Ruby; -}
Ironisnya, Seaside mulai mendapatkan sedikit berbagi pikiran di antara para cognoscenti sehingga kami mungkin menemukan bahwa Smalltalk mengendarai itu siklus kembali ke popularitas.
Karena itu, Smalltalk adalah sistem yang sangat bagus setelah Anda mengetahui cara mengendarainya.
sumber
Ketika saya meninggalkan rumah di pagi hari untuk pergi bekerja, saya sering bergumul dengan keputusan untuk berbelok ke kiri atau ke kanan dari jalan raya saya (saya tinggal di tengah jalan). Cara manapun yang akan membawaku ke tujuanku. Satu cara membawa saya ke jalan raya yang, bergantung pada lalu lintas, mungkin akan membawa saya ke kantor paling cepat. Saya dapat mengemudi dengan sangat cepat setidaknya untuk sebagian perjalanan dan saya memiliki kesempatan bagus untuk melihat satu atau dua gadis cantik dalam perjalanan ke tempat kerja :-)
Cara lain memungkinkan saya untuk melakukan perjalanan menyusuri jalan belakang yang sangat mempesona dan berangin dengan tutupan pohon yang lengkap. Jalan itu cukup menyenangkan dan dari dua pendekatan itu pasti lebih menyenangkan, meskipun itu berarti saya akan sampai di kantor lebih lambat daripada jika saya mengambil jalan raya. Setiap cara memiliki kelebihannya masing-masing. Pada hari-hari ketika saya sangat terburu-buru, saya biasanya akan mengambil jalan raya meskipun saya mungkin mengalami lalu lintas dan saya juga meningkatkan peluang saya untuk mengalami kecelakaan (jika saya tidak berhati-hati dalam tergesa-gesa). Di hari lain saya mungkin memilih jalan berkayu dan mengemudi bersama, menikmati pemandangan dan menyadari bahwa saya terlambat. Saya mungkin mencoba untuk mempercepat, meningkatkan peluang saya untuk mendapatkan tiket atau menyebabkan kecelakaan sendiri.
Tidak ada cara yang lebih baik dari yang lain. Mereka masing-masing memiliki manfaat dan risikonya, dan masing-masing akan membawa saya ke tujuan saya.
sumber
Saya pikir pertanyaan Anda agak meleset. Anda tidak boleh memilih, Anda harus mempelajari keduanya!
Jika Anda benar-benar berada dalam posisi di mana Anda dapat memilih kerangka kerja berikutnya (vm, infrastruktur) maka Anda perlu memutuskan apa yang akan digunakan dan dapat mengajukan pertanyaan khusus dengan pro dan kontra dari perspektif apa yang ingin dilakukan aplikasi Anda.
Saya telah menggunakan smalltalk (love it) dan ruby (love it).
Di rumah atau untuk proyek open source saya dapat menggunakan semua bahasa yang saya suka, tetapi ketika melakukan pekerjaan saya harus mengadopsi.
Saya mulai menggunakan ruby (di tempat kerja) karena kami membutuhkan beberapa bahasa scripting yang berperilaku kurang lebih sama di solaris, linux dan windows (98,2000, xp). Ruby pada waktu itu tidak dikenal oleh rata-rata-joe dan tidak ada rel apapun. Tetapi mudah untuk menjual kepada semua orang yang terlibat.
(Mengapa tidak python? Sebenarnya? Saya pernah menghabiskan seminggu untuk berburu bug yang terjadi ketika terminal mengubah ruang saya menjadi tab dan maksudnya menjadi kacau).
Jadi orang-orang mulai membuat kode lebih banyak dengan ruby karena itu sangat santai, menikmati dan bukan awan di langit.
Paul Graham menyimpulkannya
dan
Dan saat berada di tanah Lisp coba ganti LISP dengan smalltalk
dan
sumber
Saya akan mengatakan sebaliknya: sintaks Smalltalk adalah salah satu sintaks bahasa pemrograman yang paling sederhana dan kuat.
sumber
Giles Bowkett
sumber
Tebak siapa yang mengatakan ini? (kutipan dekat, mungkin tidak tepat): "Saya selalu berpikir Smalltalk akan mengalahkan Java. Saya hanya tidak tahu apakah akan disebut 'Ruby' ketika melakukannya."
Drum roll ....
...
Jawabannya adalah ... Kent Beck
sumber
Stephane Ducasse memiliki beberapa buku Smalltalk hebat yang tersedia di sini:
http://stephane.ducasse.free.fr/FreeBooks.html
jadi meskipun komunitas Smalltalk tidak seproduktif komunitas Ruby dan Rails, masih ada bantuan besar di luar sana.
sumber
apa yang Ruby miliki dan Smalltalk tidak?
Saya pikir maksud Anda diambil dengan baik. Seperti yang pernah dikatakan seorang teman, Ruby mungkin adalah "anggur lama dalam botol baru" dibandingkan Smalltalk. Tapi terkadang botol baru itu penting. Anggur harus berada di tempat yang tepat pada waktu yang tepat.
sumber
Pukul aku. Saya menghabiskan satu tahun memeriksa Ruby dan melakukan beberapa proyek kecil untuk melihat betapa saya menyukainya. Saya rasa saya fanatik Smalltalk karena setiap kali saya duduk untuk bekerja dengan Ruby, saya akan menghela napas dan berpikir "Saya lebih suka melakukan ini di Smalltalk". Akhirnya saya menyerah dan kembali ke Smalltalk. Sekarang saya lebih bahagia. Lebih bahagia lebih baik.
Yang tentu saja menimbulkan pertanyaan, "Mengapa?". Tanpa urutan tertentu:
Di sisi lain, ini mungkin hanya ocehan seorang pria yang telah memprogram sejak hari-hari ketika mainframe menguasai bumi, kami harus berjalan sejauh lima mil untuk bekerja melalui badai salju yang menyilaukan, menanjak dua arah, dan komputer menggunakan donat sebagai memori. Saya tidak menentang Ruby / Java / C / C ++ /, semuanya berguna dalam konteksnya, tetapi beri saya Smalltalk atau beri saya ... yah, mungkin saya harus belajar Lisp atau Skema atau ... :-)
sumber
Smalltalk: people forward ifTrue: [think] ifFalse: [not thinking]
Ruby: orang berpikir ke depan kecuali berpikir ke belakang
1) Aliran kontrol seperti RPN Smalltalk oleh pesan seperti Lisp - ini biasa dan keren tetapi membuat orang aneh.
2) Ruby memungkinkan orang menulis kode menggunakan idiomatis cara orang berbicara - lakukan bla kecuali ada alasan untuk tidak melakukannya.
perbarui rewrote contoh Smalltalk agar benar-benar menjadi kode yang lebih legal ..
sumber
Ruby adalah bahasa buzz saat ini. Lebih mudah untuk memasarkan perangkat lunak yang dibuat dengannya sekarang daripada bahasa yang dikembangkan di tahun 70-an.
sumber
Masyarakat! Ruby dan khususnya Rails memiliki komunitas yang hebat. Saat bermain-main dengan smalltalk, sepertinya tidak banyak screen cast, artikel, postingan blog, dll. Yang ditulis tentang Smalltalk.
sumber
Anda menjawab pertanyaan di baris pertama Anda: "Ruby menjadi populer"
Saya akan mengatakan apakah satu bahasa lebih unggul dari yang lain tidak relevan .. Sebagai contoh, PHP mungkin bukan bahasa "terbaik" yang pernah ada, tetapi saya masih akan mempertimbangkan untuk menggunakannya di Ruby on Rails (alat yang "lebih baik" untuk membuat situs web) karena sangat tersebar luas.
Pada dasarnya, pro dan kontra tertentu dari suatu bahasa jauh lebih penting daripada segala sesuatu yang mengelilinginya - yaitu komunitas.
sumber
Ruby (atau bahasa lain) lebih populer daripada Smalltalk (atau bahasa lain) karena kita hidup di alam semesta yang kacau. Yakni:
Meskipun bahasanya mirip dalam fitur OO, keuntungan mematikan Smalltalk adalah lingkungan hidup dan terbuka ('gambar' yang banyak disalahpahami). Setelah Anda melihat contoh pemrograman di Smalltalk ini , debat selesai.
sumber
Bagi saya, ini bukan tentang apa yang Ruby miliki, tetapi apa yang tidak dimiliki Ruby. Dan hal yang tidak dimilikinya adalah kebutuhan akan VM dan lingkungan yang lengkap.
Smalltalk sangat bagus - di situlah saya mempelajari konsep OO, tetapi untuk kemudahan penggunaan saya menggunakan Ruby. Saya dapat menulis kode Ruby di editor favorit saya dan menjalankannya dari baris perintah.
Jadi, bagi saya, itulah yang saya pilih Ruby daripada Smalltalk.
sumber
Saya rasa setiap orang yang telah bekerja dengan Ruby untuk sementara waktu mengakui hutang yang dalam pada Smalltalk. Sebagai salah satu dari orang-orang ini, apa yang saya sukai dari Ruby over Smalltalk? Saya pikir dari perspektif bahasa yang ketat, itu gula. Ruby sengaja merupakan bahasa yang sangat sintaksis, sedangkan Smalltalk adalah bahasa yang sangat minim sintaks. Ruby pada dasarnya adalah model objek Smalltalk dengan sintaks Perlish. Kebetulan saya suka gula dan merasa itu membuat pemrograman lebih menyenangkan.
sumber
Anda dapat menemukan pekerjaan dengan mudah menggunakan Ruby. Meskipun saya sangat menyukai Smalltalk, hampir tidak mungkin untuk masuk ke ceruk Smalltalk. Ada solusi di dalamnya, tetapi jika Anda tidak masuk ketika itu populer, itu hampir tidak mungkin sekarang.
Semua alasan lainnya menjadi tidak penting karena Anda perlu menghabiskan banyak waktu, fokus pada pekerjaan nyata untuk belajar bahasa dengan benar. Jika Anda tidak kaya secara mandiri, cara terbaik untuk melakukannya adalah mengeksposnya di tempat kerja.
sumber
Karena distribusi Smalltalk dihargai dalam kelipatan $ 1000USD sedangkan Ruby gratis.
sumber
Ruby adalah untuk Smalltalk seperti angka Arab untuk angka Romawi. Matematika yang sama, sintaks yang lebih mudah.
sumber
Saya telah melakukan sedikit Smalltalk - IDE adalah satu hal yang saya ingat - apakah Ruby memiliki dukungan IDE yang baik?
sumber
Gunakan Ruby karena mungkin memiliki kaki bisnis, Smalltalk tidak.
Saya dapat memberitahu Anda dari pengalaman pribadi. Masih menggunakan Smalltalk, menyukainya, dan telah menggunakan beberapa rasa. Meskipun Smalltalk adalah bahasa yang bagus, dan semua yang Anda sebutkan, Anda mungkin tidak akan meyakinkan rata-rata CIO / CTO untuk menggunakan Smalltalk pada proyek baru. Tentu saja, Anda bahkan mungkin kesulitan meyakinkan CIO / CTO konservatif untuk menggunakan Ruby. Pada akhirnya, Anda harus sangat berhati-hati jika menginginkan dukungan komersial jangka panjang yang berkelanjutan dan kemampuan untuk menemukan karyawan di luar jalan yang dapat mendukung sistem Anda di masa mendatang. Sebagai contoh, Smalltalk adalah hal yang sangat besar di awal 90-an dan IBM berinvestasi besar-besaran di akhir tahun 90-an. Untuk IBM Smalltalk akan menjadi bahasa berikutnya untuk semua aplikasi bisnis. IBM menempatkan Smalltalk pada segala hal termasuk sistem mainframe mereka. Jawa menjadi populer, mengambil alih pasar, dan Smalltalk menjadi pemain khusus. Lebih dari setahun yang lalu IBM membuang bahasa tersebut (istilah mereka adalah matahari terbenam). Juga, lihat Sejarah. ParkPlace dan Digitalk tempat pemain komersial besar pertama di arena Smalltalk, mereka bergabung dan kemudian gulung tikar.
sumber
Saya menyukai Smalltalk dan Ruby - tetapi telah menemukan bahwa Ruby lebih dapat diterapkan pada apa yang saya lakukan setiap hari, dan lebih dekat ke hati saya (secara praktis). Apa yang Ruby tawarkan yang tidak ditawarkan Smalltalk?
Beberapa telah menyebutkan gst (GNU Smalltalk); masalah masih terus berlanjut.
sumber
Gunakan apa pun yang membuat Anda lebih kuat dan lebih cepat untuk mengalahkan tantangan Anda.
Untuk kami , sedikit kerangka rumah, yang kami bangun di atas tepi laut adalah kekuatan super kami.
Saya suka komunitas RoR, sikapnya benar. Itu sangat berharga. Namun pada saat yang sama, secara teknologi, tepi laut membuat Anda lebih kuat dari masalah yang lebih rumit.
Anda dapat membuat aplikasi web tepi pantai yang bagus menggunakan perangkat sumber terbuka.
dabbledb adalah sartup yang berbasis di tepi laut dan, hei! Avi menjualnya ke twitter pada bulan Juni tahun ini!
Saya katakan Anda tidak perlu menunggu orang lain menyetujui inisiatif Anda.
Lakukan saja. Selesaikan. Tunjukkan pada kami yang berhasil.
Kamu tidak sendiri. Kami berada di perahu yang sama.
sumber
Perspektif menarik dari Robert Martin (dari RailsConf 2009): "What Killed Smalltalk Could Kill Ruby, Too"
sumber
Saya pikir bagian dari masalahnya adalah pengembangan-lingkungan-is-the-runtime. Ini memberikan banyak kekuatan, tetapi juga menghadirkan kurva belajar yang lebih besar.
Ini adalah tutorial hello world.
Ini sangat berbeda dari bahasa lain di mana saya hanya perlu tahu cara membuka editor teks dan menyalin dan menempelkan teks, menekan simpan, dan menjalankan kompiler. SAYA HARUS mengetahui cara menggunakan lingkungan. Tutorial itu bahkan tidak menunjukkan kepada saya cara membuat program dasar (yang kemungkinan lebih merupakan kesalahan dari tutorial itu) yang dapat saya jalankan.
Jelas ada biaya yang lebih tinggi untuk menjalankan sesuatu daripada kebanyakan bahasa lain.
Sebagian besar bahasa memiliki beberapa kode menarik yang dapat mereka pamerkan. Saya belum pernah melihatnya dengan Smalltalk. Saya juga berpikir bahwa ada beberapa stigma untuk Smalltalk karena sudah ada begitu lama dan masih relatif tidak jelas.
sumber
Menurut saya perbedaan TERBESAR adalah Ruby jauh lebih mirip dengan perl dalam hal PENGGUNAAN. Smalltalk tidak pernah mendapatkan pijakan ke dalam bahasa "scripting".
VM benar-benar keren dan saya berharap ruby akan memiliki sesuatu yang mirip dengannya sehingga kami dapat memperlakukan semua yang ada di OS kami yang tertulis dalam ruby sebagai objek di ruang memori, namun hingga saat itu saya hanya menikmati sintaks singkat Ruby yang singkat, kemampuan untuk hanya tulis skrip kecil dan gunakan kembali nanti. Ruby memiliki semua kelebihan perl dan OOPnya jauh lebih mirip dengan smalltalk daripada hack OOP perl.
sumber
Saya akan melangkah lebih jauh dari jawaban Jonke, dan mengatakan sekarang ada sejumlah besar bahasa yang memiliki komunitas yang sangat kuat, hampir cukup untuk memenuhi setiap selera, dan sebagian dari bahasa ini memiliki pengakuan utama (yaitu manajer Anda akan membiarkan Anda menggunakannya di bekerja dengan baik).
Sangat mudah untuk mempelajari dasar-dasar suatu bahasa, tetapi untuk benar-benar menggunakannya secara efektif, Anda perlu menginvestasikan cukup waktu untuk mempelajari platform dan alatnya, serta sintaksis dan idiomnya. IIRC, McConnell mengklaim bahwa dibutuhkan sekitar tiga tahun untuk menjadi benar-benar mahir.
Mengingat hal-hal tersebut, sulit untuk membenarkan menghabiskan banyak waktu pada bahasa seperti LISP dan Smalltalk, meskipun mereka menarik dan mungkin mendidik untuk dilihat.
sumber
Sebagai orang yang terlambat berdiskusi, masalah utama Smalltalk dan Lisp adalah Anda tidak dapat menjalankannya dengan CGI atau FastCGI di shared hosting.
Massa yang tidak dicuci tidak akan pernah menggunakannya jika mereka membutuhkan VPS atau server khusus untuk menggunakannya. IMHO Seaside lebih unggul dari hampir semua hal di luar sana, tetapi apakah itu akan berjalan di Dreamhost atau Webfaction?
sumber