Pytanie Czy zacząłbyś uczyć się Smalltalk? [Zamknięte]


Moje pytania są proste!

  1. Czy zacząłbyś uczyć się Smalltalk, gdybyś miał czas? Czemu? Dlaczego nie?
  2. Czy znasz już Smalltalk? Dlaczego polecasz Smalltalk? Dlaczego nie?

Osobiście jestem programistą Ruby on Rails i naprawdę to lubię. Jednak myślę o Smalltalk, ponieważ czytam różne blogi, a niektórzy nazywają Ruby jak "Smalltalk Light". Drugim powodem, dla którego interesuje mnie Smalltalk Nadmorski.

Może ktoś wcześniej dokonał tego samego przejścia?

EDYTOWAĆ: Właściwie to, co mnie najbardziej podekscytowało w Smalltalk / Seaside to następujący odcinek WebDevRadio: Odcinek 52: Randal Schwartz on Seaside (między innymi)


76
2017-09-29 14:57


pochodzenie




Odpowiedzi:


Jeśli podoba ci się Ruby prawdopodobnie spodoba ci się Smalltalk. IIRC Seaside został przeniesiony do Gemstone VM, który jest częścią ich OODBMS Gemstone / S. Ma to znacznie lepsze wsparcie dla wątków niż Ruby, więc jest lepszym back-endem dla systemu o dużej objętości. To może być dobry powód, aby go bliżej przyjrzeć.

Powody, dla których warto nauczyć się Smalltalk:

  • To naprawdę, naprawdę fajne środowisko programistyczne. Kiedy już się nim zajmiesz (to może być szok kulturowy dla ludzi przyzwyczajonych do C ++ lub Javy), okaże się, że jest to naprawdę dobre środowisko do pracy. Nawet naprawdę kiepski mały gadżet, taki jak Stare Digitalk, których używałem, to niezwykle przyjemny system do użycia. Wiele starych guru XP i O-O takich jak Kent Beck i Martin Fowler wyciąć zęby na Smalltalk w ciągu dnia i od czasu do czasu można usłyszeć tęsknotę za dawnymi, dobrymi dniami publicznymi (Podziękowania dla Franka Shearera za cytat, +1) - Zwinność rozwoju rozpoczęła się na tej platformie.

  • Jest to jedna z najbardziej wydajnych platform programistycznych w historii.

  • Istnieje kilka dojrzałych implementacji i jest tam zaskakująco duża baza kodu. W pewnym momencie stało się dość modne w kręgach rynków finansowych, gdzie wydajność programistów i czas wejścia na rynek to całkiem spora sprawa. Aż do połowy lat 90. była to mniej więcej jedyna gra w mieście (z możliwym wyjątkiem LISP), jeśli chciałbyś uzyskać komercyjny język wysokiego poziomu, który byłby odpowiedni do tworzenia aplikacji.

  • Wdrożenie jest łatwe - po prostu upuść plik obrazu w odpowiednim katalogu.

  • Nie do końca, ale do Gang Czterech Książek używa Smalltalk na kilka przykładów.

Powody, by nie uczyć się Smalltalk:

  • To coś w rodzaju niszowego rynku. Możesz mieć problem ze znalezieniem pracy. Jednak jeśli produkujesz coś w rodzaju .com aplikacja, w której posiadasz serwery to może nie być problem.

  • Przez wielu postrzegany jest jako system legacy. Na platformie jest stosunkowo niewiele nowości (choć wydaje się, że Seaside nieco odradza).

  • Ma tendencję do niezbyt ładnej zabawy z tradycyjnymi systemami kontroli źródła (przynajmniej od wczesnych lat 90-tych, kiedy go używałem). Może tak być, ale nie musi.

  • Jest nieco wyspiarski i lubi grać sam. Python lub Ruby są zbudowane do integracji od podstaw i wydają się być bardziej rozwiązłe, a tym samym łatwiejsze do zintegrowania z oprogramowaniem innych firm. Jednak, różne inne bardziej powszechne systemy w mniejszym lub większym stopniu cierpią z powodu tego rodzaju wyspiarskiego charakteru, co nie przeszkadza w ich użytkowaniu.


57
2017-09-29 15:51



Ruby został również przeniesiony do Gemstone: nazywa się Maglev: infoq.com/news/2008/04/maglev-gemstone-builds-ruby - brian d foy
Co masz na myśli mówiąc: "nie radzi sobie dobrze z tradycyjnymi systemami kontroli kodu źródłowego"? - detly
Sposób, w jaki tradycyjny kod źródłowy przechowywany w Smalltalk oznaczał, że był osadzony w obrazie i powiązanych źródłach oraz plikach zmian. Nie dostałeś ładnego, czystego zestawu plików programu, jak byś otrzymał (powiedzmy) C. Systemy Smalltalk zwykle wymagały wyspecjalizowanych systemów sterowania źródłami o małych rozmiarach, które zwykle były (a) zastrzeżone, (b) drogie i ( c) niezgodne ze wszystkim innym. - ConcernedOfTunbridgeWells
I mam nadzieję, że Monticello zajmie się (a) i (b) z tych kwestii. Squeak już go używa, a SqueakSource ma wiele projektów, które go używają. Nadal ma brodawki. Gdy projekty git-Monticello są faktycznie w użyciu, (c), miejmy nadzieję, również spadną z drogi. - Frank Shearar
Generalnie podoba mi się odpowiedź, ale Smalltalk gra dobrze z oprogramowaniem innych firm. Fakt, że nie widzisz wielu interfejsów API, nie wynika z faktu, że technicznie nie możesz ich zintegrować, ponieważ jest to nisza (więc mniej osób potrzebuje zewnętrznego oprogramowania). Drugim powodem tego efektu (który również nie jest techniczny) jest to, że smalltalkerzy wolą radzić sobie z problemami w smalltalk niż w innych mniej zabawnych technologiach. - Sebastian Sastre


Cóż, odkąd wymieniłeś mnie po imieniu, czuję, że powinienem zadzwonić.

Jak już wspomniałem w wywiadzie dla podcastów i jak wielokrotnie demonstrowałem na moim blogu w http://MethodsAndMessages.vox.com/, to jest "rok smalltalk"A teraz, wykonując program Smalltalk przez ostatnie dziesięć miesięcy, widzę, że tak naprawdę się dzieje. Więcej klientów zwraca się do Smalltalk i Seaside, a dostawcy Smalltalk pracują ciężko, aby uchwycić ten nowy przypływ uwagi. Konferencje Smalltalk są planowane, coraz więcej ogłoszeń o pracy jest publikowanych.

Jeśli dzisiaj zwrócisz się do Smalltalk, nie jesteś sam. Jest wielu innych, którzy również tam są.

Edytować

Cóż, kilka lat później, teraz polecam Strzałka zamiast. To świetny język opracowany przez Google, ale obecnie należący do komisji ECMA. Działa na serwerze w stylu node.js, ale także w nowoczesnych przeglądarkach, przenosząc się do JavaScript. Mnóstwo dobrych książek, blogów, kanałów pomocy, wsparcia IDE, publiczny pastebin na żywo. Myślę, że z pewnością ma nogi ... na tyle, że piszę materiały szkoleniowe, żeby uczyć je na miejscu lub w Internecie, i jestem prawie pewna, że ​​w mojej pracy jest książka lub dwie. A Gilad Bracha, oldtimerowy Smalltalker, jest głównym uczestnikiem projektu, więc w Dart jest dużo Smalltalk.


42
2017-09-29 22:23



Dlatego Stack Overflow jest fajny! Dziękuję za Twoją odpowiedź! - Christoph Schiessl
Czy z ciekawości możesz rozwinąć napływ uwagi - wszelkie pomysły, z których pochodzi umysł? - ConcernedOfTunbridgeWells
Ruby z pewnością pomógł, myślę, że JavaScript i Objective-C też. Dla osób, które nie otrzymują czystego obiektu OO, te języki zapewniają znajomy punkt wyjścia, z którego można ekstrapolować sposób, w jaki świeci Smalltalk. - Damien Pollet
Potem chłopaki z Seaside zrobili dobry PR, Avi Bryant z DabbleDB i przewrót Maglev na Rails conf, a Randal też jest dość głośny :) Także Lars Bak z V8 Google'a pochodzi z Self ... było wiele drobnych wskazówek, wszystkie podpowiedzi w Smalltalk i Lisp, dziwne języki z przyszłości-w-przeszłości :) - Damien Pollet


Smalltalk jest dobrym językiem do nauki, a wspaniałą rzeczą jest to, że zajmuje to tylko jeden dzień. To o wiele więcej niż tylko język akademicki. Ludzie budują ogromne, skalowalne, powtarzalne aplikacje obsługujące miliardy dolarów. Po prostu o tym nie mówią. Zobacz na przykład Linie kontenerowe GemStone i Orient Overseas: Studium przypadku branży transportowej.

Seaside to dobry powód, by uczyć się Smalltalk, ale nie sądzę, że znajdziesz go o rzędy wielkości lepsze od Rails.

To, co mnie przekonało, to GemStone. Naprawdę lubię Gemstone's GLASS (Gemstone, Linux, Apache, Smalltalk, Seaside). Zabójczą częścią tego jest GemStone, który zajmuje się utrzymaniem całego obiektu w większości bez myślenia o nim. Oglądanie niektórych z ich prezentacji i słuchanie o tym, co ludzie robią z GemStone, resetuje mój pomysł na to, co oznacza "wielka aplikacja".

Część, która najbardziej mnie martwi w Railsach, to mapowanie obiektowo-relacyjne. To nic w porównaniu z Ruby, ponieważ jest to równie trudne w GLORP (który obsługuje ActiveRecord dla Smalltalk), Perlu, czy cokolwiek innego. Odwzorowywanie obiektów na tabele bazy danych jest po prostu bolesne. Dzięki GemStone, myślenie o bazie danych znika, więc praca z bazą danych również znika. To tak, jakby ogromny kamień (lub grupa małp) został zdjęty z moich pleców.


26
2017-09-29 22:27



Chciałbym móc głosować dwa razy ... Całkowicie się zgadzam. - Sébastien RoccaSerra
+1 za pokazanie przewagi ODB nad ORM. przejście od jednego do drugiego to zdecydowanie coś, co możesz czuć - ryan0


Nauka Smalltalk da ci podstawy do rozwoju oprogramowania zorientowanego obiektowo z perspektywy człowieka, który wynalazł OO (Alan Kay). Idea nakładającego się środowiska okienkowego pochodzi od Smalltalk.

Utrudnieniem nauki Smalltalk jest to, że jest to system przekazujący wiadomości o dziwnej składni do kontroli przepływu, jak:

i < 60
   ifTrue: [ self walk ]

Ma bardzo dojrzałą bibliotekę klasową, która ma konsystencję, której nie widziałem zbyt wiele. Biblioteka klas we wszystkich środowiskach (nawet komercyjnych Smalltalks) ma dostępne źródło, które pozwala uczyć się od mistrzów języka. Podczas programowania Smalltalk zawsze zadaję pytanie, jak to się dzieje w środowisku.

Smalltalk jest na ogół zaimplementowany w obrazie, który jest środowiskiem na żywo dla wszystkich obiektów w twoim systemie.

Interaktywny debugger naprawdę oddziela Smalltalk od Ruby.

Seaside to framework do tworzenia stron internetowych, który dał Smalltalk nowy punkt odniesienia. Jest to środowisko oparte na kontynuacji, które pozwala na debugowanie wewnątrz trafień i płynne doświadczenie rozwoju typu Rich Client (najwyższy przepływ aplikacji może być zaprojektowany w jednej metodzie). Jest to integracja z script.aculo.us została wykonana w taki sposób, że można ją łatwo wywołać z poziomu Smalltalk.


15
2017-09-29 15:15



Składnia nie jest dziwna - jest naprawdę BARDZO elegancka. Musi być odczytany jako: hej, niezależnie od wyniku "i <60", tutaj jest fragment kodu (obiekt-kod przekazany jako argument), który ma być oceniony, jeśli uważasz, że jesteś prawdziwy. Zabawne jest to, że nawet działa, jeśli "i <60" zwraca nieostry, statystyczny temat. - blabla999
... i ta rozmyta, statystyczna rzecz może wtedy zdecydować (jako metoda), jak sobie z tym poradzić. Nie ma jednego wbudowanego operatora ani struktury kontrolnej, której nie można zmienić w ten sposób. - blabla999


> nie mogłem znaleźć środowiska programistycznego Smalltalk, które nie kosztowało obu rąk i nogi

Google - bezpłatny smalltalk

Cincom Smalltalk, Squeak, GNU Smalltalk


13
2017-09-29 15:11



Squeak jest naprawdę miły! Pure OOP, całkowicie graficzny, piękny interfejs użytkownika, open source (niektórzy się z tym nie zgadzają), mniej lub więcej przenośny ... - Joe Pineda
+1 dla Squeak, i ma świetną społeczność z ładną listą mailingową dla początkujących. - Sébastien RoccaSerra
+1 dla Squeak, eksplorator obiektów (lub jak tam się nazywa) jest nieoceniony w uczeniu się, jak działa model obiektu. - Mauricio Scheffer
Pharo jest bezpłatny i ma wszystkie nowoczesne narzędzia. - daf


Nigel, jeden cytat jaki mam to:

Chociaż minęło już dużo czasu, odkąd zrobiłem cokolwiek z tym, mianuję Smalltalk, wciąż nie spotkałem się z czymś takim, jakbym był w stanie przenieść myśli do kodu komputerowego. To nie tylko język: to wspaniałe środowisko przeglądarki, biblioteki i kultura pisania jasnego, dobrze zaprojektowanego kodu, tak szybko, jak wszystko, co jeszcze może wytworzyć spaghetti. Kiedy uczestnicy JavaOne wychwalali, że Java jest bardziej wydajna niż jakakolwiek inna, potrzebowałem brązowej papierowej torby. No cóż, wracając do uporządkowania moich ścieżek klasycznych ... - Martin Fowler (Software Development Magazine, styczeń 2001)

znalazłem to tutaj.


9
2017-09-30 13:17



Dzięki. Zmienilem swoje posty, aby je uwzględnić. - ConcernedOfTunbridgeWells


Nie znam Ruby ...

Smalltalk jest czysty Język OO. Jeśli czujesz potrzebę zrozumienia OO, a nie tylko symulowanego OO najpopularniejszych języków "OO" (takich jak C ++, Java itp.), To polecam grać z smalltalk.

W smalltalk wszystko jest przedmiotem, z atrybutami, zachowaniem i meta. W symulacjach masz typy danych, których używasz w swoich obiektach.

Powiedziałbym, że baw się z tym, tylko skorzystasz.


8
2017-09-29 15:09



W SmallTalk nawet "klasy" są obiektami, instancjami klasy Class !!! To doprowadzało mnie do szaleństwa, dopóki go nie zszokowałem! - Joe Pineda
Ruby jest również czystym językiem OO w tym sensie, że nawet Klasy są obiektami. Podobnie są bloki, metody i odwołanie do wskaźnika pustego. - Alan
Ruby bierze (Matz to swobodnie oświadcza) wiele pomysłów z Smalltalk. Pod wieloma względami może być postrzegany jako "pragmatyczny" (przepraszam Hunta i Thomasa) język podobny do Smalltalk. - ConcernedOfTunbridgeWells


Nie zgodziłbym się z plakatem, który twierdzi, że nie używał Smalltalk do dużych aplikacji - właśnie tam błyszczy. Ale stworzyłem dość groźne (małymi literami) prototypowe aplikacje w niecały tydzień.

Nauczyłem się OO w ST zaczynając w 92, bardzo się cieszę, że to zrobiłem. Dało mi to prawdziwe doświadczenie w OO. Myślenie w klasach. Brak typów. ST ma prawdziwy nacisk na komunikację. Jeśli chcesz coś wiedzieć, wyślij obiektowi wiadomość i uzyskaj odpowiedź. IMHO, etos i IDE naprawdę zachęcają do robienia rzeczy właściwych dzięki twojemu sprzężeniu i spójności.

W mojej pracy w Java day utknąłem z plikami, generics, IDE jak eclipse, które są o rząd wielkości mniej produktywne niż jakiekolwiek ST IDE. Używałem ST, jedynego czasu, kiedy zakończyłem rozwój przed terminem. W rzeczywistości było to bardzo produktywne, a my wykorzystaliśmy tak wiele razy, że musiałem zostać przeniesiony do innego projektu, ponieważ nie miałem nic do roboty! (Ok, może mógłbym spędzić czas na nauce oszacowania ...)

Pobierz squeak, znajdź dobrą książkę i graj. Jedynym minusem jest to, że jeśli twój dzienny koncert używa Javy lub C #, skończysz, żałując, że nie możesz używać ST. Wcześniej dotrzesz do domu.

Chris Brooks


8
2017-10-14 11:41





Polecam wszystkim, aby nauczyli się Lisp (Scheme) lub Smalltalk.

Smalltalks mają wspaniałe IDE, których nie chcesz przegapić, gdy przejdziesz szok kulturowy. I tak, istnieje więcej niż jeden darmowy: Squeak, Dolphin, Smalltalk / X i Visualworks (Non-Comercial).

Lisp może być jeszcze czystszy w swoich matematycznych podstawach.

pozdrowienia

PS: w rzeczywistości polecam naukę obu!


8
2017-12-23 00:53



+1 dla "naucz się obu!" - Frank Shearar