- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
struct Family: Enumerable {
var name = "Smith"
var father = "Bob"
var mother = "Alice"
var child = "Carol"
func each(block: (String) -> Void) {
for i in 0...2 {
switch i {
case 0: block("\(father) \(name)")
case 1: block("\(mother) \(name)")
case 2: block("\(child) \(name)")
default: break
}
}
}
}
http://matthijshollemans.com/2015/07/22/mixins-and-traits-in-swift-2/
Pattern matching головного мозга. Верно говорят, что тот, кто не умеет делать, идет учить других как надо делать.
питон это сложный и неочевидный язык
result тру если вышел по ложности условия, и фолс если вышел через return.
только такой синтаксис никому не понравится, потому что он не очевидный
https://ideone.com/1xezYk
Стоит изучить?
Нашёл в архиве:
https://web.archive.org/web/20160315104833/matthijshollemans.com/2015/07/22/mixins-and-traits-in-swift-2/
Оказывается, в Свифте своя терминология. Интерфейсы они назвали протоколами. Protocol extension в Свифте — это то, что в других языках называется трейтами или миксинами. Это интерфейс с частичной реализацией методов.
Автор считает, что миксин отличается от трейта тем, что хранит состояние. В Свифте 2.0 «protocol extension» полагается на то, что использующий его класс создаст своё хранилище свойств, поэтому автор считает его трейтом, а не миксином.
Однако, автору слово «миксин» нравится больше, поэтому оно будет у него иногда проскакивать.
Впрочем, я тоже в 2015-ом году любил сравнивать протоколы с миксинами и трейтами лол. Молодой был и глупый и даже на ГК ещё не имел аккаунта
Очень логичное и правильное понятие имхо.
А то, что жаваебы с шарпеями называли интерфейсом -- то было протоколом.
Думаю, стриж его наследовал.
в питоне тоже есть протоколы (а еще abstract base classes а еще базовые классы pydantic а еще) но питон вообще неебически сложный язык, его мотто: "существует сорок три способа сделать это, семь из них уже устарели, читай пепы, сволочь"
Обосрактный класс — это не совсем интерфейс, это скорее контракт, который нужно соблюсти классу. Протокол — логичное название.
И название «интерфейс» в Object Pascal (в оригинальном Паскале модулей не было; Андерс Хейлсберг взял модули из Модулы, но переименовал секции) для экспорта тоже выглядит логично.
Самое смешное, что C# тоже изобрёл Хейлсберг, но для разнообразия взял несовместимую с Object Pascal терминологию. Возможно, это требования Борланда и Микрослопа соответственно. Тайпскрипт изобрёл тоже он, кстати.
1. это просто говно
2. это попытка изобразить паттерн "шаблонный метод", и тогда это говно с сахаром
3. это.. мисксина. И, разумеется, тоже говно.
Но ЙАЖА (гослинги?) зачем-то ввели понятие "интрефейс" которое как-бы pure abstract class, но их можно много реализовывать (в отличие от классов: множественного наследования в ЙАЖА нет)
А потом в них сделали дефалтные реализации, и теперь интепрфейс разве что не имеет состояния, а еще его можно реализовывать динамически (мокать в тестах) а так хуй знает зачем он нужен
Хейлсберг для C# (и для TS) ожидаемо косплеил ЙАЖА.
У нас в расте нет никаких интерфейсов: есть трейты. Если реализовать их динамически (через виртуальнуые методы) то будет обчный такой полиморфизм и трейты это такие интерфейсы джвы/c#/Go или pure abst. classes C++.
Если же реализовать их статически (через генерики-шаблоны) то они будут вроде крестовых концептов. Лепота!
зы: но мне нравится мыслить в терминах модулей, и говорить "интерфейс модуля" и "его реализация", как в борманд паскале
https://matthijshollemans.com/c64/
Автор, кстати, из наших: U kunt het pijltje sturen (вы можете управлять стрелочкой. Sturen однокоренное со словом ШТУРВАЛ)
кроме шуток, если чел в десять лет на бейсике нагавнял гуйную игрушку (пусть и самую простую) то он молоток. Многие в десять лет казявки щёлкают, и соломенки шмелям в жопу засовывают
причем это конце 80-х, нихуя нет учбеников акромя бумажных книг.
Goed gedaan, meneer Hollemans, вобщем
Но у C64 (а также у всяких MSX, Amiga, Atari, Amstrad, Apple ][, Spectrum) был интересный Бейсик: спрайты из коробки, их не надо было костылить и велосипедить самому; а ещё был доступ к синтезатору звука.
На казалось бы более мощном IBM PC по мультимедийности был откат в прошлое. Графические ускорители и звуковые карты не сразу появились, да и не было к ним доступа из Бейсика. Ну чего мы хотели от корпорации International Business Machines, которая раньше делала пишущие машинки для серьёзных людей?
он та пишет, как его программа начиналась буквасльно со спрайтов
> по мультимедийности был откат в прошлое.
IBM PC зато не подключался к телевизору))
но из всех прелестей звука имел только PC speaker, который можно было включить или выключить. Чтоб высрать звук, надо было завести таймер, и по нему теребонькать писи спикер, чтоб он пищал.
Потом уже появились синтезаторы, которые умели сами грать звук и (о, чудо!) пользоваться DMA, чтобы этот звук из памяти скачать.
Графические ускорители появились вообще в 90-е (voodo 3dFX, Glide API), до этого к твоим услугам был CGA, EGA, (S)VGA. Скажи спасибо, что у них на борту было несколько страниц памяти
https://ru.wikipedia.org/wiki/Original_Chip_Set
Амига была нереально крутой. Там совершенно убойная для своего времени ОС и такая же графика
PC вообще хуй сосал в вопросах мультимедиа очень долго, буквально до середины 90-х
У IBM PC первоначально мышь вставлялась в разъём RS-232, вообще-то предназначенный для модема.
У DOSа не было изначально API для мыши, так что каждая программа должна была сама с ней работать (всмысле знать марку мыши и в какой она компорт вставлена)
Потом появилмя mouse.com и кажетсч INT33
ps: я еще из прыщавого gpm (или бздячего moused) опмню что мышь-то бывает не только COM и PS/2.
Бывает еще такая хуйня
https://en.wikipedia.org/wiki/Bus_mouse
В QBasic не было функций для мыши, но были функции для светового пера, поэтому, чтобы не пердолиться с вызовом INT 33H, некоторые использовали мумулируемый API.
Журден на линии.
Высокий уровень (Барсик)
Cредний уровень (бивис)
Read light pen position (Does not work on VGA systems (какой багор)))
ответ интерпретировать
>>
AH = Status (0=not triggered, 1=triggered),
BX = Pixel X,
CH = Pixel Y,
CX = Pixel line number for modes 0Fh-10h, // видимо речь о text mode
DH = Character Y,
DL = Character X
>>
Низкий уровень.
По своей сути световое перо является расширением видеосистемы и как таковое использует микросхему контроллера CRT 6845.
Позиция светового пера дается одним 2-хбайтным значением, хранящимся в регистрах 10H (старший байт) и 11H (младший байт) микросхемы.
Порт с адресом 3DCH устанавливает задвижку светового
пера, а с номером 3DBH - сбрасывает ее.
---------
читать регистры из видяхи было достаточно заёбно, там надо было через узкое окошечко IO просунуть номер регисра, потом забрать ответ
В видюхах EGA были разъёмы светового пера, VGA же ими комплектовать перестали.
Почему они были в видюхах? Надо было точно синхронизироваться с ходом луча. Координата X вычислялась по задержке от начала строчной развёртки, Y — по задержке от начала кадровой развёртки.
Да, где-то так. Примерно 10 лет прогресса мультимедиа было потеряно.
Я понимаю, что у IBM PC в 1995-м оперативка и процессор были мощнее, чем у Амиги в 1985-м, но ведь и 10 лет прошло.
Also, гуйня весила очень тяжело.
Бум "переписки под windows" начался в районе win95, когда гейдевками дали DirectX, а бизнес-приложениям -- кооперативую многозадачность, 32-х битный режим с плоской памятью, а некоторым и сетевой стек, но еще в середине нулевых люди реально писали софт под дос (окончательно его убил длинный режим).
In January 2024, German state-owned national railway company Deutsche Bahn posted a job listing for a system administrator with "knowledge of legacy operating systems". The main responsibilities listed in the post were maintenance of the old system and driver updates. The need for the continued use of Windows 3.11 could apparently be traced back to Siemens' SIBAS (Siemens Bahn Automatisierungs System) automation system used to control trains.
Потом с операционкой для 80386 IBM и Microsoft сыграли в лебедя, рака и щуку. Microsoft решила кинуть IBM с поддержкой OS/2 и стала разрабатывать Windows.
IBM еще пытался гадить проприетарной шиной, но и её пожрал PCI.
от OS/2 в наследство нам остались фанаты мерлина идеи отделения сисколов/NativeAPI от собссно API: считалось, что будет много приложений OS/2 и надо будет их запускать. С тех пор у нас Native API + Win32API.
Спрайт надо откуда-то загрузить: из файла, например. Или из DATA.
The game is a bit slow to start up because I hadn’t quite figured out that sprites can actually be saved along with the BASIC program. And so the first few hundred lines of the program look like this:
https://matthijshollemans.com/c64/ChangChiSprites.png
зы: мне кажется осёл в donkey.bas так же примерно нарисован.