gavr_sas
216 subscribers
2.67K photos
184 videos
28 files
784 links
JB пропаганда
Download Telegram
Remember the famous August 1981 cover of BYTE magazine?
#Smalltalk
#Smalltalk изобрел мышку, оконный гуй, полосы прокрутки, JIT, VM, GC и все остальное, Алан Кей еще сделал езернет, и интернет работат по принципу сообщений смоллтолка(пакетики - сообщения)
🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
#Smalltalk, да тот который язык программирования, неиронично стал IDE и для Rust через LSP
Если бы вы не знали оба языка(хех), то какой бы был более читабельным
#Smalltalk #Clojure
Всегда не любил импорты, даже с учетом того что теперь их в основном ставит IDE, мне нравится как в Vala, все импортнуто везде, для доступа используй namespace.Class или сделай using namespace и используй напрямую Class, кажется примерно также в C#.

В #Smalltalk, оригинальном, никаких импортов ясное дело нет, как и неймспейсов, все доступно везде, и пересекающиеся имена, насколько мне известно никак не пофиксить, поэтому мы имеем забавную ситуацию где все классы имеют в начале пару букв названия пакета

Впринципи туже самую ситуацию можно наблюдать в С, где все что связано с gtk начинается с gtk_, и objC, и вроде все эти 3 языка отлично себя чувствуют, может это и не такая уж проблема, но есть в этом что-то неидеальное.
👍2
Прототипное наследование было топ, до того как его решили впендюрить в си лайк язык со слабой типизацией.
Это было развитие идеи ООП, если все есть объект, и каждый объект принадлежит Класссу объектов, то к какому классу принадлежит класс, конечно же к MetaClass, а MetaClass? а его мы зациклим, его класс будет он сам, чтобы сломать рекурсию.

Ну это как то тупо, подумали в лаборатории Palo Alto и запилили Self язык без классов, по сути это был #Smalltalk 2.0
Классные слайды знакомящие нас с функциями коллекций для #Smalltalk на примерах из Haskell
https://web.cecs.pdx.edu/~black/AdvancedProgramming/Lectures/Listy%20things%20in%20Smalltalk/Listy%20things.pdf #lang
#Smalltalk mentioned!
эххх, думал шо все упростил, а на самом деле все сломал, ведь в одном случае была звездочка

зы в ниве импорты выводятся, считаю их архаизмом прошлого, сейчас их за тебя выводит иде, так че бы не сделать это сразу в языке

1) Пока ты не используешь тип который имеется в одинаковых пакетах, импортить ничего не надо,
2) Если ты используешь тип который есть в разных пакетах, но они имеют разные наборы полей, импортить ничего не надо, тип выведется по полям конструктора
3) а воот если типы в разных пакетах абсолютно одинаковы, то у тебя 2 путя, поставить явный импорт одного из пакетов сверху, или написать конструктор с квалификатором adw.Application args: args

А все почему, а потому что в Smalltalk импорты невозможны даже теоретически, а я как бы от него деррайвлюсь
#Smalltalk
ничего особенного смоллтолкер объясняет свою реализацию #Smalltalk на zig
https://vimeo.com/802502826
gavr_sas
ничего особенного смоллтолкер объясняет свою реализацию #Smalltalk на zig https://vimeo.com/802502826
Кста у смоллтолка есть своя библия, как Александресску у C++, и "книжка с драконом" у компиляторщиков

Blue Book "#Smalltalk -80: Язык и его имплементация" Оригинальный референс мануал, по сути читая книгу можно реализовать свой смоллтолк

Green Book "Bits of History, Words of advice",практические советы, эссе и всякие дизайн принципы

Red Book "The interactive Programming Environment" про GUI и IDE
🔥2
I wanna show u a little bit of #Smalltalk 80 that I just compiled from https://github.com/dbanay/Smalltalk (Blue book implementation)

- The code is not a bunch of files but objects inside hierarchy of Packages -> Classes -> Protocols -> Methods
- The Smalltalk is implemented in itself, here you can see method that compiles methods, there also JIT, GC implementations etc
- The system is live and running right now, you can easily modify it on the fly and the changes will be displayed immediately
- Every class, method has a comment, almost literature programming
- Everything is an object. Objects communicate by receiving messages
- Fields are private because of it, the only way to get them is by send message(thats why we got setters getters in java)
- Сode reuse is very high because of all this, the average method length of a modern Smalltalk implementation - Pharo is 6 lines
- You can get this number by evaluating code inside Smalltalk image since everything is an live object = easy introspection
1_NdiF1TkrrIAZ7Qb1JmvlyQ.png
1.2 MB
Популярность языков 1990 согласно отчету IDL:

C++ — 71.3%
Smalltalk — 15.1%
Objective-C — 5.7%
Object Pascal — 4.2%
CLOS — 2.5%
Eiffel — 1.1%
all others — 0.2%

И страница из Computerworld, 6 ноября, 1995, когда то было реальное противостояние, скорость разработки и удобсто использования программистами vs скорость исполнения
#Smalltalk #lang
Тру, одна из причин почему мне так нравится синтакс #Smalltalk, там вообще нет positional arguments!

1 from: 2 to: 3
from:to: и есть сигнатура функции

но мне не нравится динамическая типизация и ультрапозднее связывание, поэтому я делаю ниву
👍1
Cuis Smalltalk такие: мы предусмотрели всё! #Smalltalk
gavr_sas
#niva lsp - чтобы передать кейворд сообщение как аргумент другому, нужны скобки - это единственный случай когда нужны скобки в niva - добавил автоматическую вставку скобок в этом случае ^_^ P.S. kooha оказывается записывает звук лел
В Smalltalk (и niva) все есть сообщение, и единственный способ взаимодействия объектов это обмен сообщениями,

изза чего у нас тонны сообщений, как справлятся?

В Smalltalk есть протоколы, это просто способ группировать сообщения по категориям, вот пример на третьем скрине, пакет - класс - протокол - сообщения
В гуе это смотрится замечательно и удобно, но как быть с текстом?

Пока что просто добавил сортировку вывода автокомплита по протоколам
(было 1, стало 2)
#niva #Smalltalk
🔥2