Smalltalk yerine neden Ruby kullanılıyor? [kapalı]


121

Ruby , büyük ölçüde Ruby on Rails'in etkisiyle popüler hale geliyor , ancak şu anda ergenlik döneminde mücadele ediyormuş gibi hissediyor. Ruby ve Smalltalk arasında pek çok benzerlik vardır - maglev bunun kanıtıdır. Daha alışılmadık bir sözdizimine sahip olmasına rağmen, Smalltalk, Ruby'nin nesne yönelimli güzelliğinin tamamına (hatta daha fazlasına) sahiptir.

Okuduklarıma göre Smalltalk, Ruby'nin şu noktalara değinmiş gibi görünüyor:

Görünüşe göre Ruby tekerleği yeniden icat ediyor. Öyleyse, Ruby geliştiricileri neden SmallTalk kullanmıyor? Ruby'de Smalltalk'ın olmayan nesi var?

Kayıt için: Smalltalk konusunda çok az tecrübesi olan veya hiç deneyimi olmayan bir Ruby adamıyım, ama nedenini merak etmeye başlıyorum.


Düzenleme: Komut dosyası oluşturma kolaylığı sorununun GNU Smalltalk tarafından ele alındığını düşünüyorum . Anladığım kadarıyla bu, normal eski metin dosyalarına smalltalk yazmanıza izin veriyor ve artık Smalltalk IDE'de olmanıza gerek yok. Daha sonra komut dosyalarınızı şununla çalıştırabilirsiniz :

gst smalltalk_file

47
Herkes hala "Smalltalk on Snails" beklediği için mi?
Mark Rushakoff

10
Teknik olarak adı 'Seaside' (www.seaside.st) ve JIT derleyicisine sahip Gemstone VM'de oldukça hızlı çalışıyor. Ayrıca Maglev adında bir Ruby to the Gemstone VM limanı da vardır.
ConcernedOfTunbridgeWells

3
Aşağıdaki tüm bu yorumları gözden geçirdikten sonra, son 5 yıldır yakut hayranı olarak, şimdi küçük konuşmayı en kısa sürede öğrenmeye başladım
Amol Pujari

1
GNU Smalltalk, GUI ile sabit bağlanmamış neredeyse tek özgür gerçeklemedir. Bunun hala kritik olduğunu düşünüyorum.
eonil

"Dağıtılmış kaynak denetimi" bağlantısı koptu.
Piovezan

Yanıtlar:


88

Ruby'den çok Pythonista'yım, ancak Ruby için de aynı nedenlerden dolayı aynı şeyler geçerli.

  • Smalltalk'ın mimarisi biraz dar görüşlüdür, oysa Python ve Ruby, entegrasyonu kolaylaştırmak için sıfırdan inşa edilmiştir. Smalltalk, Python ve Ruby'de olduğu gibi hiçbir zaman hibrit uygulama desteği sağlamadı, bu nedenle 'gömülü komut dosyası dili olarak smalltalk' kavramı asla yakalanmadı.

    Bir kenara, Java diğer kod tabanlarıyla arabirim kurmak için en kolay şey değildi (JNI oldukça beceriksizdir), ancak bu onun zihin paylaşımını kazanmasını engellemedi. IMO arabirim argümanı önemlidir - gömme kolaylığı Python'a zarar vermez - ancak bu argüman yalnızca orta düzeyde ağırlık taşır çünkü tüm uygulamalar bu özelliği gerektirmez. Ayrıca, Smalltalk'ın sonraki sürümleri büyük ölçüde dar görüşlülüğü ele aldı.

  • Ana smalltalk uygulamalarının (VisualWorks, VisualAge vb.) Çoğunun sınıf kitaplığı büyüktü ve oldukça dik bir öğrenme eğrisi ile ünlendi. Smalltalk'taki çoğu temel işlev, akışlar ve koleksiyonlar gibi temel şeyler bile sınıf kitaplığında bir yerde gizlidir. Dil paradigması aynı zamanda ona aşina olmayan biri için bir kültür şokudur ve tarayıcının sunduğu programın parça parça görünümü, çoğu insanın alıştığından oldukça farklıdır.

    Genel etki, Smalltalk'ın öğrenmesi zor olduğu için (bir şekilde hak edilmiş) bir ün kazanmasıdır; gerçekten yetkin bir Smalltalk programcısı olmak epey zaman ve çaba gerektirir. Ruby ve Python öğrenmesi ve yeni programcıları hızlandırması çok daha kolaydır.

  • Tarihsel olarak, ana akım Smalltalk uygulamaları oldukça pahalıydı ve 1983 tarihli bu net.lang.st80 gönderisinde görülebileceği gibi çalıştırmak için egzotik donanımlara ihtiyaç vardı . Windows 3.1, NT ve '95 ve OS / 2, iyi bir yerel sistem entegrasyonu ile Smalltalk uygulamasını destekleyebilen, genel donanım üzerinde ilk toplu pazar işletim sistemleriydi. Daha önce, Mac veya iş istasyonu donanımı Smalltalk'ı etkili bir şekilde çalıştırabilen en ucuz platformlardı. Bazı uygulamalar (özellikle Digitalk), PC işletim sistemlerini oldukça iyi destekledi ve biraz ilgi çekmeyi başardı.

    Ancak, OS / 2 hiçbir zaman bu kadar başarılı olmadı ve Windows 1990'ların ortalarına kadar genel kabul görmedi. Ne yazık ki bu, bir platform olarak Web'in yükselişi ve Java'nın arkasındaki büyük bir pazarlama hamlesi ile aynı zamana denk geldi. Java, 1990'ların ikinci yarısında akıl paylaşımının çoğunu ele geçirdi ve Smalltalk'ı biraz da olsa koştu.

  • Ruby ve Python, daha geleneksel bir araç zincirinde çalışır ve belirli bir geliştirme ortamına sıkı sıkıya bağlı değildir. Kullandığım Smalltalk IDE'leri yeterince güzel olsa da Python geliştirme için PythonWin kullanıyorum çünkü büyük ölçüde sözdizimi vurgulamalı güzel bir editöre sahip ve ayağa kalkmıyor.

    Bununla birlikte, Smalltalk bir IDE ile kullanılmak üzere tasarlanmıştır (aslında, Smalltalk orijinal grafiksel IDE idi) ve yine de diğer sistemler tarafından kopyalanmayan bazı güzel özelliklere sahiptir. Kodu vurgulama ve 'Göster' ile test etmek, Ruby adına konuşamasam da, Python IDE'de hiç görmediğim çok güzel bir özellik.

  • Smalltalk, web uygulama partisine gelmek için biraz gecikti. VisualWave gibi ilk çabalar hiçbir zaman çok başarılı olmadı ve Seaside ortaya çıkana kadar, Smalltalk çevrelerinde düzgün bir web çerçevesi kabul görmedi. Bu arada Java EE, onu tanıtan çılgın hayranlarla başlayan ve sonunda sıkılıp Ruby'ye taşınmasıyla başlayan tam bir kabul yaşam döngüsüne sahip oldu; -}

    İronik bir şekilde, Seaside, bilişseller arasında biraz fikir paylaşımı almaya başlıyor, bu nedenle Smalltalk'ın bunu sürdüğünü görebiliriz. popülerliğe geri dönün.

Bunu söyledikten sonra, Smalltalk, nasıl sürüleceğini çözdükten sonra çok güzel bir sistem.


1
Sınıf kütüphanesi noktasının temelde olmadığını düşünüyorum. Smalltalk ve Ruby'nin ve sınıf kitaplıklarının çok benzer olduğunu biliyorum. Birini öğrenirken yaşadığım herhangi bir sorun, diğerini öğrenmiş olurdum. Önce daha fazla yakut yapmak, Smalltalk kitaplıklarının öğrenilmesini çok daha kolay hale getirdi. Çoğu yerde oldukça benzerler. Sınıf kitaplığı veya dil hakkında hiçbir şeyin Smalltalk'ı Ruby'den daha zor hale getirdiğini düşünmüyorum.
Sean T Allen

2
Hem VW hem de VA Smalltalk, sınıf kütüphanelerinin boyutu nedeniyle dik bir öğrenme eğrisi için bir üne sahipti. O zamanlar bu oldukça geniş bir şekilde yeniden tanımlandı. Smalltalk'ı, çok daha küçük bir sınıf kitaplığına sahip olan Digitalk Smalltalk / V'nin eski bir DOS sürümünden öğrendim. Bunun için kılavuz, PP Ruby kitabı ile hemen hemen aynı boyuttaydı ve bu kitap gibi, sınıf kitaplığı referansı da toplam sayfa sayısının yaklaşık yarısı kadardı. Ancak VW ve VA için sınıf kitaplıkları çok çok daha büyük.
ConcernedOfTunbridgeWells

79

Sabah işe gitmek için evimden çıktığımda, sık sık yolumdan sola veya sağa dönme kararıyla mücadele ediyorum (bir sokağın ortasında yaşıyorum). Her iki şekilde de beni gideceğim yere götürecek. Bir yol beni, trafiğe bağlı olarak muhtemelen en hızlı şekilde ofise götürecek olan otobana götürüyor. Yolun en azından bir kısmında çok hızlı araba kullanıyorum ve işe giderken bir veya iki güzel kızı görme şansım çok yüksek :-)

Diğer yol, tamamen ağaç örtüsüyle çok büyüleyici, rüzgarlı bir arka yolda gitmeme izin veriyor. Bu yol oldukça keyifli ve iki yaklaşımdan kesinlikle daha eğlenceli, ancak bu, ofise otobandan daha geç gideceğim anlamına geliyor. Her yolun faydaları vardır. Çok acelem olduğu günlerde, trafiğe çıksam da genellikle otobanı kullanırım ve ayrıca kaza yapma şansımı da arttırırım (eğer acelemde dikkatli olmazsam). Diğer günler, odunsu yolu seçip ilerleyebilir, manzaranın tadını çıkarabilir ve geç kaldığımı fark edebilirim. Hızlanmaya, bilet alma şansımı artırmaya veya kendim bir kazaya neden olmaya çalışabilirim.

Hiçbir şekilde diğerinden daha iyi değil. Her birinin kendi yararları ve riskleri var ve her biri beni amacıma ulaştıracak.


5
Eyaletler arası hangisi ve ağaç örtülü rüzgarlı arka yol hangisi? lol
Charlie Çiçekler

9
Charlie: Onu zen yapan da budur :)
xofz

32
Ve güzel kızlar hangi dile sahip?
Teneke Adam

25

Sanırım sorunuz biraz noktayı kaçırıyor. Sen sen gerektiğini tercih edilmemelidir öğrenmek ikisini de!

Bir sonraki çerçeveyi (vm, altyapı) gerçekten seçebileceğiniz bir konumdaysanız, o zaman ne kullanacağınıza karar vermeniz gerekir ve uygulamanızın ne yapmaya niyetli olduğu açısından artıları ve eksileri içeren belirli bir soru sorabilirsiniz.

Smalltalk (seviyorum) ve Ruby (seviyorum) kullandım.

Evde veya açık kaynak projesi için sevdiğim her dili kullanabilirim, ancak iş yaparken benimsemek zorundayım.

Ruby'yi (işte) kullanmaya başladım çünkü solaris, linux ve windows (98,2000, xp) altında aşağı yukarı eşit davranan bir betik diline ihtiyacımız vardı. Ruby o zamanlar ortalama joe tarafından bilinmiyordu ve herhangi bir ray yoktu. Ancak dahil olan herkese satmak kolaydı.

(Neden python değil? Gerçek? Bir hafta bir terminal alanımı bir sekmeye dönüştürdüğünde ve niyetler karıştığında meydana gelen bir hatayı avlamak için bir hafta harcadım).

Bu yüzden insanlar Ruby'de giderek daha fazla kodlamaya başladı çünkü çok rahatlatıcıydı, keyifliydi ve gökyüzünde bir bulut değildi.

Paul Graham özetliyor

Kesinlikle doğru, çoğu insan programlama dillerini sadece liyakatlerine göre seçmiyor. Çoğu programcıya başka biri tarafından hangi dili kullanacağı söylenir.

ve

Bilgisayar korsanlarına çekici gelmek için, bir dil, yazmak istedikleri türden programları yazmak için iyi olmalıdır. Ve bu, belki de şaşırtıcı bir şekilde, atılabilir programlar yazmak için iyi olması gerektiği anlamına gelir.

Ve Lisp topraklarındayken LISP'yi smalltalk ile değiştirmeye çalışın

Ruby'nin kütüphaneleri, topluluğu ve ivmesi iyidir

Öyleyse LISP hala Ruby'den daha güçlüyse, neden LISP kullanılmasın? LISP'de programlamaya yönelik tipik itirazlar şunlardır:

  1. Yeterli kütüphane yok.
  2. LISP programcılarını işe alamayız.
  3. LISP, son 20 yılda hiçbir yere gitmedi.

Bunlar ezici itirazlar değil, ancak kesinlikle dikkate alınmaya değer.

ve

Şimdi, güçlü bir dil ile popüler dil arasında bir seçim yapıldığında, güçlü olanı seçmek çok mantıklı olabilir. Ancak iktidardaki fark küçükse, popüler olmanın birçok güzel avantajı vardır. 2005 yılında, Ruby yerine LISP'i seçmeden önce uzun uzun düşünürdüm. Muhtemelen bunu yalnızca optimize edilmiş koda veya tam teşekküllü derleyiciler olarak işlev gören makrolara ihtiyacım olsaydı yapardım.


4
Ahem, "son 20 yıl"?!?! Sanırım "son 51 yılı" kastettin. :-)
DigitalRoss

1
@DigitalRoss - 20 ile giderdim; LISP aslında bir noktada bazı çevrelerde oldukça büyüktü, ancak (ViaWeb'e rağmen) 1980'lerden beri gerçekten yeni 'katil uygulamalar' görülmedi. Ancak, LISP tabanlı teknolojiler aslında 60'larda, 70'lerde ve 80'lerde oldukça fazla fon aldı; insanlar LISP'in uzunca bir süredir yerlere gittiğini düşünüyorlardı.
ConcernedOfTunbridgeWells

2
@DigitalRoss evet, devamlar, çoklu yöntemler, makrolar, kuyruk çağrısı optimizasyonları gibi şeyleri görmezden gelirseniz, kafamın üstünden.
Frank Shearar

Bu tür argümanları her zaman daha az kabul edilebilir buluyorum. En iyi dil yoktur ve herhangi bir yazılım mühendisi lisp, schema, ruby, php veya c veya her neyse yapabilir. Ve yapamazsa 2 hafta içinde öğrenebilir. Dil sadece bir araçtır. Onunla yatmana gerek yok.
Edgar Klerks

22

Tam tersini söyleyebilirim: Smalltalk sözdizimi, en basit ve güçlü programlama dili sözdizimlerinden biridir.


7
Sadece amin demek istiyorum!
Schpaencoder

19

Dillerin birbirine çok benzediği doğru. Bunu yorumlamanın basit yolu, Ruby'ye Smalltalk cover grubu demek. Daha makul yorum, Smalltalk'ın kapalı sisteminin onu izole etmesidir, Ruby'nin Unix ekolojisine katılımı ve güneşin altındaki her dilden özellikleri alma alışkanlığı, ona sonsuz derecede daha yumuşak bir benimseme eğrisi ve Git gibi kickass araçlarıyla zahmetsiz entegrasyon sağlar.

Giles Bowkett


17

Bil bakalım bunu kim söyledi? (alıntı yakın, belki kesin değil): "Her zaman Smalltalk'ın Java'yı yeneceğini düşünmüştüm. Sadece bunu yaptığında 'Ruby' olarak adlandırılıp adlandırılmayacağını bilmiyordum."

Davul rulosu ...

...

Cevap ... Kent Beck



15

Ruby'de Smalltalk'ta olmayan ne var?

  • Kütüphane setini zenginleştiren büyük platformlar (IronRuby ve jRuby) tarafından sağlanan büyük, güncel destek
  • Yıllardır ülke çapında dolaşan ve dillerinin müjdesini vaaz eden Dave Thomas gibi Evanjelistler. Dave'i Java konferanslarında gördüm Java bilmediğini ve Ruby'yi tercih ettiğini belirten .
  • Kitap raflarında güçlü, güncel gayrimenkul
  • Ruby'nin yaratıcısı, programcı hakkında düşündüğünü söyledi: Ruby'nin sözdizimi bu Zen çekiciliğine sahip gibi görünüyor. Sabitlemek zor, ancak fanları harekete geçiriyor gibi görünüyor.
  • Gibi yaratıcı, dinamik sunumlar Giles ve akıl paylaşımı sağlayan bu

Sanırım fikriniz iyi anlaşılıyor. Bir arkadaşının söylediği gibi, Ruby Smalltalk'a kıyasla "yeni bir şişede eski şarap" olabilir. Ancak bazen yeni şişe önemlidir. Bir şarabın doğru zamanda doğru yerde olması gerekir.


İlk mermi noktanız yanlış. JVM ve .NET VM desteği Smalltalk için zırvalık anlamına gelir çünkü her uygulama halihazırda bir VM üzerinde çalışmaktadır (başka nasıl birden fazla işletim sisteminde bu kadar iyi çalışabilirler, değil mi?) Ruby'nin sözdizimi Smalltalk'ınkinden daha karmaşıktır. Sorunun bir parçası olduğunu tespit etmek zor;)

1
Evet, bazı insanların jruny / ironruby kullanmasının nedenlerinden biri, ruby ​​vm'nin görece olgunlaşmamışlığıdır, ancak .net / jvm için başka yerde eşdeğerleri olmayan ve kullanmak isteyebilecekleri gerçekten güzel kütüphaneler vardır. bazı işletmeler için java / c # kod tabanlarıyla bağlantı kurmak çok daha kolaydır.
Roman A. Taycher

2
Elbette, "kitap raflarındaki güçlü, güncel gayrimenkulü" beslemeyi canlı, dinamik bir ortam olmadan karmaşık bir dilin bir cezası olarak buldum. C ++ ile kodladığımda, çok sayıda kitap dolusu rafım vardı. Smalltalk'a (Ruby aracılığıyla) geçtikten sonra, onları bir parça bile özlemiyorum. Çoğu rehberlik için IDE'nin kendisine güvenerek, görseli hızlı bir google aramasından daha fazlası için nadiren bırakıyorum ve Game of Thrones serisiyle bu raftaki gayrimenkullerin bir kısmını nezihleştirdim;)
Sean DeNigris

14

Beni aşar. Ruby'yi incelemek ve onu nasıl sevdiğimi görmek için ufak tefek projeler yaparak bir yıl geçirdim. Sanırım ben bir Smalltalk bağnazıyım çünkü Ruby ile çalışmak için her oturduğumda iç çeker ve "Bunu Smalltalk'ta yapmayı gerçekten tercih ederim" diye düşünürdüm. Sonunda pes ettim ve Smalltalk'a geri döndüm. Şimdi daha mutluyum. Daha mutlu daha iyidir.

Elbette hangisi "Neden?" Sorusunu akla getiriyor. Belirli bir sırada değil:

  1. Çünkü IDE, şimdiye kadar çalıştığım her şeyi mahvediyor. Bu, IBM ana bilgisayarlarındaki ISPF'den Microsoft'un Visual'a (. *) Kadar bir dizi platformu içerir, Visual Basic 4-6, Visual C ++ (çeşitli enkarnasyonlar), Borland'ın Turbo Pascal ve torunları (örn. Delphi) ve DEC ile ilgili şeyler hem karakter modunda hem de X-Windows altında makineler.
  2. Çünkü görüntü yaşamak için güzel bir yer. Orada istediğimi bulabilirim. Bir şeyi nasıl yapacağımı çözemezsem, görselde bir yerde yapmaya çalıştığım şeyin bir örneği olduğunu biliyorum - tek yapmam gereken, onu bulana kadar avlanmak. Ve kendi kendini belgeliyor - bir şeyin nasıl çalıştığının ayrıntılarını görmek istiyorsanız, ilgilendiğiniz sınıfta bir tarayıcı açmanız yeterlidir, yönteme bakın, işte böyle çalışır. (Tamam, sonunda ilkel diyen bir şeye çarpacaksınız ve sonra "burada ejderhalar var", ancak genellikle bağlamdan anlaşılabilir.) Ruby / C ++ / C'de benzer şeyler yapmak mümkündür, ancak bu kadar kolay değildir. Kolay daha iyidir.
  3. Dil minimal ve tutarlı. Üç tür mesaj - tekli, ikili ve anahtar kelime. Bu, yürütme önceliğini de tanımlar - önce tekli mesajlar, sonra ikili mesajlar, sonra anahtar kelime mesajları. İşlere yardımcı olmak için parantez kullanın. Küçük sözdizimi, gerçekten - hepsi mesaj gönderimleriyle bitti. (Tamam, atama bir mesaj gönderimi değil, bir operatördür. Aynı şekilde 'dönüş' operatörü (^). Bloklar köşeli parantez çiftleri ([]) ile çevrelenmiştir. Orada bir veya iki başka 'sihirli' bit olabilir, ama çok az ...).
  4. Bloklar. Evet, biliyorum, onlar Ruby'de (ve diğerleri), ama haydi, Smalltalk'da onları kullanmadan programlayamazsınız. Sen ediyoruz zorla nasıl kullanılacağını öğrenmek için. Bazen zorlanmak iyidir.
  5. Ödün vermeden nesneye yönelik programlama - veya bu konuda alternatifler. Hala aynı eski şeyi yaparken "nesneler yapıyormuş" gibi davranamazsınız.
  6. Çünkü beyninizi esnetecek. Hepimizin alıştığı rahat yapılar (eğer-öyleyse, yap-yap, (;;), vb.) Artık orada değil, bu yüzden Yeni Bir Şey Öğrenmelisiniz. Yukarıdakilerin (ve daha fazlasının) eşdeğerleri vardır, ancak farklı düşünmeyi öğrenmeniz gerekecek. Farklı olarak iyidir.

Öte yandan bu, ana bilgisayarların dünyayı yönettiği günlerden beri programlama yapan bir adamın başıboş gezintileri olabilir, kör edici kar fırtınalarında çalışmak için beş mil yürümek zorunda kaldık, her iki yönde de yokuşlar ve bilgisayarlar hafıza için çörek kullandı. Ruby / Java / C / C ++ / ile ilgili hiçbir şeyim yok, hepsi bağlamda kullanışlıdır, ancak bana Smalltalk verin veya bana verin ... peki, belki Lisp veya Scheme öğrenmeliyim veya ... :-)


1
Sorunun "Ruby'de Smalltalk'ta olmayan nedir?" Olduğunu düşündüm.
Mauricio

1
@Mauricio ve @Bob cevapladı: "Beni yener."
systemovich

1
Zekice ifade et, onu seviyorum! Daha az popüler olmasına rağmen bir şey neden daha iyi olamaz ? Kabul etmiyorsan Smalltalk ;-)
Amos M. Carpenter

@aaamos - teşekkür ederim. Smalltalk'ın popüler olmamasının nedeninin # 6 ve daha az bir ölçüde # 5 olduğundan şüpheleniyorum. Smalltalk, annenin "aynı-eski-sözdizimi" yeri değil - farklı. Örneğin, C'yi biliyorsanız, C ++, Java ve C # hepsi oldukça rahat hisseder. Ve Smalltalk davranışının "nasıl" ve "neden" i biraz kafa karıştırıcı olabilir. (Yeni Smalltalker eğer tehlike edeceğiz gelmez onların başı gibi hissediyorum kapalı bükülmüş oluyor, ya onlar hemen grokked, ya da sadece anlamıyorsun çok parlak konum. Evet, acaba nasıl "parlak "bir şey hisseder :-).
Bob Jarvis - Eski Monica

Pry (ve eklentiler) ile hata ayıklamayı ve kaydedilen dosyaların yeniden yüklenmesiyle canlı kodlamayı denediniz mi? Yaşadığım en iyi programlamaydı.
Rivenfall

11

Smalltalk: insanlar eğer Doğru: [düşün] ifFalse: [düşünmemek]

Ruby: İnsanlar geriye doğru düşünmedikçe ileriye doğru düşünür

1) Smalltalk'ın mesajlarla RPN benzeri kontrol akışı Lisp'e benzer - normal ve havalı ama insanları tuhaflaştırır.

Blah do - 2) Ruby insanlar insan konuşmak deyimsel yolu kullanarak kod yazmak sağlar sürece için bir neden yok.

update Smalltalk örneğini daha yasal kod olacak şekilde yeniden yazdı ..


4
İngilizce muhtemelen programlama talimatlarını ifade etmenin en kötü yollarından biridir. Demek istediğim, bırakın bilgisayarlar, insanlar arasında yeterince kafa karışıklığına neden oluyor. Falan mı? Kim falan yapmalı? Ne üzerine? Ayrıca Ruby kodunuz hiçbir anlam ifade etmiyor ve geçerli değil. Olmalıdır: Ruby: people.think_forwards, people.think_backwards değilse? ve SmallTalk şöyle olmalıdır: Smalltalk: (insanlar think_forwards?) ifTrue: [people think_forwards])
donalbain

2
Ayrıca, aBlock'u ve ifTrue: çağıran bloğu değerlendiren Kernel-Methods Kategorisinden BlockClosure sınıfına: aBlock adlı bir yöntemi de ekleyebilirsiniz.
Ricardo de Cillo

3
@donalbain, bunların gerçek programlama ifadeleri olduğunu değil, ifade sırasının göstergesi olduğunu önermedim. Cevabımı yazdığımda bunun oldukça açık olduğunu düşündüm.
Andy Dent

1
@donalbain Çok doğru, aslında var. Daha fazla Ruby benzeri kontrol akışı github.com/randycoulman/SuffixConditionals adresinde yaşıyor . Andy, kodunuzda bir hata var - geri kalmış insanlar düşünmez, bu yüzden #ifFalse: ;-P
Sean DeNigris

Smalltalk'ın kötü pazarlaması var: garip sözdizimi ve görüntü tabanlı. Ruby daha normaldir ancak iyi bir sözdizimi de vardır. Java, istemcilere güven veren yazılır ve derlenir. Bir programcı olarak kendi "pazarlamamı" etkilemiyorsa, garip bir sözdizimi öğrenmekten ve kullanmaktan çekinmem.
Rivenfall

8

Ruby, günümüzün en popüler dilidir. Onunla oluşturulmuş bir yazılımı pazarlamak 70'lerde geliştirilen bir dilden daha kolaydır.


"70'lerde geliştirilmiş" olmasının, geliştirilmesinin ne kadar zor olduğuyla hiçbir ilgisi yok.
gracchus

3
ve benim yorumumun geliştirmeyle ilgisi yok.
coder1

3
Üzgünüm, yorgun olduğumda yanlış anlama eğilimindeyim, bu yüzden tatil zamanımı zorbalığa uğradığım insanlardan özür dileyerek geçirmem gerekiyor.
gracchus

8

Topluluk! Ruby ve özellikle Rails'in harika bir topluluğu var. Smalltalk ile uğraşırken, Smalltalk hakkında çok fazla ekran yayını, makale, blog yazısı vb. Yazılmamış gibi görünüyordu.


7

İlk satırınızdaki soruyu yanıtladınız: "Ruby popüler hale geliyor"

  • Bir var çok ilginç modüllerin, projeler ve böyle etrafında dayalı Ruby.
  • Ruby'de bir şey yapmakta sorun yaşıyorsanız, bir yerde yardım bulmak önemsiz olacaktır.
  • Ruby şu anda birçok bilgisayarda yüklü (varsayılan olarak OS X'e, birçok Linux dağıtımına dahildir ve Windows için iyi yükleyiciler vardır) - Kullandığım herhangi bir makinede varsayılan olarak smalltalk'ın kurulu olduğunu görmedim ..

Bir dilin diğerinden üstün olup olmadığının önemsiz olduğunu söyleyebilirim .. Örnek olarak, PHP şimdiye kadarki "en iyi" dil olmayabilir, ancak yine de onu Ruby on Rails (oluşturmak için "daha iyi" bir araç) üzerinden kullanmayı düşünürdüm. web siteleri) çünkü çok yaygın.

Temel olarak, bir dilin belirli artıları ve eksileri, onu çevreleyen her şeyden, yani topluluktan çok daha az önemlidir.


7

Ruby (veya başka bir dil) Smalltalk'tan (veya başka bir dilden) daha popülerdir çünkü kaotik bir evrende yaşıyoruz. Zekaya:

  • Dave Thomas'ın kendisinden, "'On Dakikada Nasıl Blog Oluşturulur' videosundan sonra ... Ruby güzel bir küçük niş dil olmaktan, 'Rails uygulamalarını yazdığınız bir dil' olmaya geçti" "( Ruby Konferansı 2010 açılış konuşması ).
  • Erken Smalltalk satıcıları engelleyici bir şekilde ücret aldı
  • Smalltalk, 30 yıl önce icat edildiği için (zamanından önce), birçokları için eski, "ölü" bir dil (FORTRAN gibi)
  • şirketler Smalltalk'ı , kullanımını gizleyecek kadar rekabetçi bir avantaj olarak görüyor

OO özelliklerinde diller benzer olsa da, Smalltalk'ın katil avantajı canlı, açık ortamdır (çok yanlış anlaşılan 'görüntü'). Smalltalk'taki bu programlama örneğini kontrol ettikten sonra , tartışma biter .


5

Benim için bu, Ruby'nin sahip olduğu şey değil, Ruby'nin sahip olmadığı durumdur. Ve sahip olmadığı şey, bir sanal makineye ve eksiksiz bir ortama ihtiyaç duymasıdır.

Smalltalk harika - OO kavramlarını öğrendiğim yer burası, ancak kullanım kolaylığı için Ruby'ye gidiyorum. Ruby kodunu en sevdiğim düzenleyicide yazabilir ve komut satırından çalıştırabilirim.

Bu yüzden, benim için Smalltalk yerine Ruby'yi seçtim.


Ama devam edin ve Smalltalk'ı da öğrenin.
Simon Knights

Düzenlememe göre: GNU Smalltalk, favori düzenleyicinizi kullanmanıza ve komut satırından çalıştırmanıza izin verir.
two-bit-fool

Evet - Teşekkürler - bir baktım ve bir kopyasını indirdim!
Simon Knights

2
Ayrıca harika bir web çerçevesine de sahip değil. Raylar iyi, ama Deniz Kenarı değil
Stephan Eggermont

3
Herhangi bir smalltalk platformu, favori düzenleyicinizde smalltalk kodu yazmanıza izin verir. Ama canlı dünyadan kopmaktan hoşlanıyorsanız, bu sizin seçiminizdir. Sadece bunu yaparak üretkenliğin yaklaşık% 90'ını kaybettiğinizi bilin.
Igor Stasenko

5

Bir süredir Ruby ile çalışan herkesin Smalltalk'a olan derin borcunun farkında olduğunu düşünüyorum. Bu insanlardan biri olarak Smalltalk'a kıyasla Ruby'nin nesini seviyorum? Kesin bir dil perspektifinden bakarsak, bu şekerdir. Ruby kasıtlı olarak çok şekerli bir sözdizimi dilidir, oysa Smalltalk çok az sözdizimi içeren bir dildir. Ruby, aslında Perlish sözdizimi şekeri içeren Smalltalk nesne modelidir. Şekerden hoşlanıyorum ve bunun programlamayı daha eğlenceli hale getirdiğini görüyorum.


1
Ruby'nin Smalltalk'tan farklı bir nesne modeli vardır. "Etkilendi" derdim ama aynısı değil. Ruby programlarını, yeni sınıflar oluşturma ihtiyacını ortadan kaldırarak prototip tabanlı bir şekilde yazabilirsiniz. Bu alışılmadık bir durum olsa da, Smalltalk bunu desteklemiyor.
Dafydd Rees

2
Smalltalk'ı severim, çünkü ihtiyacım olduğunda kendi sözdizimi şekerini icat edebilir ve kullanabilirim. Zaten her şeyi minimum sözdizimi ile yapabiliyorsanız, şekere gerek yoktur.
Igor Stasenko

5

Ruby ile oldukça kolay bir iş bulabilirsiniz. Smalltalk'ı gerçekten sevmeme rağmen, Smalltalk nişine girmek neredeyse imkansız. Etrafta işler var, ancak popüler olduğunda içeri girmediyseniz, şimdi neredeyse imkansız.

Diğer tüm nedenler önemsiz kalıyor çünkü bir dili doğru bir şekilde öğrenmek için bolca zaman harcamanız, gerçek çalışmaya odaklanmanız gerekiyor. Bağımsız olarak zengin değilseniz, bunu yapmanın en iyi yolu iş yerinde ona maruz kalmaktır.


4

Çünkü Smalltalk dağıtımları 1000USD'nin katları şeklinde fiyatlandırılırken Ruby ücretsizdir.


4

Ruby, Smalltalk, Arap rakamları Roma rakamları gibi. Aynı matematik, daha kolay sözdizimi.


3
Bu yanlış yol. Smalltalk çok daha kolay sözdizimine sahiptir.
Stephan Eggermont

1
Sadece RPN'de düşünürseniz. Çoğu insan yapmaz. Aslında bu gönderinin oyları yükselip alçaltması gerçeğiyle gurur duyuyorum.
sal

12
RPN? Java: foo.bar () Perl: foo-> bar () Python: foo.bar () Smalltalk: foo bar Daha basit bir sözdizimi dışında, Smalltalk'ın RPN olduğunu iddia ediyorsanız, tüm büyük OO dillerini söylemelisiniz "RPN" dir.
Randal Schwartz

2
Ruby anahtar kelimelerinin miktarını Smalltalk anahtar kelimelerinin miktarıyla karşılaştırmanız yeterlidir. Ve bu sadece başlangıç! Smalltalk'ın sözdizimi bir peçeteye uyar, bunu Ruby ile yapmayı deneyin ve zor anlar yaşayacaksınız.
froginvasion

3

Biraz Smalltalk yaptım - IDE hatırladığım bir şey - Ruby'nin iyi bir IDE desteği var mı?


Evet. TextMate harika, Eclipse desteği iyi ve Emacs'ın bunun için uygun bir modu var.
Pete

6
"TextMate / Eclipse / Emacs" ın Smalltalk'ın yerleşik IDE'si ile karşılaştırılabilir olduğunu düşünüyorsanız, gerçek bir Smalltalk görmediniz!
Randal Schwartz

Bugün oluşturduğum sistemlerde IDE'lerden seç -> 'Göster'i hala özlüyorum - bir İstisna: SQL Server'ın SQL geliştirme araçları bir seçimi vurgulamanıza ve bunu bir sorgu olarak yürütmenize izin verir. Smalltalk hiçbir şey değilse bile etkilidir!
ConcernedOfTunbridgeWells

Smalltalk it IMHO ArachnoRuby'ye en yakın IDE. Herhangi bir Emacs / TextMate vb .'den daha iyi entegre edilmiştir. Bununla birlikte, insanlar birkaç pencerenin açık çeşitli araçlar çalıştırmasından oldukça memnun görünüyor Saygılar
Friedrich

@Friedrich Re "İnsanlar birkaç pencere açıkken çeşitli araçlar çalıştırdığından oldukça memnunlar" ... "Programlama dilleri size sağlayamayacaklarını istememenizi öğretir. Bir dilde düşünmelisiniz ..." - Paul Graham
Sean DeNigris

3

Ruby'yi kullanın çünkü iş ayakları olabilir, Smalltalk yok.

Size kişisel deneyimlerimden söyleyebilirim. Hala Smalltalk kullanıyorum, onu seviyorum ve birkaç tat kullandım. Smalltalk harika bir dil olmasına ve bahsettiğiniz her şey olmasına rağmen, ortalama bir CIO / CTO'yu Smalltalk'ı yeni bir projede kullanmaya ikna edemezsiniz. Tabii ki, muhafazakar bir CIO / CTO'yu Ruby kullanmaya ikna etmekte zorlanabilirsiniz. Sonunda, uzun vadeli ticari destek ve gelecekte sistemlerinizi destekleyebilecek sokak dışı çalışanlar bulma yeteneği istiyorsanız çok dikkatli olmalısınız. Örnek olarak, Smalltalk 90'ların başında gerçekten büyük bir şeydi ve IBM, 90'ların sonlarında buna büyük yatırım yaptı. IBM Smalltalk, tüm iş uygulamaları için bir sonraki dil olacaktı. IBM, Smalltalk'ı ana bilgisayar sistemleri dahil her şeye koydu. Java popüler oldu, pazarı ele geçirdi, ve Smalltalk niş bir oyuncu oldu. Bir yıldan uzun bir süre önce IBM, dili terk etti (terimleri gün batımı). Ayrıca, Geçmişe bir göz atın. Smalltalk arenasının ilk büyük ticari oyuncularının bulunduğu ParkPlace ve Digitalk birleşti ve sonra iflas etti.


Smalltalk'ın "iş ayakları var" - zaten doğru geçmişe sahipseniz ve doğru fırsatları bulabilirseniz ...
Dafydd Rees

Unvanınız çok abartılı. Tüm işler dar görüşlü CTO'larla sınırlı değildir. Paul Graham'ın ana akım bir dilin daha güvenli olduğu efsanesini iyice çürüttüğü zaman dediği gibi: "Sivri saçlı patronu Lisp'te bir şeyler inşa etmenize izin vermeye ikna etmekte zorlanacaksınız ... Ama eğer bunu yapmayan bir başlangıç ​​için çalışırsanız ' Henüz sivri saçlı patronlara sahip değilseniz, ... rakiplerinizin medyan dile hareketsiz bir şekilde yapıştırılmış ve asla eşleşemeyeceği teknolojiyi kullanabilirsiniz. "
Sean DeNigris

2

Hem Smalltalk hem de Ruby'yi seviyorum - ancak Ruby'nin günlük yaptığım şeye daha uygun olduğunu ve kalbime daha yakın olduğunu (pratik olarak konuşursak) buldum. Ruby, Smalltalk'ın sunmadığı neyi sunar?

  • Metin tabanlı komut dosyası
  • Düşük uygulama gereksinimleri (daha fazla yerde çalışır)
  • Öğrenmesi ve gerekçelendirmesi daha kolay (Perl ve Python programcıları hiçbir sorun yaşamayacak
  • Programları taşımak daha kolay - metin dosyaları!
  • Yerel ortamla iyi bir arayüz oluşturur
  • Java her yerde çalışır, jRuby çalışır ...
  • Daha büyük ve çok daha aktif topluluk

Bazıları gst (GNU Smalltalk); sorunlar hala devam ediyor.


Ruby, Smalltalk'ın çalışmadığı hangi "yerleri" çalıştırır? Örneğin Pharo Smalltalk, bir işletim sistemi olmadan Mac, Windows, Unix üzerinde çalışıyor (Ruby bunu yapabilir mi?) Ve çeşitli mobil platformlara (Android, iOS) aktarılıyor.
Sean DeNigris

FreeBSD ve OpenBSD'ye ne dersiniz? (hayır, cevabı bilmiyorum ...) Solaris ve HP-UX ve OpenVMS'ye ne dersiniz? Ayrıca Android veya iOS'ta Ruby veya Smalltalk kullanmak istemem. En büyük sorun işletim sistemi değil, bellek: Ruby, Smalltalk'tan çok daha az bellekte çalışacaktır.
Mei

Görünüşe göre, bir FreeBSD sanal makinesi var (OP'nin son maddesine forum.world.st/SOB-minutes-3-6-12-td4453817.html bakın ). Diğerlerinden emin değilim. Android ve iOS'a gelince, Smalltalk'ı kullanmak isteyip istemediğinize göre, mevcut olup olmadığından farklı bir soru var ;-) İnsanlar, bazı umut verici ekran videolarını gördüğüm bu platformlarda başarılı deneyler yayınlıyorlardı.
Sean DeNigris

Bu bana da hatırlattı - Palm için Smalltalk'ı hatırlıyorum.
Mei

2

Sizi daha güçlü ve daha hızlı kılan her şeyi kullanarak meydan okumalarınızı aşın.

için bize ev çerçevesinde biraz, gerçekten deniz üstünde bizim süper güç yerleşik.

RoR topluluğunu seviyorum, doğru tutuma sahip. Bu çok çok değerli. Ama aynı zamanda teknolojik olarak deniz kenarı sizi daha karmaşık sorunlara karşı daha güçlü kılıyor.

Açık kaynaklı şeyleri kullanarak harika sahil web uygulamaları yapabilirsiniz.

dabbledb, deniz kenarına dayalı bir sartuptı ve hey! Avi bu yıl haziran ayında twitter'a sattı!

Başkalarının sizin inisiyatifinizi onaylamasını beklemenize gerek olmadığını söylüyorum.

Sadece bunun için gidin. Bitirin. Bize işe yaradığını göster.

Yalnız değilsin. Aynı gemideyiz.



0

Bence sorunun bir kısmı, geliştirme ortamı çalışma zamanıdır. Bu çok fazla güç verir, ancak aynı zamanda daha büyük bir öğrenme eğrisi sunar.

Buraya bir merhaba dünya öğreticisi.

Bu, bir metin düzenleyiciyi nasıl açacağımı ve metni kopyalayıp yapıştıracağımı, kaydet düğmesine basıp bir derleyiciyi nasıl çalıştıracağımı bilmem gereken diğer dillerden çok farklı. Çevreyi nasıl kullanacağımı bilmek zorundayım. Bu eğitim bana çalıştırabileceğim temel bir programın nasıl oluşturulacağını bile göstermiyor (ki bu muhtemelen bu öğreticinin bir hatasıdır).

Diğer dillerin çoğundan daha yüksek bir maliyet kesinlikle vardır.

Çoğu dilde, gösterebilecekleri göz alıcı güzel kodlar vardır. Smalltalk ile bunu görmedim. Ayrıca Smalltalk için bazı damgalamalar olduğunu düşünüyorum çünkü çok uzun zamandır ortalıktaydı ve hala nispeten belirsiz.


Sayfanın altında: kendi kendine bilgilendir: 'Merhaba Dünya!'. Öğrenme eğrisinin daha dik olduğu konusunda hemfikirim, ancak "merhaba, dünya" yı kanıt olarak kullanmak bence çok fazla. :)
jop

Amacım merhaba workld gibi basit bir şeyin nasıl yazılacağını görmekti, öğretici size hangi pencereleri açmanız gerektiğini söylemelidir. Pencerelerin adları ve kullanımları tahmin edebileceğim bir şey değil. Sadece bahsettiği pencereleri bulmak için etrafta biraz tıklamamı gerektirdi.
Steve g

1
Düzenlememe göre: GNU Smalltalk, favori düzenleyicinizi kullanmanıza ve komut satırından çalıştırmanıza izin verir.
two-bit-fool

ruby -e "merhaba dünya" koyar
Marcel Valdez Orozco

1
pharo [görüntü dosya adı] -e "kendi kendine bilgi ver: 'merhaba dünya'"
Sean DeNigris

0

Bence EN BÜYÜK fark, Ruby'nin KULLANIM açısından perl'e çok daha benzemesi. Smalltalk hiçbir zaman "komut dosyası yazma" dillerinde bir yer edinmedi.

Sanal makine gerçekten harika ve umarım Ruby'nin buna benzer bir şeye sahip olacağını umuyorum, böylece Ruby'de Ruby'de yazılan her şeyi bellek alanında bir nesne olarak ele alabiliriz, ancak o zamana kadar Ruby'nin kısa sözdiziminden, sadece küçük bir komut dosyası yazın ve daha sonra tekrar kullanın. Ruby, perl'in tüm avantajlarına sahipti ve OOP, smalltalk'a perl'in OOP hackinden çok daha benzer.


0

Jonke'nin cevabından daha ileri gideceğim ve şu anda çok güçlü bir topluluğa sahip, neredeyse her zevke uyacak kadar çok sayıda dil olduğunu ve bunların bir alt kümesinin genel kabul gördüğünü söyleyebilirim (yani yöneticiniz bunları kullanmanıza izin verecektir. de çalışın).

Bir dilin temellerini öğrenmek kolaydır, ancak onu gerçekten etkili bir şekilde kullanmak için platformu ve araçları, sözdizimini ve deyimleri öğrenmek için yeterince zaman ayırmanız gerekir. IIRC, McConnell gerçekten yetkin olmanın yaklaşık üç yıl sürdüğünü iddia ediyor.

Bu şeyler göz önüne alındığında, LISP ve Smalltalk gibi dillere çok zaman ayırmayı haklı çıkarmak zor, ancak bunlar ilginç ve belki de bakılması eğitici.


0

Tartışmaya geç gelen bir kişi olarak, Smalltalk ve Lisp ile ilgili temel sorun, bunları paylaşımlı barındırmada CGI veya FastCGI ile çalıştıramamaktır.

Yıkanmamış kitleler, kullanmak için VPS veya özel sunuculara ihtiyaç duyarlarsa bunları asla kullanmayacaklar. IMHO Seaside neredeyse her şeyden üstündür, ancak Dreamhost veya Webfaction üzerinde çalışacak mı?


Bu şimdi mesela Dijital Okyanus $ 0,007 için VPS en sunduğunu pek bir bariyerin hala / saat olup olmadığını merak
Sean DeNigris
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.