- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
Чуваки, давайте тред про книги.
Сейчас как раз хочу выбрать книгу младшему брату (14yo) какое-нибудь интро
в программирование, такое же волшебное, как книга Ларри, только попроще тех-
нически, где бы объяснялось, что переменная — это ебучая «ячеечка памяти»,
и всё такое. Только я подумал лучше сначала дать что-нибудь компилируемое,
а то потом хрен переучишь, как вы на это смотрите? Сразу на ум приходят книги
Вирта, но у паскаля сейчас с инфраструктурой пиздец, и на линуксе его компи-
лить как-то не нативно. (GNU Pascal почил, а заставлять брата патчить кде рано).
У меня у самого опыт перекошенный, я начинал с VB, потом перешел на Pascal,
но книги попадались отстойные.
Короче, нужен ваш совет.
Особенно, великих наставшиков roskomgovno, roman-kashitsyn и bormand, и всех
остальных. Кроме Стертора.
Ставь Free Pascal, лучше паскаля для начинающих ничего нет. Си – сложна нипанятна много неоднозначностей, и система типов – говно.
ЗЫ. Мой первый ЯП был скриптовый язык в Multimedia Builder, то ещё гоано, на бейсик похоже, я учился по справке и форумам, и получил необратимые повреждения моска.
Кмк, начинать надо с реализации игрушек. Жалко, перевода «Land of Lisp» на русский нету.
http://www.htdp.org/2018-01-06/Book/part_prologue.html#(part._arithmetic-pro)
А так вообще, для совсем детей можно что-то по Scratch попробовать.
Или вот это:
http://dump.bitcheese.net/files/pulikej/Яша_учится_программировать1.6.jpg
http://www.programmingforkids.ru/2013/09/o-knige-dlya-detei.html
Или какое-нибудь LOGO с черепашьей графикой (учебники и всякие видео на ютубе несложно нагуглить, например https://youtu.be/S1EegcFddBM )
Racket — это какая-то очень странная штука, надо самому для начала попробовать.
Удивительная вещь, спасибо что показал.
Не удивительно. Как перевести книгу, в которой слово «баг» используется в двух значениях одновременно, и при этом сохранить игру слов без глупых сносок и предисловий?
Я читал лет пять назад, мне доставило. Один из недостатков — по дефолту всё на GNU CLISP, сейчас этим говном практически никто не пользуется, основная масса юзает либо SBCL (для прода на линупсах), либо Clozure CL (для дев-билдов или мака, там более глупый но ощутимо более шустрый компилятор).
Хотя вроде от стандарта там не сильно отходят, может и нет разницы, если иудейские символы тебя не беспокоят.
Ты это о чем?
Сёме не показывайте
Политическая, политическая. Его заботит fake elections in usa, wikileaks, edward snowden, какая-то фигня с кешем в индии, разнообразные политические и идеологические репрессии в разнообразных странах. И на stallman.org первые разделы — political articles и political notes, и political notes — это сейчас вообще основная деятельность Cтоллмана, он больше не пишет код, и на своём сайте прямо из emacs десятки и сотни подзаголовков в день линкует и рассылает в rss.
Citizens of Turkey: vote to defeat Erdoğan and his party.
Support the US Green Party.
Support the Citizens' Climate Lobby.
PS: Люто, бешено ненавидящий Столлмана Тео Де Раадт как-то посрался с DARPA по поводу войны в Ираке, так что это видимо общее
А ещё screen, bison, emacs и много разного.
А ещё FSF, GNU, GPL…
А ещё классную песенку про free software.
Это первая в мире и самая занудная красноглазая прыщеблядь, не написавшая в жизни ни строчки кода на PHP. Никчёмень.
Я думал ты в курсе. Мы же об этом уже говорили в #23874 (удалён) (спасибо бормандстоку) (@bormand, прикрути ссылки на зеркала из раздела «Порыться в говне», а то приходится номер треда вручную писать):
-----------------------
SemaReal ☓ 2018-03-06T08:29:04Z # #
А что делать пиздатому прогеру после тридцати? Прогать?
vistefan ☓ 2018-03-06T08:33:44Z # #
Не, не прогать. Придумывать ебанутые лицензии, постить через emacs на свой сайт на чистом html политические новости, выступать в смешной одежде, всё вот это вот.
1024-- ☓ 2018-03-06T09:18:45Z # #
Как скучно. Ну разве что если латентный гуманитарий.
SemaReal ☓ 2018-03-06T09:20:45Z # #
Столлман то?
1024-- ☓ 2018-03-06T09:55:03Z # #
Столлман - это какое-то пожизненное звание технаря?
Бакалавр физики, магистр медицины, столлман в C++, кремлёвский столлман по выборам в США.
> Придумывать ебанутые лицензии
Юрист
> постить через emacs на свой сайт на чистом html политические новости
Писатель, причём из идейных, почти из тех, кто гусиным пером пишет
> выступать в смешной одежде
Артист
Чистейшие проявления гуманитария.
SemaReal ☓ 2018-03-06T10:59:40Z # #
> Придумывать ебанутые лицензии
>Юрист
А еще он сидит под линуксом, значит админ
-----------------------
Да не бери в голову, Столлман непогрешим, пусть чем хочет занимается. Да и благородно это, в молодости делать дело, в старости звать молодых делать это дело.
Умирать, безусловно, надо молодым, но это уж кому как повезёт.
Так и для Democrary в целом не плохо бы пожить в разных странах при разных режимах. Потому меня обычно напрягает когда у человека, который всю жизнь прожил в одной стране, вдруг начинает сильно чесаться Гондурас, про который он вчера прочитал в Википедии.
Но это конечно не умаляет его заслуг в сфере свободного софта.
И потом в итоге окажется, что прав был 1024--, и обе хороши для какой-нибудь надобности, а вопрос изначально был поставлен неправильно.
А с демокраси ещё сложнее, так что вообще хуй проссышь. Например, получается, что понять как лучше: как сейчас или как ты хочешь сделать — вообще нельзя, потому что чтобы проверить, надо сначала сделать, но даже и это натяжка…
Как сказали разработчики CLISP:
If you are unhappy about their artistic preferences, political views or religious beliefs, you are free to ignore them.
И это одна из главных свобод в демокраси.
Поэтому
> не умаляет
Само собой
Тоже так думаю:)
>>потому что чтобы проверить, надо сначала сделать
И это тоже. Но вообще в целом вот есть чуваки "A" и чуваки "B".
Они друг друга терпеть не могут, иногда даже друг друга убивают, и разумеется каждый из них уверяет что он -- жертва.
Чтобы понять что там происходит надо довольно глубоко вникать в их конфликт, лучше даже пообщаться с обеими сторонами. Но борцы за демократии чаще всего сходу выбирают одну, понравившуюся им сторону, и начинают за нее топить.
>>free to ignore
Тащемто так и делаем. Я пользуюсь софтом, чьи авторы имеют чуждые мне political views, и мне пофиг
> И это тоже
Как мы, блять, мило всё время беседуем, впору пиво пить.
What's bad about: Airbnb | Amazon | Amtrak | Ancestry | Apple | Discord | Ebooks | Eventbrite | Evernote | Facebook | Google | Intel | LinkedIn | Lyft | Meetup | Microsoft | Netflix | Patreon | Pay Toilets | Skype | Spotify | Twitter | Uber | Wendy's |
Столман против всех!
И тут он молодец
Ну, не отдавать сырцы -- это плохо.
И с Линусом посрался из-за GPL v3.0 и теперь говорит, что просто linux не полностью свободно, чтобы полностью свободно надо linux-libre.
С GPL так нельзя.
Да, Linux rms тоже не очень любит, он его скорее терпит, и во-первых ждет hurd, во-вторых не устает напоминать что ОС называется GNU/Linux потому что кода GNU там чуть-ли не больше чем самого Linux.
Сём, а в дойченетах как с этим?
ёбнутых много на свете:
https://www.mail-archive.com/[email protected]/msg45623.html
Чувак скрывает свою фамилию потому что:
[quote]
> Those of us with Jewish last names who aren't
> zionists frequently take the approach of not blasting our last names
> across the net in every communication because we've learned that
> zionists are aggressive and it doesn't make sense to make it easy for
> them to target/abuse you.
[/quote]
Это не только в рунетах. В юзнетах и фидонетах образца 90х так тоже не очень было принято делать, особенно в tech рассылках.
Но если ты поцчитаешь предысторию, то она такая:
Юзер: а давайте запилим опцию у комманды mv чтобы она затирала за собой блоки после удаления
Тео: нет, иди нахуй
Атилла: вежливее было бы сказать: "нет, эта опция не нужна"
Тео: какой-то анонимный хуй будет учить меня вежливости? Иди-ка ты нахуй.
Атилла: я не анонимный
(ну и дальше кусок который я привел)
Не думаю, что это большая проблема. «Gödel, Escher, Bach: an Eternal Golden Braid» как-то же перевели на русский, там игры слов гораздо больше.
Причём сделала это домработница, и она, насколько я понимаю, никогда до этого и никогда после больше не переводила ни одной книги. Но это исключительный случай, вся эта книга на любом языке окутана волшебством и чудесами.
АХУАХИАХУХУХУ
АХУАХИАХУХУХУ
Въебал плюс.
Батюшка esr завещал лалкам учить Сишку и Лисп.
http://vadeker.net/articles/hacker-howto.html
So, bring up a Unix — I like Linux myself but there are other ways (and yes, you can run both Linux and Windows on the same machine).
Learn it. Run it. Tinker with it. Talk to the Internet with it. Read the code. Modify the code. You'll get better programming tools (including C, LISP, Python, and Perl)
Параллеьно советую "Код. Тайный язык информатики". Оч хорошая книга для детей по устройству комптютера
Я вот именно так и считаю: строгая, статическая типизация, минимум лишних концепций и вербозность это именно то, что нужно чтобы поставить на место мозги молодому поколению
:)))))
Хорошо что я не одинок:)
>>не нужна
Слабая нужна для однострочников. Ну там считал строку из файла, а в строке число, и ты явно умножил его на 42. Хотя наверное и тут лучше питоновский явный int() вместо перлового или луашного неявного кста.
Есть Pascal ABC.NET который сделали спецом чтобы продолжать учить паскалю по старым методикам, но его наверняка нет под линукс)
Free Pаscal и Ada -- ок, но учебник обычно описывает всё, включая IDE.
Меня в децтве учили turbo pascal и IDE и языку, и я на первых порах даже не думал о них как он разных сущностях.
Но есть нюанс: в моем детстве pascal был вполне себе рабочим инструментом: на нем писали реальные программы, и никому бы в голову не пришло назвать его "учебным языком".
А сейчас ребенок может спросить: а я смогу на паскале делать веб-сайты? А писать игры под ios? А если нет, то нахуя ты меня этому старью учишь?
Расскажи вкраце как оно работает? Требует mac os x и там собипрается на llvm?
>>. А вообще разработка под iOS — это жопа.
Это политика ябла. Нра, не нра -- спи моя красавица
да, разумеется. Они на шланг/llvm уже лет пять как перешли. но я не знаю патченный он у них или нет
anyway, вопрос про SDK остается открытым.
Ну как же это делать?
MSный линкер использует его для экспорта: ты можешь либо явно dllexport сказать над функцией, либо перечислить их в Souce.def file.
В некоторых SDK (например в фаре) функции в .h файлах не имеют dllexport и чтобы не иметь проблем с копеляцияей приходится всегда делать Source.def. Ну, это ничего.
>>прямо в исходнике.
Ого, но исходников cocoa у тебя тоже нет. Это НЕ опен сурс так-то.
>> Вопрос в лицензии
Как минимум да. А еще в том что надо делать repack какой-то: ты не можешь тупо скачать SDK (который идет с XCode) на винду. Там будут всякие утилиты скомпилированные (ну окей: слинкованные) в Mach-O итд. Это всё doable, но требует времени
А под настоящий умеет?
Если мой склероз мне не изменяет, то уже ни в чем.
Раньше .so можно было и линкером и через dlopen, а dyld только одним способом, но уже дилду и .so можно одинаково
Почему ябло их не судит?
Что-то мне намекает, что API и ABI там достаточно стабильные. Иначе бы все разрабы заебались всё пересобирать после каждого апдейта иос. И для юзеров это была бы ёбаная боль.
А раз оно стабильно -- то можно и не гнаться за яблом, новые фишки можно и к следующему релизу делфни поддержать.
Кроме того XCode выходил раньше раз в пол года / год где-то, и часто приносил с собой новую версию SDK и там кучу всего нвоого
Очень дофига всего, iosны прыложения очень сильно связаны с OS. Не говоря уже про всякие CoreData итд
И почему это говно стоит дороже китайфонов, у которых её хватает на даже на десяток инстансов ёбаной JVM с GC...
Суть вот в чем: Application которое не активно находится в фоне. Ее могут усыпать, а могут и грохнуть. Убитое приложение дольше поднимается, так что лучше его не грохать.
Когда мало памяти ios шлет сообщение всем приложениям. Они могут почиститься (напрмиер, опорожнить кеши или отпустить какие-то контролы). Если ее все равно мало, то выбирается жертва и ёбается.
>> ёбаной JVM с GC.
Уж ты-то мог бы и знать что никакой JVM в Android нет. Там ART.
Это другая соврешенно виртуальная машина. Там и формат комманд другой даже. Просто .class файлы транслируются в её опкоды
А есть ли принципиальная разница? Прикладной программист эту разницу всё равно не увидит. GC и его проблемы всё равно никуда не уйдут. Если оно крякает как утка, то может быть и похуй?
> событие
Не думаю, что там события обрабатываются намного сложнее винапишных.
iOS шлёт applicationDidReceiveMemoryWarning емнип не всем подряд, а той аппе, которая превысила некоторый барьер (https://stackoverflow.com/questions/5887248/ios-app-maximum-memory-budget). На новых айфонах можно запустить много JVM :-) метафорически
Беркли сокеты не завезли что ли?
Но URLSession во много раз более высокуровневый API. Это примерно как WinInet в Win32 или Curl в никсах, но даже более высокуровневый.
Во-первых он под Cocoa. Во-вторых он умеет HTTP. В-третьих у него авторизация и куки есть. И наконец он может там чуть-ли не в фоне что-то качать пока твое приложение спит.
Ну в общем одна полезная фича (и то из-за политики ябла и запрета на фоновую работу?). Всё остальное для делфи давным-давно было реализовано через обычные сокеты.
Овердохуя всего есть
Кстати, Apple strongly discourages от использования голых сокетов на iOS, хотя они там работают
Часть забили болт. Последний AppCode пишет, что поддерживает позапрошлый XCode. Вот такой bleeding edge of technology
И что? Там будет NSObject?
А даже если и будет, там точно НЕ будет UIKit, например: Всякие UITableView откуда возьмутся?
Часть API (т.н. CoreFoundation) это вообще чистый си (функции я префиксом CF) их там тоже не будет, опять таки если не попереть их с мака.
В целом ябло состоит из следущих словев
1) ядро = mach + posix = XNU.
2) ядро + утилиты = DarwinBSD
DarwinBSD это OpenSource.
3) Поверх: CoreFoundation, Quartz итд: проприетарные либы на сях
4) Поверх: Cococa, UIKit, APPKit, еще 100500 либ: проприетарные либы на ObjC
Как там со Swift лучше расскажет Desktop, но думаю что swift там в районе уровня 4.
Так что можно конечно писать только под Posix и не иметь дело с проприетарщиной, но много ты не напишешь
Кстати, фейсбучный xcbuild обещает сборку проектов XCode на Винде и Линуксе.
Двадцать лет с лишним прошло, а я помню...
Странное правило, это разве что-то упрощает? Только багу родит, когда в конец добавляешь строку и забываешь сепаратор.
От пустого оператора ничего не случится.
P.S. Ну в общем для написателей компиляторов Паскаля (3 курс), видимо, подчеркивает, что, мол, это именно сепаратор, а не терминатор.
Вирт придумывал паскаль с точки зрения простоты написания студентами компилятора для него. При таком раскладе синтаксический и лексический анализ очень прост.
Вирт вообще старался придумывать языки с наиболее простым синтаксисом и семантикой, даже ради упрощения and/or/xor имеют более низкий приоритет чем оптераторы сравнения (чтобы уменьшить число операторов и уровней притиритета). См. также его более поздние Мудулы и Обтероны.
Опять я путаю... Конечно же более высокий.
Смотрите на всех мониторах школоты.
echo 'FAREWELL, BRAIN!';
?>
Я считаю верхом идиотизма когда экономистов учат С++ (а так делают иногда, и это оч глупо).
Но полагаю что Вистефан хочет сделать брата именно что программистом, и вот программисту конечно лучше бы сразу учиться понимать как процессор выполняет его программу, и как она представлена в памяти. Хотя бы в основных чертах понимать.
>>заразно
Заразно, если тебе это интересно. Собссно, если старший брат разбирается в ОС, которой пользуется, а младший интересуется компьютерами, то разумеется он заразится.
> лучше бы сразу учиться понимать как процессор выполняет его программу, и как она представлена в памяти. Хотя бы в основных чертах понимать.
Да я сам-то этого не понимаю ))
- это в TP7, например? С классами и типом pointer?
> вербозность
- не думаю, что, если 25 раз подряд написать слово implementation, то это даст буст техническим знаниям
Там не было ключ слова class же:) Никаких классов и методов: типы и функции (и поцедуры)
>>если 25 раз подряд написать слово implementation
сам факт разделения интерфейса и имплементации это полезно
- хз, я так не считаю.
> Там не было ключ слова class же:
- окей, не было классов, было ООП, только с другой номенклатурой. Srsly, может лучше тогда детям уже Kotlin учить?
а я считаю потому что это воспитывает культуру понимания того что есть интерфейс модуля и его имплементация.
>>, было ООП, только с другой номенклатурой
Было, да. Но с меньшим количеством дублирующих концепций.
>>Kotlin
Ох, хз. Выводы типов и лямбды это круто конечно, но вот не очень уверен что у детей мозг не съедет
- сначала расскажи детям, что такое модуль, и чем отличаются модули в разных языках (и почему их нет в С++, гыгы), в чём различие между uses, include и import... Ну ты понел.
В 14-15 лет нужно сформировать осознание того, что (при условии, конечно, что подростку интересно и он не против дальше идти по этой стезе) код должен быть а) читаемым и б) поддерживаемым. А понимание модуля и имплементации это настолько language-specific, что отдаёт карго-культом
>> читаемым и поддерживаемым
это для него пока пустые слова.
А именно модуль (unit, как единица абстракции) вполне осязаем. В си модуль можно эмулировать с помощью .h и правильной линковки, но получится куда гавнястее чем в паскале, потому мне и кажется что поскаль более лучший язык для обучения.
>>А понимание модуля и имплементации это настолько language-specific,
Ну, в любой нормальной программе есть какие-то модули и их (модулей) интерфейсы. Они могут быть совсем неявными (как в каком-нить перле php) и очень явными как в паскале.
Если взорслому программисту можно сказать "интерфейс твоего модуля" про .php файл и он поймет, то ребенок не поймет, потому лучше ему показать что такое интерфейс буквально.
И паскаль это и делает.
- это уже задача для педагога.
> В си модуль можно эмулировать с помощью .h и правильной линковки, но получится куда гавнястее чем в паскале, потому мне и кажется что поскаль более лучший язык для обучения.
- только он выйдет из школы и паскаль никогда больше в жизни не увидит, будет писать на си, где то же самое можно сделать лишь куда гавнястее. И чему в итоге мы его научили?
и паскаль ему в этом помогает
>>никогда больше в жизни не увидит, будет писать на си,
А то и вовсе на php:) Это именно та причина, по которой я не уверен что паскалю надо учить. За пределами школы его почти нигде не юзают
Я больше предпочитаю как педагог дать человеку пищу для размышлений, а затем подождать, пока он сам не выработает знание, и будет понимать его целиком и ценить как результат собственного труда. Лично я сам такой.
Поэтому поддерживаю роскомговна, пока у человека при просмотре чужого хорошего и плохого кода, собственного кода, написанного ранее, не появиться чутьё, ему мало толку объяснять, что такое «читаемый» или «поддерживаемый» код, и педагог тут ни причём. Паскаль же, как язык, хотя бы в плане модулей меньше побуждет и дает меньше возможностей наговнять.
Так не стоит говорить, получается дважды превосходная степень. Стоит говорить просто: «более хороший», или — «лучше».
все равно первый язык не даст никакого понимания ни о модулях, ни о том, как работает пека - это магический черный ящик, который ты скриптуешь, нажимаешь волшебный хоткей, а он разраз вилкой тебе показывает чёто
а раз никакой разницы, то надо брать
1) актуальный
2) мультипарадигменный
3) с какой-никакой тупизацией, да ещё и чтобы автодополнение работало и волнистым подчеркивало ДО попытки запуска
4) с минимумом бойлерплейта
5) с какой-никакой но диктовкой хорошо-структурированного-приложения
...
6) а ещё чтобы оконные приложения с уже нормальными кнопочками и вводами можно было клепать без анальных страданий (в этом плане шарп уделывает, конечно)
ну, какбе, тот же интеллий идея у меня на убунте нормально смотрится, что доказывает, что окошки на жабе не всегда выгледят как хуй
>> с минимумом бойлерплейта
;)
Хеллоу ворлд на C#
Нет уж, лучше тогда правда на котлине.
По паскалю-то дофига
> По паскалю-то дофига
Кроме самого Вирта, что котируешь?
http://school.podvorye.ru/staff/tsvetkov/abcpascal.pdf
https://vk.com/topic-45356308_29170530
А что есть по StandardML?
Подозреваю, что The Little MLer неплохая. Сомневаюсь, что есть что-то на русском…
А ты её смотрел? Там какой-то странный формат вопрос-ответ, типа справочника, хоть и простого, но не хватает сквозного изложения последовательного и теоретических выкладок или наоборот каких-то отступлений, которые бы наглядно всё объясняли. Такое ощущение, что объясняют, что такое кирпич на примере одного кирпича, что такое цемент на примере одного киллограма цемента, и всё это якобы пособие по строительству домов. А как строить дом не показывают.
все всегда хуярили один годлайк файл, пусть даже на тысячи строк, потому что за 60 (120) минут тебе некогда думать над декомпозицией, тебе алгоритм пузырька надо хуякхуяк
там даже создание еще одного файла в "солюшен", в этом синем уебище, было через одно место
а 21 строка желтых квадратных букв на выжигающем глаза синем фоне, вкупе с ебанистически длинными проооцееедуууреее фуууунктиииооон пиздец вымораживает
единственное оправдание использованию паскаля сейчас - это мегаотсталость как компов в школе, так и учителей информатики не позволяет давать что-то более интересное и полезное
> там даже создание еще одного файла в "солюшен", в этом синем уебище
> а 21 строка желтых квадратных букв на выжигающем глаза синем фоне
Так это всё к делу не относится, если уж учить сейчас, то в каком-нибудь лазарусе или ST с подсветкой на худой конец, и компилит пусть сам в терминале под линуксом в fpc
Точно так же бы вы делали на любом языке. Я тоже так делал. А потом дома появился комп, и стало можно проводить больше времени за любмым делом.
Мой поинт очень простой.
Детей нужно учить тому что существуют модули и их интерфейсы. В поцкале это реальная сущность со своим ключ. словом.
В каком-нить питоне этой сущности нет, это чистый контракт, и объяснить его потому значительно сложенее.
>>а 21 строка желтых квадратных букв
Я не предлагаю писать на TP 7 сейчас, бож сохрани! 80x25 text mode имел смысл в 1993 году когда это был единственный способ вывести читаемые буквы. Сейчас уже нет конечно.
более того, контракты наиболее актуальны при разработке командой
когда же ты сам нихуя не умеешь в 14 лет, ты сначала делаешь огромную портянку в program Laba, тебя интересует, чтобы она наконец-то заработала, а не то, как из нее сделать какой-то модуль для чего? чтобы лабу подключить в другой лабе? ты не умеешь библиотеки писать еще, тебе не надо наиболее-часто-используемый код выносить в общую библиотеку, твой код одноразовый вообще
при этом, как я и говорил, паскаль НЕ принуждает тебя писать контракт, делай сразу глобальные переменные и хуярь в одну функцию - он всё простит, и даже не намекнет, что ты что-то ебанулся, друг
Да, но в паскале есть ключевое слово interface и оно упрощает педагогу задачу объяснения что такое "интерфейс" и "реализация":)
Я, в общем, не призываю срочно брать поскаль, я просто привел пример того, где (как мне кажется) он выигрывает в качестве учебного языка у (например) популярного нынче питона.
>>когда же ты сам нихуя не умеешь в 14 лет
Ну, первый год -- да. На второй уже неплохо бы пытаться делать там чото переиспользуемое.
>> НЕ принуждает тебя писать контракт,
А кто принуждает из боль-мень известных, кстати?
господь с тобой, педагог, который преподает паскаль, также далек от интерфейсов и реализаций, как и сам школьник
педагогу бы постараться объяснить школоте, что такое массив, цикл, чем сортировка выбором отличается от сортировки вставками и под звездочкой - что такое двоичное дерево
там даже до ООП дело не дойдет, и 80% учителей даже не понимают, что это такое и зачем нужно (но не потому, что наелись им и переросли, нет, не потому...)
а еще в паскале все плохо со параметрическим полиморфизмом и он полностью sugar-free
А ещё паскаль принуждает реюзать переменные т.к. новые добавлять сложно. И это пиздец.
Вопрос к знатокам: откуда пошло требование все переменные указывать наверху?
Это чтобы компилятору проще было сразу же посчитать размер стека?
Про сишечку не знаю, там разве есть такое требование?
Про Пасцаль — очевидно же, та самая вербозность, которую ты хвалил. Отдельная директива, отдельное ключевое слово для переменных. Код не очень красивый и писать не очень удобно, зато очень просто делать синтаксический анализатор и компилятор.
ЕМНИП, в «Алгоритмы + структуры данных = программы» как раз часть книги посвящена описанию языка, а часть — написанию компилятора для него. Если ты помнишь, Pascal первое время распространялся по универсисетам в виде бинаря сырца книги Вирта, в которой описывалось, как его сделать. :)
до C99 да.
>>Вербозность
да, у паскаля, но не у сишечке же
В начале блоков всегда можно было, вроде как.
ну вот в середине точно нельзя ьбыло
поставлю BC31 в dosbox и проверю завтра
Кстати, а насколько он похож на настоящий дос?
Потом еще были сисиее, причем вместо питух появились еще цилярон и корь
разумеется
Ты имеешь ввиду, приходится скроллить в начало процедуры?
> И это пиздец
Так уж ли пиздец реюзнуть счетчик цикла или буффер для чтения строки из файла?
Для всего остального можно и поскроллить. За одно побуждает писать процедуры покороче, разбивать на мелкие :)
- ничоси, что бывает. А кто ещё так умеет, интересно?
http://govnokod.ru/24402
а джаве до сих пор нету:)
Я помню про ООП в паскале, я его там впервые и увидел
P.S.: Горжусь тем, что за четырнадцать лет разработки на "PHP" я так и не написал ни одного класса с нуля (что, впрочем, не мешало пользоваться сторонними).
ООП немного переоценено, это совсем не серебреная пуля)
Лично я совершенно не переношу ООП. Даже когда мне пришлось на долгосрочной основе заниматься крупным проектом, первоначальный разработчик которого, подобно тебе, подтекал от некоторых ООП-моментиков, разбавляя ими зачем-то нормальный код, я как-то потратил полдня на то, чтобы заменить "mysql_fetch_object" на "mysql_fetch_assoc" и, соответственно, изменить все обращения к полям в выборке, дабы подстроить код под себя. На ООП в любых его проявлениях у меня стойкая аллергия.
A: в процедурном используется mysql_fetch_assoc, а в объектом mysql_fetch_object
В си нет сахара для RAII и наследования (да и хуй с ним), нет сахара для неявной передачи указателя на объект, а так вполне себе можно делать ООП
Проблема в том что ООП это такой симулякр дискурса странный зверь, у которого нет настолько четкого определения чтобы сказать вот тут ООП а вот тут нет.
Царь ахуенен
И ты только поля показал. А как быть с наследованием методов?
P.S. а, понял, наследование методов типа есть, только явный каст нужен. Ну можно подсластить препроцессором.
А в няшной разве не имплементейшен-депендент представление структуры в памяти? В общем случае может и не сработать.
Энивей, говнина знатная, но идея ясна: хочешь поля и методы как у структуры А, заверни А как has-a в B и юзай там внутри, только следи за всем сам вручную. Такой вроде антипаттерн есть в ООП нормального человека.
Единственное что копелятор может сделать это выравнять поля так, как ему удобно, и то только в том случае если ты его явно не попросишь этого не делать.
>>следи за всем сам вручную
Это девиз сишки ващето
И то правда.
А как в сишкооопе сделать интерфейсы?
Чтобы структура реализовывала такие-то поля и методы, и если не реализовала -- то еррор, а если реализовала, то структуры разных типов лезут в одну функцию полиморфную?
Сишка гарантирует не так уж и много. Например, есть гарантия, что адрес первого поля будет совпадать с адресом всего контейнера, но между полями могут быть произвольные дыры.
Пример с show_id практически никак не связан с ООП, это какая-то убогая агрегация структур.
Вот вам настоящее ООП, с интерфейсами
На арене -- COM.
Тут reader это объект, живет "где-то там", считает ссылки (пока я не скажу Release он не умрет), имеет интерфейс IXmlReader. В его поле lpVtbl ("long pointer to virtual table") живут указатели на мето функции, первым аргументом которым надо передавать его (явно!).
Тем не менее - всё работает
Но юзать какой-нибудь WMI из сишки -- отличное наказание для грешников в аду.
Да там даже с ATL пиздец, если честно. А на сишке это раздувается ещё раз в 10-20 из-за аллокации и освобождения строк, вариантов, обработки ошибок, вызовов release() и т.п..
Но ведь те же кресты его передают, просто неявно. Так что можно и тупо макросом:
А препроцессором нельзя что-то такое намутить?
в сишке тебе инкапсуляция (чтобы делать fooptr->bar(fooptr, ...)) обходится в анальную боль, т.к. не компилятор это сделает за тебя в *тип*, а тебе надо делать инициализацию всего перечня в *объект*
10+ лет назад были у меня серьезные проекты, где надо было на сишке вовсю наяривать вприсядку в эмуляцию ООП, я наелся этого говна, спасибо
Но дело не в говне, а в том что оно впринципе реализуемо и так делают чуваки иногда, которым важно иметь только сишный код
и ещё много других книг по нему есть.
PacalABC может работать в Линупсе под Mono, но только соснольная версия, и графические модули не доступны. Ещё к нему есть электронный задачник Programming Taskbook, модули Чертёжник, Робот, но мне неизвестно, работают ли они под Линуксом. Если очень захочется этих французских булок модулей, думаю, можно запустить венду на виртуольной машине или поставить второй осью (ничего страшного, земля ведь не разверзнется, из неё не вылезет Столлман, и не швырнёт тебя в адское пламя).
Стоит ли? Ради PascalABC.NET?
> земля ведь не разверзнется, из неё не вылезет Столлман
Ты так говоришь, как будто использование свободного ПО — это какая то вынужденная мера, или продукт принуждения. Нет, это большое преимущество. Ты бы ещё предложил пожрать говна: ничего страшного, никто ведь не заругает.
Я имею ввиду, если захочется графики в PascalABC. Можно и фрипаскаль, но я не знаю как там с графикой.
> Ты так говоришь, как будто использование свободного ПО — это какая то вынужденная мера, или продукт принуждения
МОСОНЫ ПАДМИНИЛИ МОЙ КАМЕНТ! ЗАЙДИ С ДРУГОГО КОМПУКТЕРА И ПЕРЕПРОЧЕТАЙ ЕГО!
Просто я думал, что ты опсос-радикал, и венда для тебя как свинина для мусульманина. Так-то я за свободное ПО, но и не против пипиетарщины.
Так и есть. Ты, видимо, не правильно понял моё сообщение.
Я не стану запускать в виртуалках и использовать винду без необходимости именно потому что я — опсос-радикал. Не потому, что я в тайне этого хочу, а мне Столлман запрещает.
Ты так говоришь, как будто я чем-то к этому принуждён («ничего страшного, земля ведь не разверзнется…»). Как будто я сам этого не хочу, но меня что-то вынуждает. В действительности же я хочу использовать свободное ПО, и наоборот что-то лишь может ВЫНУДИТЬ меня использовать несвободное.
;)
Я тоже не против проприетарщины, это было бы глупо (в плане приставать к другим людям и не давать им быть обманутыми, если они сами этого хотят), но мне не нравится, что винда в университетах и школах, что повсеместно стандартный формат документов — закрытый и убогий docx, что, судя по всему, просто не существует способа расплатиться кредитной картой (и всё, что с этим связано) или позвонить по мобильному телефону (и всё, что с этим связано) без использования несвободных программ. И это иногда ВЫНУЖДАЕТ меня использовать несвободное ПО, хотя я стараюсь и в этих случаях сначала поискать альтернативный вариант.
Чем он убог? И насчёт закрытости, может ли программа, работающая с пропиетартарным форматом файлов быть полностью опенсурс? Помню, как-то пейсал на своей любимой Питонии программу, генерирующую отчёты в формате docx, юзал либу python-docx (вроде, как-то так называлась, и больше я про неё ничего не помню :)).
Закрыт, недокументирован, представляет из себя зип-архив с ведром метаданных, в результате чего много весит, и сочетает в этих данных все разнообразные сорта мочи, ударившие в голову разработчикам, начиная с 97-го года. Как результат, всё, что пытается его поддерживать, делает это говёно, всевозможные генераторы кастрированы и другими и быть не могут (продакшен должен сказать спасибо, что хоть такие есть, потому что в миллионе кейсов ВЫНУЖДЕН использовать док по воле заказчика и миллиону других причин).
Кстати, вы никогда не сталкивались с ситуацией, когда файл из одной версии ворда пидорасится в другой? Я видал.
> может ли программа, работающая с пропиетартарным форматом файлов быть полностью опенсурс
Что за бредовый вопрос? Нахуя нужен проприетарный формат? Форматы, протоколы и контракты — это самое первое и самое главное, что вообще должно быть свободным и хорошо задокументырованным. Если формат закрыт, про программы мы даже говорить не станем.
Делать проприетарные форматы — это ещё большее пидорство, чем делать нестандартные разъемы для наушников и зарядных устройств. Цель такого поведения ведь всем ясна, я надеюсь?
Так я не создавал этот формат, я просто с ним работаю. Я имею ввиду, сам модуль, работающий с документом, может быть опенсурс или низзя?
Я погуглил. Ситуация больше всего похожа на т.н. “trapped” program.[1]
Но к ворду это не относится, как я уже сказал, последние версии его формата считаются открытыми, их разрешено имплементить, и никакого non-free кода ты при этом использовать не будешь, ты будешь делать всё сам.
[1] — https://www.gnu.org/philosophy/when-free-depends-on-nonfree.html
Главное, чтобы программа не зависела от несвободного кода. Если же она сама реализует несвободный формат, то программа полностью свободна.
WOW, very proprietary, such non-free.
Ололо, так ведь ms office и libreoffice также не дружат и в формате odt (ГОСТ Р ИСО/МЭК 26300-2010) - документ, созданный в одной хуйне плохо отображается во второй и vice versa.
libreoffice: привет. вот мой формат, хочешь -- поддерживай. я там всё написал.
msoffice: привет. нет, не хочу, сам поддерживай своё говно.
lo: ну ладно, тогда дай мне свой формат, а то я ничего не понимаю, что ты туда напихал, документации нету.
ms: пошёл нахуй, у меня закрытый формат.
lo: так открой
ms: пошёл нахуй, у меня рынок
lo: а как же люди, свободу которых ты не уважаешь?
ms: мне похуй
lo: понятно. я всё равно попробую расковырять твой формат и попробую его отобразить, а где документация моего формата, ты помнишь сам.
ms: мне похуй.
Но вообще это действительно отстойненько, хотя я стою на своём: мне кажется, что свободные больше со своей стороны сделали для того, чтобы это стало возможным, чем мягкие.
а оно не изменится, пока разыгрываются в стране закупки микросовтовского говна на ярды даже после того, как все покивали, что санкции хуянкции импортозамещение
Microsoft has added the format to their Open Specification Promise in which Microsoft irrevocably promises not to assert any Microsoft Necessary Claims against you for making, using, selling, offering for sale, importing or distributing any implementation to the extent it conforms to a Covered Specification
Короче, получается что действительно просто всё кривожопо сделано.