LINUX.ORG.RU

Написание свободной(Free as in Freedom) книги-самоучителя по программированию: планы, цели, задачи

 , , ,


17

9

Итак, я решил написать(или как вариант, собрать из кусочков) книгу-самоучилель по программированию, в которой бы не было глупых и нелепых ограничений на распространение. Однако копилефт я все же считаю приемлемым в данном случае. Общественным достоянием это не будет т.к. вполне могут найтись желающие использовать результат в своих проприетарных книгах, а проприетарные книги — плохо. Лицензия самого текста книги-учебника будет или Creative Commons Attribution-ShareAlike (что позволит без каких-либо проблем переиспользовать текст из википедии) или что-то вроде GNU Free Documentation License (без неизменяемых разделов естественно).

Лицензии всяких примитивных программок, написанных мной лично, будут вообще выложены под общественным достоянием, WTFPL или аналогичной лицензией т.к. являются тривиальными. Примерно вот так. Если я буду использовать чужие исходные тексты, они будут как включения, лицензируемые отдельно от всего остального. Проблем тут быть не должно.

Теперь к теме того, на кого книга ориентирована, какие начальные знания предполагаются, чему книга будет учить, какой первый ЯП взять и каков будет авторский самысел: С этим моментом я пока что не определился окончательно, и тут есть что обсудить. В частности, я не вижу особого смысла объяснять какие-то базовые понятия комбинаторики, об этом можно доступным языком прочитать из школьных учебников. Системы счисления(СС), перевод из одной СС в другую - вот это еще можно. One's и two's complement представления знаковых чисел — про это тоже можно написать. Если же человек не понимает комбинаторику, он ее быстро поймет на примере кода, который будет достаточно наглядно это показывать, и который всенепременно будет.
Пока что в качестве первого языка я склоняюсь к Си, и тому есть причины. Все прочие распространенные языки (кроме ассемблера, хотя его трудно назвать распространенным) не настолько близки к аппаратному уровню. Про нужность понимания на низком уровне написано тут http://russian.joelonsoftware.com/Articles/BacktoBasics.html https://habrahabr.ru/company/piter/blog/271347/ , не вижу смысла повторяться. Приведу лишь цитату:

«Просто плохой воркшоп попался», — скажете вы. Но на этом примере я хочу подчеркнуть более масштабную проблему: не изучив для начала C, программист оказывается лишен необходимых орудий, позволяющих понять, что именно происходит в используемой системе. Если вы — умный и пытливый питонщик, то вскоре докопаетесь до плотных пород языка C. Под этими горизонтами, скажут вам, «бойся драконов, костей и отладчиков». Соответственно, если вы не будете достаточно отважны и не проигнорируете предупреждений «да не берись ты за этот C», вы никогда не исследуете глубин, на которые можно забраться просто из любопытства.

Притом еще один важный момент: Си будет изучаться параллельно с ассемблером. Если речь идет об изучении ассемблера, необходимо четко зафиксировать то, на какой архитектуре это все происходит и в какой ОС. Так вот, ОС будет GNU/Linux а архитектура x86-64. Будут постоянно проводиться параллели между тем, что из себя представляет код на Си в текстовом виде, и тем, в какой текст на ассемблере его превращает компилятор. В связи с этим, первым делом будет рассказано о goto и конструкции if(условие) goto метка;. Про конструкции вида

if(условие)
{
  что-то_делаем;
}
else
{
  что-то_другое_делаем;
}
Будет рассказано немного позже, притом это будет рассказано и словами, и через написание эквивалентного кода через if(условие) goto метка;. Циклы, for(){} while{}, do{}while(), конструкция switch-case и break continue внутри них будут так же объясняться через все тот же if(условие) goto метка; притом будет делаться явный акцент на том, что намного лучше использовать нормальные циклы, чем лепить всюду этот условный goto. Кроме того, будет так же рассказано про Labels as Values. Почему так важна эта странная штука, if(условие) goto метка;? Потому что она имеет наипрямейшее отношение к тому, как работают ЭВМ, а всякие циклы СКРЫВАЮТ это. Рекурсия в Си будет объясняться только после того, как будет объяснено, что такое стекфрейм и соглашения вызова, будет сказано про оптимизацию хвостовой рекурсии, и о проблеме забивания стека, если такая оптимизация не происходит, притом это будет наглядно показано в ассемблере. Учиться отлаживать код надо будет тоже «с пеленок», притом отлаживать и ассемблер, и всякие там Си. Будет и про асм-вставки в Си, clobber list. В качестве ассемблера будет рассматриваться GAS, а никакой не NASM т.к. GCC умеет выплевывать ассемблер именно в GAS синтаксисе. Насчет выбора Intel или AT&T синтаксиса - тут я склонюсь пожалуй к тому, что надо ЗНАТЬ И УМЕТЬ ПОНИМАТЬ ОБА. Кроме того, GAS давно уже умеет в оба синтаксиса, так что проблем с этим не будет. Единственная проблема с GAS в том, что это однопроходной ассемблер, так что можно освоить и какой-нибудь NASM, YASM.

Первые хеллоуворды будут написаны вообще в особом стиле, без использования printf() и вообще без библиотеки Си; Будут использованы куски на ассемблере, которые делают системный вызов write и read, и с ними можно(нужно) будет линковаться, чтоб что-то вывести на экран. Будет рассказано и про printf естественно, но только когда будет совершенно четко ясно, что такое вообще va_list. Будет куча отсылок к драфту стандарта Си (недрафт почему-то платный). Будет так же рассказано про устройство ОС. В конце скорее всего будет дано задание сделать свою игрушечную ОС так что предполагается что человек к тому моменту должен уже отлично понимать всякие там связные списки, графы, очереди, спинлоки-аллокаторы свои уметь делать на асме при желании. Алгоритмы сортировки, обхода графов, хеш-таблицы, все это будет объяснено на языке Си, и плюсов вообще касаться я не буду.

Насчет графики: работу с протоколом иксов тоже можно будет рассказать, обработку нажатий клавиши. Правда там надо дофига писать про кучу всего, например что есть сокеты, есть AF_LOCAL... Тогда это можно еще и сетевому программированию учить на каких-нибудь беркли-сокетах.

Кроме того, после моей книги предполагается, что человек должен уметь заниматься такими ненужными (в GNU/Linux) на первый взгляд вещами, как крякинг, реверсинг, исправление ошибок в бинарниках, не обладая исходным текстом. Восстановление логики работы программы по дизасму. Ну и программирование в машинных кодах (без ассемблера, одним HEX редактором).

Как-то уж слишком дофига, не находите? Может быть не надо так глубоко во все это нырять? Жду предложений и критики по поводу того, что нужно, а чего не нужно писать. Возможно что я слишком много хочу.

cast ASM be_nt_all mister_VA

UPD: Программирование и отладка на C/ASM - Первые программы. Знакомство с C и ассемблером. Компиляция, линковка, код возврата. Вывод текста.

★★★★★

Последнее исправление: CYB3R (всего исправлений: 6)

Ответ на: комментарий от SZT

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

ну и регулярки будут от пальцев отскакивать.

qulinxao ★★☆
()
Ответ на: комментарий от SZT

если сохранять серьёзность то сырцы Дениса Ритчи реально полезны для с-скила.

qulinxao ★★☆
()
Ответ на: комментарий от SZT

Отлично, только давайте это писать в статье на вики,

Вы пишете книгу, прошу вас этот текст и вставить. Более того текст требует доработок и исправления ошибок. Я предпочитаю не писать книг, а только читать и критиковать.

Что касается лицензий, всё что я вам тут посоветую, считайте что написали Вы в бреду или помутнённом сознании. Никаких претензий я предъявлять не буду.

И книга не только для студентов

Об этом и напишите сами. Я уже вас раза 3 или 4 просил написать что-то подобное, чтобы можно было понять что вы вообще за книгу собрались писать.

Потом может быть выложу на гитхаб или еще куда-то

Очень жаль, лучше прямо сейчас. Копипастить из wiki желания нет никакого. Но погонять ваши примеры я могу.

Надо рассказать, чем вообще пользоваться чтобы редактировать код.

Надо тогда и рассказать как пользоваться компьютером не? Будет пользователь знать, что есть какие-то редакторы, но не сможет их запустить, так как не найдёт кнопку включения компьютера. Рекомендую перечитать раздел 1.4 в книге Croco.

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

А то я вот открываю главу про С, а мне про какие-то редакторы....

ASM ★★
()
Ответ на: комментарий от anonymous

О, спасибо. Кажется, я это когда-то даже читал, только ссылку потерял.

И список литературы там тоже хороший, хоть он уже ведёт на английские источники и часть ссылок битая.

А что такое «по архитектуре» ?

Хороший вопрос. Существует 150 определений, что такое архитектура ПО. Ну а в контексте моего вопроса это: из каких компонентов состоит, как они взаимодействуют, какие API предоставляет, как конфигурируется. Применительно к иксам - там же тонна утилит для разнообразных настроек.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от curufinwe

Да, хорошо. Надо бы написать статью про то, как можно с сишным препроцессором поиграться отдельно, т.е. показать, что это такая отдельная программа, которая просто выполняет какие-то подстановки текста

SZT ★★★★★
() автор топика

Пока что в качестве первого языка я склоняюсь к Си

и сразу фейл

Debasher ★★★★★
()

Пока что в качестве первого языка я склоняюсь к Си, и тому есть причины. Все прочие распространенные языки (кроме ассемблера, хотя его трудно назвать распространенным) не настолько близки к аппаратному уровню.

Ну так с ассемблера и начни. А если совсем с нуля, то с какого-нибудь учебного аппаратнонезависимого.

anonymous
()
Ответ на: комментарий от anonymous

Ну так с ассемблера и начни. А если совсем с нуля, то с какого-нибудь учебного аппаратнонезависимого.

Предлагаете написать прохождение к игре tis-100?

ASM ★★
()
Ответ на: комментарий от aarexer

Виталий Светославович Луговский, перелогиньтесь, пожалуйста.

Что за бред? Как можно сравнивать этот словесный понос с четким и практичным стилем Виталия?

anonymous
()

Автор, имея [похоже] достаточно поверхностные представления о разных околосистемных темах, решил что это можно уместить в одну книгу, да еще и написанную хайвмайндом. Книги так не пишутся; чтобы написать книгу нужно иметь в голове продуманный план (а не «еще можно добавить статью об этом», «ну можно об этом упомянуть вскользь»), а так же уметь четко формулировать мысли (по комментам и первым страницам этого пока не видно).

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

unlog1c ★★★
()
Ответ на: комментарий от hobbit

Ну а в контексте моего вопроса это: из каких компонентов состоит, как они взаимодействуют, какие API предоставляет, как конфигурируется.

Наверно тут: http://x.org/wiki/guide/ и вокруг по сайту. Про окружение: https://www.freedesktop.org/wiki/Specifications/ . Переводов не знаю.

Хорошие книжки и доки остаются мечтой. Приходится разгребать сотни страниц [ для_чайников /профессионалов /идиотов ] или на english-e или мусор из поиска.

anonymous
()
Ответ на: комментарий от unlog1c

Автор заявил, что может написать книгу лучше чем получилось у Вышел первый том книги А. В. Столярова «Программирование: введение в профессию», что у него для этого достаточно времен и опыта.

В результате он начал писать что-то совершенно другое на совершенно другую тему. Причем что конкретно должно получиться и на кого эта книга должна быть расчитана мало кто понимает (если вообще есть такие).

Все советы о том, что нужно составить план, а если книга публичная (включатся в написание может любой), то и подробно расписать его он игнорирует. Так что берите попкорн и присоединяйтесь, пока автор окончательно не пропал из этого треда.

ASM ★★
()

Притом еще один важный момент: Си будет изучаться параллельно с ассемблером.

ещё парочку!

Пока что в качестве первого языка я склоняюсь к Си, и тому есть причины. Все прочие распространенные языки (кроме ассемблера, хотя его трудно назвать распространенным) не настолько близки к аппаратному уровню.

шелл, ассемблер, си

anonymous
()
Ответ на: комментарий от ASM

Автор заявил, что может написать книгу лучше чем получилось у Вышел первый том книги А. В. Столярова «Программирование: введение в профессию», что у него для этого достаточно времен и опыта.

Про лучше-хуже я ничего не заявлял. Времени у меня достаточно, да и опыта вроде тоже хватает, раз я со студентами занимался. Просто вот книги я до этого никогда не писал, это да. НО как раз вот буду оттачивать этот навык. Советую следить за обновлениями на вики. Забрасывать это дело я не буду

В результате он начал писать что-то совершенно другое на совершенно другую тему.

А по-моему все пишется как раз на ту самую тему. Там потом будут рассматриваться все эти хелловорды в дизассемблированном виде.

Все советы о том, что нужно составить план, а если книга публичная (включатся в написание может любой), то и подробно расписать его он игнорирует. Так что берите попкорн и присоединяйтесь, пока автор окончательно не пропал из этого треда.

План есть. Только он недостаточно структурирован. Его надо доработать и преобразовать в более нормальный вид, да. По ходу дела будет ясно.

SZT ★★★★★
() автор топика
Ответ на: комментарий от den73

Возьми ещё Forth, он содержит очень важные концепции метапрограммирования, которых в C нет

Поддерживаю, без параллельного процесса пишем свой форт с шахматами и поэтессами в такой книжке, думается не обойтись.

be_nt_all ★★
()
Ответ на: комментарий от be_nt_all

Да, кстати. Раз вы администратор википедии. При непосредственном включении материалов из вики в свои статьи (лицензия там Creative Commons «Attribution-ShareAlike») нужно ли мне ссылаться на саму статью, что вот этот материал взят из вики, или можно просто спокойно копировать текст и вставлять, не думая ни о чем? Мне вот например хочется взять материал отсюда https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences чтобы самому это не описывать

SZT ★★★★★
() автор топика
Ответ на: комментарий от SZT

Если книга пишется в викидвижке, ссылки на оригинал в истории правки традиционно считается достаточным, в случае github, думаю тоже хватит описания в истории коммита.

be_nt_all ★★
()
Ответ на: комментарий от SZT

Так как насчёт Forth? Вот уж где машиннонезависимый (почти) и при этом хорошо расширяемый ассемблер. Я бы даже рискнул предложить Forth (видимо SP-Forth, как более низкоуровневый, GNU-Forth изнутри это наверное немного не то) в качестве языка «сразу после Си», перед ассемблером. И да, давать упор не на изучение какой-либо существующей реализации, а на эксперименты с собственными реализациями, и да, на связывание форта и Си. Лично мне было бы интересно поучаствовать в книжке «как стать низкоуровневым программистом» именно такого плана. Если вас такая идея не увлекает, видимо попробую начать такое в викиверситете/викиучебнике (сначала в первом — тезисы, практикум, ссылки на материалы, потом во втором — более менее законченный текст).

be_nt_all ★★
()

Мужик! пиши, причем пиши так: составь оглавление и делай главы не по порядку, а так как хочешь и есть мысли, доделывай/переделывай, и походу работы будет и критика и недовольство, и думаю что получится, начинай.

mul4 ★★★★★
()
Ответ на: комментарий от be_nt_all

Так как насчёт Forth?

Да, можно про Forth рассказать. Forth — штука интересная вне всякого сомнения. Когда я буду писать про машину Тьюринга (там будет про реализацию интерпретатора какого-нибудь брейнфака на Си и на ассемблере, а не просто про каких-то сферических коней в вакууме) можно будет рассказать и про шитый код, интерпретаторы, JIT, как придумать свой байткод, вот это все. И там можно упомянуть про Forth. Надо для начала разобрать более базовые вещи, например связные списки, которые будут нужны для реализации Forth-интерпретатора. Поиск слов-определений в этом связном списке, вот это все. Это нетривиально.

Я бы даже рискнул предложить Forth (видимо SP-Forth, как более низкоуровневый, GNU-Forth изнутри это наверное немного не то) в качестве языка «сразу после Си», перед ассемблером.

Си и ассемблер будут разбираться примерно одновременно. Т.е. будет рассматриваться код Си с точки зрения ассемблера, и наоборот.

И да, давать упор не на изучение какой-либо существующей реализации, а на эксперименты с собственными реализациями, и да, на связывание форта и Си.

Всецело одобряю такой подход. Но это надо давать уже на более поздней стадии. Forth это более высокоуровневая штука, чем какой-то там Си и тем более ассемблер.

Если вас такая идея не увлекает, видимо попробую начать такое в викиверситете/викиучебнике (сначала в первом — тезисы, практикум, ссылки на материалы, потом во втором — более менее законченный текст).

Идея увлекает, но начать на мой взгляд следует с Си и ассемблера, а Forth это уже скорее из разряда интерпретируемых языков (хотя компиляторы Forth вне всякого сомнения есть, но скомпилировать Forth в ассемблер и скомпилировать Си в ассемблер это сильно разные вещи)

Пишите конечно же, если есть желание. Потом я вероятно буду ссылаться на этот материал, и возможно даже включу его в свою книгу. Можете писать это в lorwiki как вариант. Естественно, я не против переноса моего текста из lorwiki в викиверситет/викиучебник, так что можете переспользовать мой текст.

http://www.forth.com/starting-forth/ вот кстати есть несвободная книга про форт в открытом доступе.

SZT ★★★★★
() автор топика
Ответ на: комментарий от SZT

Ок. Хотя лично я привык считать форт именно низкоуровневым, из=за отсутствия в базовом форте каких-либо средств типизации. Ну и простоты как интерпретации, так и компиляции. Про Starting Forth в курсе конечно, а Thinking Forth так и почти под свободной лицензией (CC-BY-SA-NC — последние две буковки в проектах викимедиа использовать правда запрещают)

be_nt_all ★★
()

Си будет изучаться параллельно с ассемблером.

Вот это зря. Когда сам учился, начинал с «поскакаля», потом на втором курсе пошел Си. Так вот тестовые задания по отладке худо-бедно выполнял процентов на 80 интуитивно, вроде как «чую что верно, а толком объяснить не могу». Реальное понимание пришло, когда сунул одной программерше бабосы и за 4 месяца методично прошел с ней книжку Питера Нортона «язык ассемблера для ДОС» (могу ошибаться в названии, на обложке на фоне компа сидит на молоденький Питер Нортон скрестив руки на груди). Хотя то самое «ааааа так вот оно как работает» - пришло уже где-то на второй месяц.

ioway
()
Ответ на: комментарий от ioway

три этапа:

1) шелл: изучаются основы архитектуры компьютера, программирования, взаимодействия «человек - железо»; 2) язык ассемблера: углубленное изучение архитектуры, программирование железок; 3) Си: изучение и предпроизводственная практика (изучаем примеры чужого, пробуем сами).

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

anonymous
()
Ответ на: комментарий от be_nt_all

это точно более высокий уровень

вы упрлс?

лисп замечательный ассемблер.

именно поэтому метациркулярный репл Макартни и создал обнаруживая что нет нужны в М-выражениях а достаточно испльзовать базовые S-выражения для всего.

qulinxao ★★☆
()
Ответ на: комментарий от anonymous

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

ioway
()
Ответ на: комментарий от qulinxao

лисп замечательный ассемблер.

только со сборкой мусора и динамической типизацией… ассемблер лисп-машины, короче.

be_nt_all ★★
()
Ответ на: комментарий от be_nt_all

останавливающий мир сборщик вообще не рокет сайнс.

динамическая типизация??? вы про теги типов?

лисп (особливо 1.5) буквально ассемблер car|cdr буквально команды хост-машины.

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

останавливающий мир сборщик вообще не рокет сайнс.

нет, но это некое удаление от уровня железа, как и теги типов. Высокий и низкий уровень, это ведь просто оценка количества работы, которая переносится с программиста на транслятор. Вы, похоже, почему-то склонны преувеличивать ту её часть, которую делает синтаксичекий анализатор. Да, в языках Lisp- и Forth- семейств синтаксический анализатор придельно редуцирован (но, кстати, при этом открыт для расширения), недалеко от них ушёл, к примеру, Tcl, но это только один из аспектов «низкоуровневости». Есть ещё и runtime, и в лиспах он, скажем так, есть. В фортах, даже тех, которые используют шитый код, считай что нет, есть договорённость об использовании двух, а не одного стека, для организации вызова подпрограмм и передачи параметров, а в остальном там уровень «голого железа», или что-то к нему очень близкое, даже в реализациях, использующих честный шитый код, а не «подпрограммный шитый код» сводящийся к машинному. На некоторых процессорах «адресный интерпретатор» оного шитого кода сводится к одной команде.

be_nt_all ★★
()
Ответ на: комментарий от be_nt_all

ограничемся лиспом.

останавливающий мир сборщик мусора ровно так же далёко-близок как малок-фрии подсистема в кондовом с. и то и то рантайм который при запросе к нему пользовательской программы даёт память. в первом случае эта подсистема сама следит за наличием и количеством легальных «имён» на конкретное место - во втором случае подсистема ограничена тем что следит какой статус у места и по запросу перебрасывает из одной в другую(в простейшем случае реализации с уб при повторном освобождении уже свободного места)

qulinxao ★★☆
()
Ответ на: комментарий от be_nt_all

охухоюшки.

в си - малок (если мы за динамику - ибо иначе можно скатиться до того что когда в си идёт вызов функции запрос на автоматическую память делат рантайм) - в лиспике - конс- если пришло вроме уборка.

в си - фри, в лиспике - закрытие области жизни - деканье счётчиков

.

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

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

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

И что вы, милсдарь, пытаетесь доказать? Что реализацию простого Лиспа начинающему низкоуровневому программисту стоит изучать? Если бы я считал иначе, я бы на Build You Own Lisp ссылку не давал. Что в лиспе нет дополнительного, по сравнению с тем-же фортом, к примеру, уровня косвенности, вы мне, простите, не докажете. Как по мне, очевидно что этот дополнительный уровень есть. Простой-ли, сложный-ли, но есть. Соответственно повышается и уровень языка. А если мы решили изучать программирование не как нибудь, а «снизу вверх» то начинать надо не с Лиспа и его реализации.

be_nt_all ★★
()
Ответ на: комментарий от be_nt_all

Лисп как и Си по честно-честному относятся к полусредним и наискосок языкам -

вообще языки_высокого_уровня как термин адекватно середине 60ых после же чем дальше тем больше это маркетинговый термин как ооп0евангелизм начала 90ых.

исходный тезис с моей стороны что Лисп это ассемблер - (да машины со сборщиком муссора) - как Си ассемблер машины со стеком.

qulinxao ★★☆
()
Ответ на: комментарий от be_nt_all

т.е не только лисп машины - но и всякой где сборка муссора тем или иным способом реализована-

например можно реалзовать лисп компилятор который в юниксе будет использовать сервисы файловой подсистемы как менеджер пёрсистентых обьектов ....

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

Лисп как и Си по честно-честному относятся к полусредним и наискосок языкам -

Всё относительно.

вообще языки_высокого_уровня как термин адекватно середине 60ых после же чем дальше тем больше это маркетинговый термин как ооп-евангелизм начала 90ых.

Лисп он из начала 60-х, к слову.

исходный тезис с моей стороны что Лисп это ассемблер - (да машины со сборщиком муссора) - как Си ассемблер машины со стеком.

С этим тезисом я согласился сразу, по крайней мере с первой его частью. С Си не всё так просто, по мне чистый ассемблер кончается там, где начинается какая-никакая статическая типизация. Я бы назвал форт ассемблером стековой машины, но это ассемблер двустековой машины. А всякие C-- — на сегодняшний день как-то уж совсем маригинально смотрятся.

be_nt_all ★★
()
Ответ на: комментарий от qulinxao

т.е не только лисп машины - но и всякой где сборка муссора тем или иным способом реализована-

Ага, и теги типов заодно. Это — две такие штуки, с которыми вычислительная система (в железе ли, в микрокоде или виртуальная) может работать условной лисп-машиной.

be_nt_all ★★
()
Ответ на: комментарий от qulinxao

например можно реалзовать лисп компилятор который в юниксе будет использовать сервисы файловой подсистемы как менеджер пёрсистентых обьектов ....

Сначала, когда я это прочитал, я представил себе троллейбус, сделанный из буханки хлеба. Потом перечитал… и всё равно не понял практического предназначения такой штуки. То-есть я могу попытаться представить себе лисп-Ось где файловая система будет менеджером пёрсистентых обьектов Лиспа, но ссуществующие файловые системы, imho, для этих целей будут оверхедом, не?

be_nt_all ★★
()
Ответ на: комментарий от be_nt_all

оверхед оверхедом

а вот способность самостоятельно использовать ножницы в качестве грузика маятника это когнитивная способность необходимая программистам.

см. https://www.youtube.com/watch?v=iG9CE55wbtY Кен Робинсон: Как школы подавляют творчество (...)

манипуляция но всёж.

qulinxao ★★☆
()
Ответ на: комментарий от deadskif

Тем что миниязык форматов функции printf — достаточо специфичный, хотя и зашитый в libc, интерпретатор, и это точно не то, с чего надо начинать изучение языка C и низкоуровневого программирования.

be_nt_all ★★
()
Ответ на: комментарий от deadskif

Там потом будет написана своя функция на ассемблере(без всяких main и libc, будет через _start), в которой системный вызов write дергается через syscall и все это будет запускаться через strace и gdb.

SZT ★★★★★
() автор топика
Последнее исправление: SZT (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.