Mengapa menggunakan Ruby daripada Smalltalk? [Tutup]

121

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:

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
two-bit-fool
sumber
47
Karena semua orang masih menunggu "Smalltalk on Snails"?
Mark Rushakoff
10
Secara teknis ini disebut 'Seaside' (www.seaside.st) dan berjalan cukup cepat di VM Gemstone yang memiliki kompiler JIT. Ada juga port Ruby ke VM Gemstone, yang disebut Maglev.
ConcernedOfTunbridgeWells
3
Setelah melalui semua komentar di bawah ini, menjadi penggemar ruby ​​selama 5 tahun terakhir, sekarang saya tergoda untuk belajar percakapan kecil secepatnya
Amol Pujari
1
GNU Smalltalk hampir merupakan satu-satunya implementasi gratis yang tidak digabungkan dengan GUI. Saya pikir ini masih kritis.
eonil
Tautan "kontrol sumber terdistribusi" rusak.
Piovezan

Jawaban:

88

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.

ConcernedOfTunbridgeWells
sumber
1
Saya pikir poin perpustakaan kelas tidak sesuai. Saya tahu Smalltalk dan Ruby dan perpustakaan kelasnya sangat mirip. Masalah apa pun yang saya pelajari satu, saya akan mempelajari yang lain. Setelah melakukan lebih banyak ruby ​​terlebih dahulu, itu membuat perpustakaan Smalltalk lebih mudah dipelajari. Mereka sangat mirip di banyak tempat. Saya tidak berpikir apa-apa tentang perpustakaan kelas atau bahasanya itu sendiri membuat Smalltalk lebih sulit daripada Ruby.
Sean T Allen
2
Baik VW dan VA Smalltalk dulu memiliki reputasi kurva pembelajaran yang curam karena ukuran perpustakaan kelas. Hal ini diakui secara luas pada saat itu. Saya mempelajari Smalltalk dari Digitalk Smalltalk / V versi DOS yang lama, yang memiliki perpustakaan kelas yang jauh lebih kecil. Manual untuk itu kira-kira berukuran sama dengan buku PP Ruby, dan seperti buku itu referensi perpustakaan kelas sekitar setengah dari jumlah halaman total. Namun, perpustakaan kelas untuk VW dan VA jauh lebih besar.
ConcernedOfTunbridgeWells
79

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.

Mario Aquino
sumber
5
Manakah yang merupakan jalan antar negara bagian, dan yang merupakan jalan belakang yang berangin dengan tutupan pohon? lol
Charlie Flowers
9
Charlie: itulah yang membuatnya menjadi zen :)
xofz
32
Dan bahasa apa yang dimiliki gadis-gadis yang lebih cantik?
Tin Man
25

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

Memang benar, bahwa kebanyakan orang tidak memilih bahasa pemrograman hanya berdasarkan kelebihan mereka. Kebanyakan programmer diberi tahu bahasa apa yang akan digunakan oleh orang lain.

dan

Agar menarik bagi peretas, bahasa harus bagus untuk menulis jenis program yang ingin mereka tulis. Dan itu berarti, mungkin mengejutkan, bahwa itu harus bagus untuk menulis program sekali pakai.

Dan saat berada di tanah Lisp coba ganti LISP dengan smalltalk

Perpustakaan, komunitas, dan momentum Ruby bagus

Jadi jika LISP masih lebih powerful dari Ruby, mengapa tidak menggunakan LISP? Penolakan khas untuk pemrograman di LISP adalah:

  1. Perpustakaan tidak cukup.
  2. Kami tidak dapat mempekerjakan programmer LISP.
  3. LISP tidak berkembang ke mana-mana dalam 20 tahun terakhir.

Ini bukanlah keberatan yang berlebihan, tetapi pasti patut dipertimbangkan.

dan

Sekarang, dengan pilihan antara bahasa yang kuat, dan bahasa populer, mungkin masuk akal untuk memilih yang kuat. Tetapi jika perbedaan kekuatannya kecil, menjadi populer memiliki banyak keuntungan. Pada tahun 2005, saya akan berpikir panjang dan keras sebelum memilih LISP daripada Ruby. Saya mungkin hanya akan melakukannya jika saya membutuhkan kode yang dioptimalkan, atau makro yang bertindak sebagai kompiler lengkap.

Jonke
sumber
4
Ahem, "20 tahun terakhir"?!?! Saya pikir yang Anda maksud, "51 tahun terakhir". :-)
DigitalRoss
1
@DigitalRoss - Saya memilih 20; LISP sebenarnya cukup besar di lingkaran tertentu pada satu titik, tetapi (meskipun demikian ViaWeb) tidak ada 'aplikasi pembunuh' baru yang benar-benar terlihat sejak 1980-an. Namun, teknologi berbasis LISP sebenarnya mendapat pendanaan yang cukup banyak di tahun 60-an, 70-an dan 80-an; orang benar-benar mengira LISP akan berhasil cukup lama.
ConcernedOfTunbridgeWells
2
@DigitalRoss ya, jika Anda mengabaikan hal-hal seperti kelanjutan, multimetode, makro, optimisasi panggilan ekor, di luar kepala saya.
Frank Shearar
Saya selalu menemukan argumen semacam ini kurang menyenangkan. Tidak ada bahasa terbaik dan setiap insinyur perangkat lunak dapat melakukan cadel, skema, ruby, php atau c atau apa pun. Dan jika dia tidak bisa, dia bisa mempelajarinya dalam 2 minggu. Bahasa hanyalah alat. Anda tidak perlu tidur dengannya.
Edgar Klerks
22

Saya akan mengatakan sebaliknya: sintaks Smalltalk adalah salah satu sintaks bahasa pemrograman yang paling sederhana dan kuat.

Igor Stasenko
sumber
7
Hanya ingin mengatakan amin!
Schpaencoder
19

Memang benar bahasanya sangat mirip. Cara yang dangkal untuk menafsirkannya adalah dengan menyebut Ruby sebagai band penutup Smalltalk. Interpretasi yang lebih masuk akal adalah bahwa sistem tertutup Smalltalk mengisolasinya, sementara partisipasi Ruby dalam ekologi Unix dan kebiasaan menggunakan fitur dari setiap bahasa di bawah matahari memberikan kurva adopsi yang jauh lebih lembut dan integrasi yang mudah dengan alat kickass seperti Git.

Giles Bowkett

vesan
sumber
17

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

Charlie Flowers
sumber
15

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.

Simon Knights
sumber
1
Ini membutuhkan lebih banyak suara positif!
froginvasion
15

apa yang Ruby miliki dan Smalltalk tidak?

  • Dukungan masif dan terkini oleh platform utama (IronRuby dan jRuby) yang memperkaya kumpulan pustaka
  • Penginjil seperti Dave Thomas yang, selama bertahun-tahun, telah melakukan tur keliling negeri untuk memberitakan Injil dalam bahasa mereka. Saya telah melihat Dave di konferensi Java yang menyatakan dia tidak tahu Java dan dia lebih suka Ruby.
  • Real estat yang kuat dan terkini di rak buku
  • Pencipta Ruby mengatakan bahwa dia memikirkan programmer: Sintaks Ruby tampaknya memiliki daya tarik Zen ini. Sulit untuk dijabarkan, namun tampaknya menyemangati para penggemar.
  • Kreatif, presentasi dinamis seperti Giles dan ini yang gain Mindshare

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.

Michael Easter
sumber
Poin pertama Anda tidak aktif. Dukungan JVM dan .NET VM berarti omong kosong untuk Smalltalk karena setiap implementasi sudah berjalan pada VM (bagaimana lagi mereka bisa berjalan dengan baik di beberapa sistem operasi, bukan?) Sintaks Ruby lebih rumit daripada Smalltalk. Sulit untuk menentukan mana yang merupakan bagian dari masalah;)
1
Ya, sebagian dari alasan mengapa beberapa orang mungkin menggunakan jruny / ironruby adalah ketidakdewasaan relatif dari ruby ​​vm, tetapi ada beberapa perpustakaan yang sangat bagus yang tersedia untuk .net / jvm yang mungkin ingin mereka gunakan yang tidak memiliki padanan di tempat lain plus nya jauh lebih mudah bagi beberapa bisnis untuk menyatu dengan basis kode java / c # mereka.
Roman A. Taycher
2
Tentu saja, saya telah menemukan menghargai "real estat yang kuat dan terkini di rak buku" sebagai salah satu hukuman dari bahasa yang rumit tanpa lingkungan yang hidup dan dinamis. Ketika saya membuat kode dalam C ++, saya memiliki rak yang penuh dengan buku gotcha. Setelah pindah ke Smalltalk (via Ruby), saya tidak merindukan mereka sedikit pun. Mengandalkan IDE itu sendiri untuk sebagian besar panduan, saya jarang meninggalkan gambar untuk lebih dari pencarian google cepat, dan telah gentrified beberapa real estate rak dengan seri Game of Thrones;)
Sean DeNigris
14

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:

  1. Karena IDE menghapus semua hal lain yang pernah saya kerjakan. Ini termasuk banyak platform dari ISPF pada mainframe IBM hingga Visual Microsoft (. *), Termasuk hal-hal seperti Visual Basic 4-6, Visual C ++ (berbagai inkarnasi), Turbo Pascal dan turunan Borland (misalnya Delphi), dan hal-hal di DEC mesin dalam mode karakter dan di bawah X-Windows.
  2. Karena gambar adalah tempat yang indah untuk ditinggali. Saya dapat menemukan apa yang saya inginkan di sana. Jika saya tidak tahu bagaimana melakukan sesuatu, saya tahu bahwa di suatu tempat dalam gambar adalah contoh dari apa yang saya coba lakukan - yang harus saya lakukan adalah berburu sampai saya menemukannya. Dan ini mendokumentasikan sendiri - jika Anda ingin melihat detail tentang cara kerja sesuatu, Anda cukup membuka browser di kelas yang Anda minati, lihat metodenya, dan begitulah cara kerjanya. (Oke, akhirnya Anda akan menemukan sesuatu yang disebut primitif, lalu "di sini ada naga", tapi biasanya bisa dimengerti dari konteksnya). Anda dapat melakukan hal serupa di Ruby / C ++ / C, tetapi itu tidak semudah itu. Mudah lebih baik.
  3. Bahasanya minimal dan konsisten. Tiga jenis pesan - unary, binary, dan kata kunci. Itu juga menjelaskan prioritas eksekusi - pesan unary dulu, lalu pesan biner, lalu pesan kata kunci. Gunakan tanda kurung untuk membantu. Dang sintaks kecil, sungguh - semuanya dilakukan dengan pengiriman pesan. (Oke, tugas bukanlah pengiriman pesan, ini adalah operator. Jadi, operator 'return' (^). Blok diapit oleh pasangan kurung siku ([]). Mungkin satu atau dua bit 'ajaib' lainnya di sana, tapi sangat sedikit ...).
  4. Blok. Ya, saya tahu, mereka ada di Ruby (dan lainnya), tapi sialnya, Anda benar-benar tidak dapat memprogram di Smalltalk tanpa menggunakannya. Anda dipaksa untuk belajar bagaimana menggunakannya. Terkadang dipaksa itu baik.
  5. Pemrograman berorientasi objek tanpa kompromi - atau alternatif, dalam hal ini. Anda tidak bisa berpura-pura bahwa Anda "melakukan sesuatu" sambil tetap melakukan hal yang sama.
  6. Karena itu akan meregangkan otak Anda. Konstruksi nyaman yang telah kita semua terbiasa (if-then-else, do-while, for (;;), dll) sudah tidak ada lagi sehingga Anda harus Mempelajari Sesuatu yang Baru. Ada yang setara dengan semua hal di atas (dan lebih banyak lagi), tetapi Anda harus belajar berpikir secara berbeda. Berbeda itu bagus.

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 ... :-)

Bob Jarvis - Kembalikan Monica
sumber
1
Saya pikir pertanyaannya adalah "Apa yang Ruby tidak miliki oleh Smalltalk?"
Mauricio
1
@Mauricio, Dan @Bob menjawab: "Beats me."
systemovich
1
Letakkan dengan brilian, menyukainya! Mengapa sesuatu tidak bisa menjadi lebih baik meskipun kurang populer? Jika Anda tidak setuju, saya berani mengatakan Anda tidak mendapatkan Smalltalk ;-)
Amos M. Carpenter
@aaamos - terima kasih. Saya menduga alasan Smalltalk tidak populer adalah karena # 6, dan pada tingkat yang lebih rendah # 5. Smalltalk bukanlah jenis tempat "same-old-syntax" ibumu - ini berbeda. Misalnya, jika Anda tahu C maka C ++, Java, dan C # semuanya terasa nyaman. Dan "bagaimana" dan "mengapa" dari perilaku Smalltalk bisa agak membingungkan. (Saya akan mengambil risiko bahwa jika Smalltalker baru tidak merasa kepalanya dipelintir, apakah mereka begitu brilian sehingga mereka langsung mengelusnya, atau mereka hanya tidak mengerti. Ya, saya bertanya-tanya bagaimana "brilian "akan terasa :-).
Bob Jarvis - Kembalikan Monica
Sudahkah Anda mencoba debugging dengan pry (dan plugin), dan live coding dengan hot reload file yang disimpan? Itu adalah pengalaman pemrograman terbaik yang saya miliki.
Rivenfall
11

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 ..

Andy Dent
sumber
4
Bahasa Inggris mungkin adalah salah satu cara terburuk untuk mengungkapkan instruksi pemrograman. Maksud saya itu menyebabkan cukup banyak kebingungan di antara orang-orang, apalagi komputer. Apakah bla? Siapa yang harus melakukan bla? tentang apa? Juga kode ruby ​​Anda tidak masuk akal dan tidak valid. Seharusnya: Ruby: people.think_forwards kecuali people.think_backwards? dan SmallTalk seharusnya: Smalltalk: (people think_forwards?) ifTrue: [people think_forwards])
donalbain
2
Anda juga dapat menambahkan metode yang dipanggil kecuali: aBlock ke kelas BlockClosure dari Kategori Metode-Kernel yang akan mengevaluasi aBlock dan ifTrue: mengevaluasi blok pemanggil.
Ricardo de Cillo
3
@donalbain, saya tidak menyarankan ini adalah pernyataan pemrograman literal tetapi menunjukkan urutan pernyataan. Saya pikir itu cukup jelas ketika saya menulis tanggapan saya.
Andy Dent
1
@donalbain Benar sekali, sebenarnya itu ada. Alur kontrol mirip Ruby lainnya tersedia di github.com/randycoulman/SuffixConditionals . Andy, ada bug dalam kode Anda - orang yang terbelakang tidak berpikir, jadi Anda seharusnya mengirim #ifFalse: ;-P
Sean DeNigris
Smalltalk memiliki pemasaran yang buruk: sintaksis yang aneh dan berbasis gambar. Ruby lebih normal namun memiliki kualitas sintaks yang baik juga. Java diketik dan dikompilasi yang meyakinkan klien. Saya tidak akan keberatan belajar dan menggunakan sintaks yang aneh jika tidak memengaruhi "pemasaran" saya sebagai programmer.
Rivenfall
8

Ruby adalah bahasa buzz saat ini. Lebih mudah untuk memasarkan perangkat lunak yang dibuat dengannya sekarang daripada bahasa yang dikembangkan di tahun 70-an.

pembuat kode1
sumber
Fakta bahwa itu "dikembangkan pada tahun 70-an" tidak ada hubungannya dengan seberapa sulitnya untuk berkembang.
gracchus
3
dan komentar saya tidak ada hubungannya dengan pembangunan.
coder1
3
Maaf, saya cenderung salah membaca ketika saya lelah, jadi saya harus menghabiskan waktu liburan saya untuk meminta maaf kepada orang-orang yang pernah saya bully.
gracchus
8

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.

Kevin Kaske
sumber
7

Anda menjawab pertanyaan di baris pertama Anda: "Ruby menjadi populer"

  • Ada banyak modul menarik, proyek dan sejenisnya yang berbasis di sekitar Ruby.
  • Jika Anda mengalami masalah dalam melakukan sesuatu di Ruby, akan sangat mudah mencari bantuan di suatu tempat.
  • Ruby diinstal di banyak komputer sekarang (Ini disertakan secara default di OS X, banyak distro Linux, dan ada installer yang bagus untuk Windows) - Saya belum melihat smalltalk diinstal secara default di mesin mana pun yang saya gunakan ..

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.

dbr
sumber
7

Ruby (atau bahasa lain) lebih populer daripada Smalltalk (atau bahasa lain) karena kita hidup di alam semesta yang kacau. Yakni:

  • Dari Dave Thomas sendiri, "[setelah] video tentang 'How to Build a Blog in Ten Minutes' ... Ruby berubah dari bahasa khusus yang bagus, menjadi 'bahasa yang Anda gunakan untuk menulis aplikasi Rails'" ( Ruby Conference Keynote 2010 ).
  • Vendor Smalltalk awal mengenakan biaya yang sangat tinggi
  • Smalltalk, karena ditemukan (sebelumnya) 30 tahun yang lalu, bagi banyak orang dianggap sebagai bahasa "mati" yang lama (seperti FORTRAN)
  • perusahaan menganggap Smalltalk sebagai keunggulan kompetitif sehingga mereka menyembunyikan penggunaannya

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.

Sean DeNigris
sumber
5

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.

Simon Knights
sumber
Tapi silakan dan pelajari Smalltalk juga.
Simon Knights
Sesuai pengeditan saya: GNU Smalltalk memungkinkan Anda untuk menggunakan editor favorit Anda dan menjalankan dari baris perintah.
two-bit-fool
Ya - Terima kasih - baru saja melihat-lihat dan mengunduh salinannya!
Simon Knights
2
Yah, itu juga tidak memiliki kerangka web yang bagus. Rel tidak apa-apa, tapi tidak ada Tepi laut
Stephan Eggermont
3
Platform smalltalk apa pun memungkinkan Anda menulis kode smalltalk di editor favorit Anda. Tetapi jika Anda ingin terputus dari dunia nyata, itu adalah pilihan Anda. Ketahuilah bahwa Anda kehilangan sekitar 90% produktivitas dengan melakukannya.
Igor Stasenko
5

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.

Avdi
sumber
1
Ruby memiliki model objek yang berbeda dengan Smalltalk. Saya akan mengatakan "dipengaruhi oleh" tetapi tidak sama. Anda dapat menulis program ruby ​​dengan cara berbasis prototipe menghindari kebutuhan untuk membuat kelas baru. Meskipun ini tidak biasa, Smalltalk tidak mendukungnya.
Dafydd Rees
2
Saya suka obrolan kecil, karena saya dapat menemukan dan menggunakan gula sintaks sendiri kapan pun saya membutuhkannya. Tidak perlu gula jika Anda sudah bisa melakukan semuanya dengan sintaks minimal.
Igor Stasenko
5

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.

daf
sumber
4

Karena distribusi Smalltalk dihargai dalam kelipatan $ 1000USD sedangkan Ruby gratis.

grettke
sumber
4

Ruby adalah untuk Smalltalk seperti angka Arab untuk angka Romawi. Matematika yang sama, sintaks yang lebih mudah.

sal
sumber
3
Itu cara yang salah. Smalltalk memiliki sintaks yang jauh lebih mudah.
Stephan Eggermont
1
Hanya jika Anda berpikir di rpn. Kebanyakan orang tidak. Saya benar-benar bangga dengan fakta bahwa posting ini terus mendapatkan naik turun suara.
sal
12
RPN? Java: foo.bar () Perl: foo-> bar () Python: foo.bar () Smalltalk: foo bar Jadi selain memiliki sintaks yang lebih sederhana, jika Anda mengklaim Smalltalk adalah RPN, Anda harus mengatakan bahwa semua bahasa OO utama adalah "RPN".
Randal Schwartz
2
Bandingkan saja jumlah kata kunci Ruby dibandingkan dengan jumlah kata kunci Smalltalk. Dan itu, baru permulaan! Sintaks Smalltalk cocok dengan serbet, coba lakukan itu dengan Ruby dan Anda akan mengalami kesulitan.
froginvasion
3

Saya telah melakukan sedikit Smalltalk - IDE adalah satu hal yang saya ingat - apakah Ruby memiliki dukungan IDE yang baik?

Chris Kimpton
sumber
Iya. TextMate hebat, dukungan Eclipse bagus, dan Emacs memiliki mode yang layak.
Pete
6
Jika Anda berpikir "TextMate / Eclipse / Emacs" sebanding dengan IDE bawaan Smalltalk, Anda belum pernah melihat Smalltalk yang sebenarnya!
Randal Schwartz
Saya masih melewatkan pilihan -> 'Show It' dari IDE pada sistem yang saya bangun hari ini - dengan satu Pengecualian: Alat pengembangan SQL Server akan memungkinkan Anda menyorot pilihan dan menjalankannya sebagai kueri. Smalltalk berpengaruh jika tidak ada yang lain!
ConcernedOfTunbridgeWells
IDE terdekat ke Smalltalk it IMHO ArachnoRuby. Ini lebih terintegrasi daripada Emacs / TextMate dll. Namun tampaknya orang cukup senang dengan beberapa jendela yang terbuka dan menjalankan alat yang beragam. Salam
Friedrich
@Friedrich Re "orang-orang cukup senang dengan beberapa jendela terbuka yang menjalankan berbagai alat" ... "Bahasa pemrograman mengajarkan Anda untuk tidak menginginkan apa yang tidak dapat mereka sediakan. Anda harus berpikir dalam bahasa ..." - Paul Graham
Sean DeNigris
3

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.

daduffer
sumber
Smalltalk "memiliki kaki bisnis" - jika Anda sudah memiliki latar belakang yang tepat dan dapat menemukan peluang yang tepat ...
Dafydd Rees
Judul Anda terlalu dilebih-lebihkan. Tidak semua bisnis dibatasi oleh CTO yang berpikiran pendek. Seperti yang dikatakan Paul Graham ketika dia benar-benar menyanggah mitos bahwa bahasa arus utama lebih aman: "Anda akan kesulitan meyakinkan bos berambut runcing untuk membiarkan Anda membangun sesuatu di Lisp ... Tetapi jika Anda bekerja untuk sebuah startup, itu tidak berhasil. Anda belum memiliki bos berambut runcing, Anda dapat ... menggunakan teknologi yang tidak akan pernah bisa ditandingi oleh pesaing Anda, yang terpaku erat pada bahasa median. "
Sean DeNigris
2

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?

  • Pembuatan skrip berbasis teks
  • Persyaratan implementasi rendah (berjalan di lebih banyak tempat)
  • Lebih mudah dipelajari dan dibenarkan (pemrogram Perl dan Python tidak memiliki kesulitan
  • Lebih mudah untuk memindahkan program - file teks!
  • Berinteraksi dengan baik dengan lingkungan asli
  • Di mana pun Java dijalankan, jRuby berjalan ...
  • Komunitas yang lebih besar dan lebih aktif

Beberapa telah menyebutkan gst (GNU Smalltalk); masalah masih terus berlanjut.

Mei
sumber
"Tempat" manakah yang dijalankan Ruby yang tidak dijalankan oleh Smalltalk? Pharo Smalltalk, misalnya, berjalan di Mac, Windows, Unix, tanpa OS sama sekali (dapatkah Ruby melakukannya?), Dan sedang di-porting ke berbagai platform seluler (Android, iOS).
Sean DeNigris
Bagaimana dengan FreeBSD dan OpenBSD? (tidak, saya tidak tahu jawabannya ...) Bagaimana dengan Solaris dan HP-UX dan OpenVMS? Saya juga tidak ingin menggunakan Ruby atau Smalltalk di Android atau iOS. Masalah terbesar bukanlah OS, tetapi memori: Ruby akan berjalan dalam memori yang jauh lebih sedikit daripada Smalltalk.
Mei
Rupanya, ada VM FreeBSD (lihat poin terakhir OP di forum.world.st/SOB-minutes-3-6-12-td4453817.html ). Saya tidak yakin tentang yang lain. Sedangkan untuk Android dan iOS, apakah Anda ingin menggunakan Smalltalk, ada pertanyaan yang berbeda dari apakah tersedia ;-) Orang-orang telah memposting tentang eksperimen yang berhasil pada platform tersebut, yang mana saya telah melihat beberapa screencast yang menjanjikan.
Sean DeNigris
Itu juga mengingatkan saya - saya ingat Smalltalk for the Palm.
Mei
2

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.

Sebastian Sastre
sumber
2

Perspektif menarik dari Robert Martin (dari RailsConf 2009): "What Killed Smalltalk Could Kill Ruby, Too"

jmay
sumber
2
Pembicaraan itu mengasumsikan bahwa obrolan kecil sudah mati (bukan) dan ruby ​​itu cukup mirip dengan obrolan kecil dalam ruang dan waktu sehingga ia mungkin mengalami nasib (bukan) yang sama. Tidak.
Randal Schwartz
0

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.

Steve g
sumber
Di bagian bawah halaman: self informasikan: 'Halo, Dunia!'. Saya setuju bahwa kurva belajarnya lebih curam, tetapi menggunakan "halo, dunia" sebagai bukti, menurut saya, terlalu banyak. :)
jop
Maksud saya adalah untuk melihat bagaimana menulis sesuatu yang sederhana seperti hello workld, tutorial harus memberi tahu Anda jendela mana yang perlu Anda buka. Nama dan kegunaan jendela bukanlah sesuatu yang bisa saya tebak. Saya butuh sedikit mengklik hanya untuk menemukan jendela yang dibicarakannya.
Steve g
1
Sesuai pengeditan saya: GNU Smalltalk memungkinkan Anda untuk menggunakan editor favorit Anda dan menjalankan dari baris perintah.
two-bit-fool
ruby -e 'menempatkan "halo dunia"'
Marcel Valdez Orozco
1
pharo [image filename] -e "self inform: 'hello world'"
Sean DeNigris
0

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.

dia
sumber
0

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.

Stuart Ellis
sumber
0

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?

vfclists
sumber
Saya ingin tahu apakah ini masih banyak penghalang sekarang karena misalnya Digital Ocean menawarkan VPS seharga $ 0,007 / jam
Sean DeNigris