Soru Smalltalk'ı öğrenmeye başlar mısın? [kapalı]


Sorularım basit!

  1. Zamanınız varsa Smalltalk'ı öğrenmeye başlayacak mısınız? Niye ya? Neden olmasın?
  2. Smalltalk'ı tanıyor musunuz? Neden Smalltalk'ı öneriyorsun? Neden olmasın?

Şahsen ben bir Ruby on Rails programcısıyım ve bunu gerçekten çok seviyorum. Bununla birlikte, Smalltalk'ı düşünüyorum çünkü çeşitli blogları okudum ve bazı insanlar Ruby'yi "Smalltalk Light" gibi bir şey arıyor. Smalltalk ile ilgilenmemin ikinci sebebi: Sahil.

Belki birisi daha önce aynı geçişi yaptı?

DÜZENLE: Aslında, Smalltalk / Seaside hakkında beni en çok heyecanlandıran şey, aşağıdaki WebDevRadio Bölümü: Bölüm 52: Seaside'deki Randal Schwartz (diğer şeylerin yanı sıra)


76
2017-09-29 14:57


Menşei




Cevaplar:


Ruby'yi seviyorsan, muhtemelen Smalltalk'ı beğeneceksin. IIRC Seaside taşındı Değerli Taş VM Bu onların Gemstone / S OODBMS parçasıdır. Bu Ruby'den çok daha iyi iplik desteğine sahiptir, bu yüzden yüksek hacimli bir sistem için daha iyi bir arka uçtur. Bu, yakından bakmak için iyi bir sebep olabilir.

Smalltalk öğrenmek için nedenler:

  • Gerçekten çok güzel bir programlama ortamı. Kafanızı bir kez çevirdikten sonra (C ++ ya da Java için kullanılan insanlar için bir kültür şoku yaratma eğilimi gösterir) çalışmak için gerçekten iyi bir ortam olduğunu görürsünüz. Eski Digitalk kullananlar kullanması son derece hoş bir sistem. Eski XP ve O-O guru türlerinin çoğu gibi Kent Beck ve Martin Fowler Smalltalk'ta dişlerini güne çevir ve bazen eski güzel günler için özlem duyulabilir (Bu alıntı için Frank Shearer'a teşekkürler, +1) - Bu platformda gelişen çevik gelişme.

  • Tarihin en verimli geliştirme platformlarından biridir.

  • Birkaç olgun uygulama var ve orada şaşırtıcı derecede büyük bir kod tabanı var. Bir noktada, geliştirici üretkenliği ve pazara çıkış zamanının oldukça büyük olduğu finansal piyasa çevrelerinde oldukça moda oldu. Uygulama geliştirme için uygun olan, ticari olarak desteklenen yüksek seviyeli bir dil istiyorsanız, 1990'ların ortalarına kadar şehirdeki tek oyun (LISP'nin olası istisnasıyla) az ya da çok oldu.

  • Dağıtım kolaydır - sadece görüntü dosyasını uygun dizine bırakın.

  • Gerçekten bir sebep değil, ama Dört Kitap Çetesi örneklerinden birkaçı için Smalltalk kullanıyor.

Smalltalk'ı öğrenmemenin nedenleri:

  • Bir niş pazarının bir şey. İş bulmakta zorluk çekebilirsiniz. Ancak eğer bir çeşit üretiyorsanız sunucuların olduğu .com uygulaması Bu bir sorun olmayabilir.

  • Birçok kişi tarafından eski bir sistem olarak görülüyor. Platformda nispeten az yeni bir gelişme var (deniz kenarı bir rönesansa yol açıyor gibi görünüyor).

  • Geleneksel kaynak kontrol sistemleriyle (en azından 90'lı yılların ortalarında kullanıldığı zaman) güzel bir şekilde oynama eğiliminde değildir. Bu durum hala olabilir veya olmayabilir.

  • Biraz insular ve kendi başına oynamayı sever. Python veya Ruby, zeminden entegrasyon için üretildi ve daha karma davranmaya eğilimli ve dolayısıyla 3. parti yazılımlarla entegrasyona daha kolay. Ancak, diğer çeşitli ana akım Sistemler bu tür bir düzgünsüzlükten daha büyük veya daha düşük bir dereceye sahiptir ve bu da onların kullanımını çok fazla engellememektedir.


57
2017-09-29 15:51



Ruby de Taş'a taşındı: buna Maglev deniyor: infoq.com/news/2008/04/maglev-gemstone-builds-ruby - brian d foy
“Geleneksel kaynak kontrol sistemleri ile güzelce oynama eğiliminde değil” derken neyi kastediyorsunuz? - detly
Geleneksel bir Smalltalk saklanan kaynak kodunun biçimi, resmin içine ve ilişkili kaynaklara gömülmesini ve dosyaların değiştirilmesini ifade eder. Program dosyalarının güzel temiz bir setini almadınız (örneğin) C. Smalltalk sistemleri, (a) tescilli, (b) pahalı olma eğilimi olan, uzmanlaşmış smalltalk uyumlu kaynak kontrol sistemleri gerektirme eğilimindeydi. c) diğer her şeyle uyumsuz. - ConcernedOfTunbridgeWells
Ve umarım Monticello, bu konulara (a) ve (b) hitap eder. Squeak zaten ağır bir şekilde kullanıyor ve SqueakSource onu kullanan birçok projeye sahip. Yine de siğiller var. Git-Monticello projeleri aslında kullanımda olduğunda, (c) umarım aynı zamanda yol kenarına da düşer. - Frank Shearar
Genelde cevabı severim ama Smalltalk üçüncü parti yazılımlarla iyi oynar. Birçok API'yi görmemeniz gerçeği, onları teknik olarak entegre edemediğinizden değil, çünkü bir niş (daha az insanın harici yazılıma ihtiyaç duyması). Bu etkinin ikincil bir nedeni (aynı zamanda teknik de değil), küçük ölçekli diğer küçük-eğlenceli teknolojilerden ziyade, küçük ölçekli sorunların üstesinden gelmeyi tercih edecekleridir. - Sebastian Sastre


Eh, sen bana isminden bahsettiğin için, içeri girmem gerektiğini hissediyorum.

Bu podcast röportajında ​​dediğim gibi ve blogumda defalarca gösterdiğim gibi http://MethodsAndMessages.vox.com/, bu "smalltalk yılı"Ve şimdi son on ay boyunca Smalltalk savunuculuğu yapmış olmak, bunun gerçekten olduğunu görebiliyorum. Daha fazla müşteri Smalltalk ve Seaside'e dönüyor ve Smalltalk satıcıları bu yeni ilgi akışını yakalamak için çok çalışıyor. Smalltalk konferansları planlanıyor, daha fazla iş ilanı gönderiliyor, daha fazla blog gönderiliyor.

Smalltalk'a bugün dönerseniz, yalnız değilsiniz. Orada da var olan başka birçok kişi var.

Düzenle

Eh, birkaç yıl sonra, şimdi tavsiye ediyorum Dart oyunu yerine. Google tarafından oluşturulan harika bir dil ancak şu anda bir ECMA komitesine ait. Node.js stilinde serveride çalışır, aynı zamanda modern tarayıcılarda JavaScript'e aktarılarak da çalışır. Çok sayıda iyi kitap, blog, yardım kanalı, IDE desteği, kamu canlı macun. Sanırım kesinlikle bacakları var ... yeterince ders vereceğim, dersi kendime veya internete öğreteceğim, ve eminim ki benden çalışmalarda bir iki kitap var. Ve eskiden bir Smalltalker olan Gilad Bracha, tasarımın en büyük katkılarından biri, bu yüzden Dart'ta bir sürü Smalltalk var.


42
2017-09-29 22:23



Bu yüzden Stack Overflow çok havalı! Cevabınız için teşekkür ederim! - Christoph Schiessl
Meraktan çıkma, dikkatin akıntısı üzerine düşünebilir misiniz - aklın aklına gelen herhangi bir fikir? - ConcernedOfTunbridgeWells
Ruby kesinlikle yardımcı oldu, ben de Javascript ve Objective-C düşünüyorum. Saf OO şeyini almayan insanlar için, bu diller, Smalltalk'ın nasıl ışıldadığını tahmin edebilen tanıdık bir başlangıç ​​noktası sağlar. - Damien Pollet
Sonra Seaside adamlar iyi bir PR, DabbleDB ile Avi Bryant ve Rails conf'teki Maglev darbesi yaptılar ve Randal da oldukça vokal oldular. Ayrıca Google V8'in Lars Bak'i de Ben'den geliyor ... bu kadar çok küçük ipucu vardı, hepsi ima etti Smalltalk ve Lisp'te, geçmişten gelen garip dilleri :) - Damien Pollet


Smalltalk öğrenmek için iyi bir dildir, ve en büyük şey, bunun sadece bir gün sürmesidir. Bu sadece akademik bir dilden çok daha fazlası. İnsanlar milyarlarca dolar tutarken devasa, ölçeklenebilir, tekrarlanabilir uygulamalar yapıyorlar. Onlar hakkında fazla konuşmuyorlar. Örneğin, GemStone ve Orient Yurtdışı Konteyner Hatları: Bir Nakliye Endüstrisi Vaka Çalışması.

Seaside, Smalltalk'ı öğrenmek için iyi bir nedendir, ancak Rails'den daha büyüklükte bir emir bulacağınızı düşünmüyorum.

Beni ikna eden şey GemStone'du. Gerçekten Gemstone'un CAM'ını (GemStone, Linux, Apache, Smalltalk, Seaside) seviyorum. Bunun katil kısmı, sizin düşünmeksizin, sizin için tüm nesne sürekliliğini sağlayan GemStone'dur. Bazı demolarını görmek ve insanların GemStone ile neler yaptığını duymak, "büyük uygulamanın" ne anlama geldiğini fikrimi sıfırladı.

Raylar hakkında en çok beni rahatsız eden kısım, nesne-ilişkisel haritalamadır. Ruby'ye karşı hiçbir şey yoktur çünkü GLORP'ta (Smalltalk için ActiveRecord'u idare eden) veya Perl'de ya da başka herhangi bir şeyde bu kadar serttir. Nesneleri veritabanı tablolarına eşleştirmek sadece acı verici. GemStone ile veritabanı hakkında düşünmek kaybolur, bu nedenle veritabanı ile çalışma da kaybolur. Arkamdan devasa bir taş (ya da bir maymun maymunu) alınmış gibi.


26
2017-09-29 22:27



Keşke iki kere oy verebilirdim ... Tamamen katılıyorum. - Sébastien RoccaSerra
ORB'ye göre ODB'nin üstünlüğünü göstermek için +1. birinden diğerine gitmek kesinlikle yapabileceğiniz bir şey hissetmek - ryan0


Smalltalk öğrenme OO (Alan Kay) icat eden adamın bakış açısından nesneye yönelik yazılım geliştirme konusunda size bir zemin verecektir. Üst üste binen bir pencere ortamı fikri Smalltalk'tan geldi.

Smalltalk öğrenmek için bir tökezleme bloğu, bu gibi akış kontrolü için garip bir sözdizimi ile bir mesaj geçen sistem olmasıdır:

i < 60
   ifTrue: [ self walk ]

Çok fazla yer görmediğim bir kıvama sahip, çok olgun bir sınıf kütüphanesi var. Tüm ortamlardaki sınıf kütüphanesi (ticari Smalltalks bile), dilin ustalarından öğrenmenizi sağlayan mevcut kaynağa sahiptir. Smalltalk'ı programlarken, her zaman çevrede nasıl yapıldığını soruyorum.

Smalltalk genellikle sisteminizdeki tüm nesneler için canlı bir ortam olan bir görüntüde uygulanır.

Etkileşimli hata ayıklayıcı Smalltalk'ı gerçekten Ruby'den ayırıyor.

Seaside web geliştirme çerçevesi ve Smalltalk'a yeni bir spot ışığı verdi. İntra-hit hata ayıklama ve pürüzsüz bir Zengin İstemci tipi geliştirme deneyimini sağlayan bir süreklilik tabanlı ortamdır (en iyi uygulama akışı tek bir yöntemle tasarlanabilir). Script.aculo.us ile entegrasyon, Smalltalk içinde kolayca çağrılacak şekilde yapılmıştır.


15
2017-09-29 15:15



Sözdizimi garip değil - aslında çok zarif. Aşağıdaki gibi okunmalıdır: hey, "i <60" ın sonucu ne olursa olsun, burada doğru olduğunu düşündüğünüzde değerlendirilmek üzere bir kod parçası (argüman olarak geçirilen kod nesnesi). Komik olan şu ki, "i <60", bulanık, istatistiksel bir şey döndürürse bile işe yarar. - blabla999
... ve bu bulanık, istatistiksel şey daha sonra bununla nasıl başa çıkacağını (bir yöntem olarak) belirleyebilir. Bu şekilde yeniden tanımlanamayan tek bir yerleşik operatör veya kontrol yapısı yoktur. - blabla999


> hem kolları hem de bacağı olmayan bir Smalltalk geliştirme ortamı bulamadı

Google - ücretsiz smalltalk

Cincom Smalltalk, Squeak, GNU Smalltalk


13
2017-09-29 15:11



Squeak gerçekten güzel! Saf OOP, tamamen grafik, güzel kullanıcı arayüzü, açık kaynak (bazıları bu konuda katılmıyorum), daha fazla veya daha az taşınabilir ... - Joe Pineda
Squeak için +1 ve yeni başlayanlar için güzel bir posta listesiyle harika bir topluluğa sahip. - Sébastien RoccaSerra
Squeak için +1, nesne gezgini (veya ne denirse) nesne modelinin nasıl çalıştığını öğrenmek için paha biçilmezdir. - Mauricio Scheffer
Pharo ücretsiz ve tüm modern araçlara sahip .. - daf


Nigel, sahip olduğum tek alıntı şu:

Her ne kadar onunla bir şey yaptığımdan beri uzun bir zaman olsa da, Smalltalk'ı aday gösteriyorum, düşünceleri bilgisayar koduna aktarabilmem için hâlâ tam olarak herhangi bir şeye rastlamıyorum. Bu sadece bir dil değil: Harika bir tarayıcı ortamı, kütüphaneler ve açık, iyi tasarlanmış bir kod yazma kültürü, spagetti'yi başka herhangi bir şeye çevirebilir. JavaOne'daki katılımcılar Java'nın her şeyden çok daha üretken olduklarını anladığında, kahverengi bir kese çantasına ihtiyacım vardı. Pekala, derslerimi sıraya koymaya ... - Martin Fowler (Yazılım Geliştirme Dergisi, Ocak 2001)

buldum İşte.


9
2017-09-30 13:17



Teşekkürler. Gönderiyi dahil etmek için düzenledim. - ConcernedOfTunbridgeWells


Ben bilmiyorum Ruby ..

Smalltalk bir saf OO dili. Eğer gerçekten OO'yu ve sadece en popüler 'OO' dillerinin (C ++, Java, vb.) Simüle edilmiş OO'larını anlamanın gerekliliğini hissediyorsanız, o zaman size smalltalk ile oynamanızı tavsiye ederim.

Smalltalk'ta her şey nitelik, davranış ve meta ile bir nesnedir. Simülasyonlarda, nesnelerinizde kullandığınız veri tiplerine sahipsiniz.

Bununla oynamak isterdim, sadece faydası olacaksın.


8
2017-09-29 15:09



SmallTalk'ta, "sınıflar" bile nesneler, sınıfın sınıf örnekleridir !!! Bu beni kandırıncaya kadar beni deli etti! - Joe Pineda
Ruby, sınıfların bile nesneler olduğu anlamında saf bir OO dili. Yani bloklar, yöntemler ve boş bir işaretçinin referansıdır. - Alan
Ruby, (Matz bunu serbestçe söyleyecektir) Smalltalk'tan birçok fikir alır. Birçok yönden “Pragmatik” (Hunt ve Thomas'a özür dilemek) Smalltalk benzeri bir dil olarak görülebilir. - ConcernedOfTunbridgeWells


Smalltalk'ı büyük uygulamalar için kullanamayacağınızı düşünen posterle aynı fikirde olmaz - bu, tam olarak parıldadığı yerdir. Ama ben de bir haftadan az bir süre içinde oldukça yüce (not küçük) prototip uygulamaları oluşturdum.

OO'yu 92'de ST'de öğrendim, inanılmaz derecede memnun oldum. OO'da bana gerçek bir arka plan verdi. Sınıflarda düşünmek. Tür yok. ST mesajlaşmaya çok önem veriyor. Bir şey bilmek istiyorsanız, bir nesne bir mesaj gönderin ve bir cevap alın. IMHO, ethos ve IDE gerçekten sizleri birleştirdiğinizde ve bağladığınızda doğru şeyi yapmaya teşvik eder.

Java günlük işimde, IDE’nin tutuklanmasına benzer şekilde, IDE’nin tutulması gibi daha az üretkenlik gerektiren dosyalara, jeneriklere, takılıyorum. ST'yi, programın öncesinde bir gelişmeyi bitirdiğim zaman kullanıyordum. Aslında o kadar üretkenti ki, çok fazla kullandık, yapacak bir şeyim olmadığı için başka bir projeye taşınmak zorunda kaldım! (Tamam, belki de tahmin etmeyi öğrenmek için zaman harcayabilirdim ...)

Gıcık indir, iyi bir kitap bul ve oyna. Sadece olumsuz ise, eğer gününüzün çalma işlemi Java ya da C # kullanıyorsa, ST'yi kullanabilmenizi isteyeceksiniz. Eve daha erken döneceksin.

Chris Brooks


8
2017-10-14 11:41





Herkesin Lisp (Scheme) veya Smalltalk'ı öğrenmesini öneriyorum.

Smalltalk, kültür şokunu aştığınızda kaçırmak istemediğiniz harika IDE'lere sahiptir. Ve evet, birden fazla ücretsiz olanlar var: Squeak, Dolphin, Smalltalk / X ve Visualworks (Non-Comercial).

Lisp, matematik temelinde daha da temiz olabilir.

Saygılarımızla

Not: aslında her ikisini de öğrenmenizi tavsiye ederim!


8
2017-12-23 00:53



"Her ikisini de öğrenin!" - Frank Shearar


Ben tamamen senin ayakkabılarındayım. RoR kullanıyorum ve Smalltalk arazisine bakıyorum. İşte önemli olan bazı artıları ve eksileri:

Artıları:

  • Olgun ve kararlı ortam
  • Hızlı gelişme döngüsü
  • Daha fazla düşünmenizi ve daha az yazmanızı sağlar

Eksileri:

  • Farklı düşünme gerektirir
  • Hala tam olarak kavramadı

Smalltalk hakkında bilmem gereken şey çok komik. Lisp ve Erlang ürünlerini ararken Google sonuçlarında patlayan bu bir şeydi. Bir gün kontrol ettim ve güzel pencereler ortamı ile şaşırdım. Birkaç dakika sonra Aida / Web framework'ü buldum. Ben çengeldi ve bu çerçeve ile web geliştirme yoluyla Smalltalk öğrenmeye başladı.

Hala orada değil, ama çok ilginç, hala oturmayacağım ... :-) Tekrar eğleniyorum.


7
2018-01-16 12:05





Zamanım olsaydı öğrenmeye başlamazdım. Neden olmasın? Çünkü C # veya Java'yı öğrenmek finansal olarak daha üretken ve kazançlı olur.

Öte yandan bir hobininiz varsa ve arkeolojik bir kazıya gitmek isterse, o zaman ne zaman, ne zaman, niçin ve nasıl Smalltalk'la Alan Kay'ı araştırarak bakmayı öneririm. Büyüleyici bir hikaye ve inanılmaz bir insan (sonuçta, Torna Ödülü'nü kazandı). O zaman dil için bir şeyler hissetmek için biraz gıcırdayarak oynayabilirsin. Bundan sonra bloklar, kapanışlar ve Nesneye Dayalı ilkeler konusunda yeni bir saygıya / anlayışa sahip olabilirsiniz.

Smalltalk'ı biliyorum ve kullanıyorum, yaklaşık 15 yıldır muhafaza o ve Smalltalk bir arkadaşınıza tavsiye etmem. Neden olmasın? İstihdam, sahip olmak ve elde tutmak için iyi bir şeydir. Smalltalk'tan çok şey öğrenebilmenize rağmen, bunu bu gün ve yaşta kazançlı bir şekilde işe dönüştüremezsiniz.

Ayrıca, Seaside üzerinde heyecanlı görünüyordun ve Seaside / GemStone ortaklığını kabul ediyorum. GemStone'u uzun zamandır kullandım ve ikisi de çok çekici. Umarım pazar payını ve başarılı olmak için gereken ivmeyi alabilirler.


5
2017-12-07 03:32