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)
Ответ на: комментарий от anonymous

Это больное что ссало тебе на рожу при любых твоих попытках показать свой уровень «интеллекта», хотя ладно.

Ну хорошо - царь - пень. Не смеет, не понимает, херню несёт - ну давай, амёба - высри что-то против меня. Почему же ты боишься? А по той же причине - ты будешь обыгран и обоссан, собственно как и всегда. И зачем ты это пишешь - непонятно.

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

Откуда auto в Си?

Л - ламерок. Оно там всегда было.

Чтооо? А кто дал гарантии, что там эти аргументы передаются чере стек, а не регистры?

Бородатые года и скол.

А кто сказал что у нас стек растет вот в ту сторону, а не в другую?

Бородатые года и скилл.

Этот бред имеет смысл если у нас там INT_MIN торчит.

Этот бред имеет смысл всегда.

НО если там INT_MIN то этого x = -x; делать нельзя — UB

Пруф.

Там ниже есть проверка:

if(x<0)

Т.е. ты никого не поймал, а перданул в лужу.

Может это какой-то особый Си, в котором это не UB

А можно ссылку на уб?

в котором есть auto

Оно итак есть.

в котором кто-то четко определил, что вот в таком порядке мы аргументы в стек запихиваем и что стек вон в ту сторону растет?

Ну тогда пацаны обладали логикой - это слишком сложно для тебя. Нет смысла хранить аргументы как-то, кроме как по-порядку.

Ну в целом сразу шаблон протёк - балабол кукарекал про «понимание», а теперь пытается цепляться за какие-то абстрактные понятия. Чего и требовалось доказать.

registrant27492
()
Ответ на: комментарий от SZT
main:
.LFB35://что это?
        .cfi_startproc      # это директива GAS что начало процедуры
        subq    $8, %rsp    # отмотать стек (стек растет снизу вверх)//зачем ты мне комментируешь что это - ты объясняй зачем. Зачем его отматывать?
        .cfi_def_cfa_offset 16
        # Дать сcылку https://stackoverflow.com/questions/7534420/gas-explanation-of-cfi-def-cfa-offset
        # и документацию GAS
        # https://sourceware.org/binutils/docs/as/CFI-directives.html
        # Пока что этот момент можно особо не разжевывать, важно понять про соглашения вызова, принятые в GNU/Linux
        //опять же - ссылки, херня - объяснений ноль. Тут либо два варианта - автор не понимает, автор объяснить не может, что равно "не понимает". Другого не дано.
        # надо сказать про System V AMD64 ABI соглашение вызовов.  https://en.wikipedia.org/wiki/X86_calling_conventions#List_of_x86_calling_conventions
        movl    $13, %edx     # 13 это размер строки  (3-й аргумент в edx)
        movl    $.LC0, %esi   #  .LC0 это адрес (указатель) строки (2-й аргумент в esi)
        movl    $1, %edi      # 1 это STDOUT_FILENO (1-й аргумент в edi)
        call    write         # Вызов write
        xorl    %eax, %eax    # Зануление eax потому что return 0

        addq    $8, %rsp      # Стекпоинтер вернуть на место//зачем?

        .cfi_def_cfa_offset 8 # Это уже объяснено
        ret                   # Возврат из main
        .cfi_endproc          # Конец процесса//а, т.е. это конец процесса, а то начало процедуры. Логично.

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

Бинарники - это так мило.

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

Т.е. в учителя идёт не человек,

тут слишком категорично. вон в интервью https://www.youtube.com/watch?v=ZO0PXYMVGSU точнее, что учительству предшествует участие в реальной деятельности по специальности.

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

Задача стоит «дать полное понимание всей этой лабуды на низком уровне» и смесь Си и ассемблера для этого подходит просто идеально.

Для этого надо с транзистора начинать.

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

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

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

Ну и да - есть такие люди, которые исключение, но это исключение, а не какой-то там редкий, либо обычный случай. Пройди по всем учителям и задавай вопрос - что сделал этот учитель? Написал хелворд на недоязычке, а после вдруг решил сделать куллкресты? Кое-как что-то там наваял, но никто это не видел и не использовал. А теперь просто говорящая голова. И так куда не возьми - так везде. Что сделал? Ничего, либо хелворд 40лет назад. Но это не интересно.

Тут даже чисто праздный интерес - зачем успешному деятелю по специальности идти просиживать штаны обучая студентов? Это не выгодно.

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

Нет. Есть область программная - она ограничена программным уровнем и тем железом, что в него торчит. Транзистор в него не торчит, а значит к теме отношения не имеет.

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

Тут даже чисто праздный интерес - зачем успешному деятелю по специальности идти просиживать штаны обучая студентов? Это не выгодно.

если это искренне, то ты тут сильно выдаёшь наличие своих тараканов.

например отчего Страуструп ща совмещает синекуру в морган-стенли С курсами у первокуров в Техаском?(риторический)

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

да вон просто разреши вон очередная цитата:

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

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

и опять же обучение широкий термин.

есть «ускоренные курсы»(и печаль что они длятся 5 лет и узурпировали словосочетание высшее_образование) которые могут давать сами окончившие тока что таковые.

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

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

например отчего Страуструп ща совмещает синекуру в морган-стенли С курсами у первокуров в Техаском?(риторический)

Страуструп - говорящая голова, никакого отношения не имеет к работе по специальности. Естественно для любой головы пиар и аудитория крайне важна. Совмещает - что из этого должно следовать? ЧТо дальше?

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

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

А то, что каждый гуру пытается быть «разносторонней личностью» и это очень хорошо влияет на хомячков-почитателей - ну это банальные основы. Зайди в любой ящик/помойка - там у домохозяек то же самое. Наша любимая говорящая голова из ящика не просто голова, а спортсменка/деятель культуры/филосов и прочее.

Чем отличается реальный пацан и говорящая голова. В пацане чего-то стоит его скилл - т.е. его работа. Ты знаешь реальных деятелей искусства по их произведениям, а всяких там новомодных певичек по «личности» - это говорящие головы.

Пацан - его личность - это его плоды деятельности, а голова - она голова. Это принципиальное отличие.

У вас какие-то странные представления о мире - я помню как с кем-то срался про кнута и его отпрыска. Там пациент то же свято верил, что отпрыск кнута где-то там в адобе что-то там развивает.

Это хорошо - считать себя, казаться не домохозяйками, имея сознание и понимание домохозяйки.

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

Знаете, вы по моему пытаетесь переписать книгу «Linux. Программирование в примерах» Арнольд Роббинс

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

Просто написать хелловорд - мало. Надо еще понимать, что он делает системный вызов write в некий файловый дескриптор, и это уже приводит к тому, что на экране терминала появляется некий текс.

А как работает системный вызов понимать не надо разве? Как строка из памяти программы на экран? Объяснений пока нет. В ваших примерах даже самих вызовов сисколлов нет, вызывается враппер из сишной библиотеки. Что это, откуда и как оно внутри само работает - не объяснено. Кто вызывает функцию main, где этот код? Объяснений нет. Куда возвращает ret в конце main, где тот код который выполняется после и вызывает сисколл выхода из процесса, который виден читателю в strace по вашему совету.

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

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

некий файловый дескриптор

Вот именно что некий, объяснить же надо какого лешего чтобы вывести строку на экран, надо писать в файл. А это уже абстракции. Вот в DOS таких абстракций бы не было.

curufinwe ★★★★★
()

curufinwe

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

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

Человеку нужно представление о мире - чем оно точнее, тем точнее выбор человека - он меньше встречает стен, ибо может их предсказать.

И делясь мыслями - там, где в твоём представлении нет стены - в моём есть - это поможет тебе в неё не вписаться. Почему это бесполезно? В чём-то представление каждого более точно, чем другого - и проще взять этого одного, чем строить какие-то «правильные модели» и обделаться.

Непонятно, что ты хочешь своими постами доказать и добиться.

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

Я написал что-то, либо выразил несогласие с чем-то. А посты - это следствия чей-то попытки поспорить со мною.

И что в итоге? Чем ты сам можешь доказать, что на что-то способен, чего сам достиг?

Опять же - попытка к сливу и оправданию. Мне не надо ничего доказывать - я уже доказал - не согласен - докажи обратное.

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

В какой предметной области работаешь?

Нивкакой.

Пока складывается впечатление, что ты и есть «говорящая голова»

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

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

Доказывает - что собеседник не может говорить о сишке, не? И доказывает то, что я говорить о ней имею прав больше, чем остальные?

Где реальный результат твоих скиллов?

А где я что-то говорил на тему «как надо получать результат»? Вернее то, что является результатом для тебя. Я не лезу туда - я не рассказываю никому что и как делать.

Когда я говорю «надо делать так», я всегда делаю приписку, что в других условиях. Т.е. ты мне, эксперту по обходу проблем говоришь - а какие проблемы решил ты? Я на то и не решил их, что я их обошел. Понимаешь?

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

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

Мой результат - вот. Знание. Ты же со страуструпа не требуешь пруфцов? А почему с меня требуешь.

Я считаю себя адептом некстген теории, которая является не просто «бла-бла», а реально - если я знаю - я знаю. Если я понимаю - я понимаю.

Твой подход сейчас типичный для всех - попытка как-то меняй поймать, уличить, защитить себя и свой мир. В твоих попытках нет смысла - зачем ты ищешь везде подвох?

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

Если ты сможешь воспринимать всё объективно - у тебя проблем не будет.

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

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

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

Бокал шампанского этому господину! Если найдется такой благодетель, то буду очень рад.

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

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

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

Твои знания я не оспариваю. Я высказываю мысль, что цена знаниям без практического применения - ноль. Ты все знаешь, но ничего не делаешь получается, ну и зачем было все это изучать. Чтобы тебя уважали за твои знания? Мне ни тепло ни холодно от этого. Каким результатом применения тобой твоих знаний я могу воспользоваться? Если никаким, я не могу удостовериться, что к тебе можно прислушиваться. Знания сишки - это одно. Но в вопросах «сишники не отлаживают код», «сложные проекты не отлаживаются» почему тебе можно доверять? Какие сложные проекты ты сделал, чтобы так утверждать? Я уже не говорю про остальную правду жизни, излагаемую тобой. Знаний узкой технической области не достаточно, чтобы твое мнение имело вес, особенно по вопросам за пределами этой области.

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

Уличить я тебя ни в чем не пытаюсь, и моему миру твое «изложение мыслей» никак не угрожает, уж поверь. Просто ты тут довольно неординарный участник дискуссий, и я пытаюсь понять для себя некоторые вещи о тебе.

Почему для вас обязательно нужна голова? Знание, информацию - она не зависит от того, кто я, что я, почему я.

А почем я знаю, информация, которую ты даешь, стоит внимания или нет? То, что ты пишешь касательно низкоуровщины, легко проверить и это вопросов не вызывает особых. Но мнение по другим вещам спорно, вот я и пытаюсь понять, что ты представляешь из себя кроме знаний низкоуровщины.

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

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

если бы они хотели так сделать, они бы уже так сделали

рекомендую её хотя бы прочитать

Затем.

дело твоё, конечно

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

одна из тех книг которая у мя есть в мёртводеревном виде. ВОТ!

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

Чем отличается реальный пацан и говорящая голова. В пацане чего-то стоит его скилл - т.е. его работа. Ты знаешь реальных деятелей искусства по их произведениям, а всяких там новомодных певичек по «личности» - это говорящие головы.

Если я тебя ни по работе, ни по личности не знаю, то что тогда?

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

Хорошо - раз ни одно ДЕЛЬНОЙ мысли, значит есть не дельные. Ну вот покажи эти «не дельные» и объясни почему они «не дельные», а не дельные. Вперёд.

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

Ваш пост оскорбляет настоящего Виталия.

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

Лучше писать «хеллоуворлд», а не «хеллоуворд».

Что такое puts-хеллоуворд в ходе прочтения до кода не понятно, читатель еще puts не видел, тем более в примере fputs (???) Пример не компилируется, или так изначально задумано? )))

Многовато воды и отвлеченных рассуждений в тексте, мое мнение - нужно больше четких последовательных действий и меньше о том, «о чем тут не буду писать».

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

Твои знания я не оспариваю. Я высказываю мысль, что цена знаниям без практического применения - ноль.

Враньё. Эти знание получить без «практического» применения нельзя. Т.е. если я объясняю «как пилить» и кто-то не согласен, но проигрывает - я знаю лучше. Тем более я могу и показать как пилить. Но мне не обязательно выпиливать себе дом/сарай/сортир/стул/стол - т.е. то, что ты понимаешь под изделиями. Я не рассказываю тебе «как делать дом» - я рассказываю как «пилить». И для этого достаточно показать «как пилить», а дом показывать не обязательно, да и иметь не обязательно.

Ты все знаешь, но ничего не делаешь получается, ну и зачем было все это изучать.

Я не всё знаю - я знаю минимум необходимого. Да и я делаю, только не то, что понимаешь под этим ты. Домохозяйка под программой понимает эксельчик и кроме ексельчика для неё ничто не программа - как ей можно объяснить, что какая-то там неведомая либахерня - программа?

Так же и тут. Я пилю подходы, какие-то конкретные узкие реализации, которые требуют ручного запила. Это моё хобби. Ваять что-то, чтобы показать домохозяйкам - мне не нужно - зачем?

Чтобы тебя уважали за твои знания?

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

Я пытался прибиться к каким-то кругам - слишком дебил либо я, либо не нужен я - непонятно.

Каким результатом применения тобой твоих знаний я могу воспользоваться?

Результатом - он здесь. Уметь пилить нормально. Можешь узнать что-то новое, что поможет тебе.

Никакие готовые «применения», чтобы ты их на халяву юзал - я выкатывать естественно не будет - зачем? Моя частичная цель сделать так, чтобы кто-то мог, а не кто-то на халяву лутал.

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

Опять же - у вас какое-то странное представление о мире - вам постоянно нужны авторитеты, вера и прочее. Зачем? Какая тебе разница? Я что-то сказал/что-то вывелось из моих срачей - какая разница, если оно работает?

Но в вопросах «сишники не отлаживают код»

Ну это банальный вывод - никто не заставляет тебя в него верить, либо его слушать - это моё наблюдение/видение. Это никакого отношения к делу не имеет.

Тут имелось ввиду, что сложный код(не то, что под ним понимаешь ты. Как я уже объяснял - тонна дерьма - это не сложно - это просто тонна дерьма) методами, которые описывал адепт не отлаживаются, ибо невозможно. Это работает на хелворде - в идеешечке кнопочки пощёлкать.

Я считаю, что что-то отлаживается трассировкой принтфом, проверками и вниканием, а не тыканьем кнопочек в какой-то фигне.

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

«сложные проекты не отлаживаются» почему тебе можно доверять?

Тебе не надо мне доверять? Я сказал своё мнение. Если у тебя есть другое - вперёд, объясни почему это не так. Либо с чем не согласен.

Почему - написал выше.

Какие сложные проекты ты сделал, чтобы так утверждать?

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

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

Ещё раз повторяю - если ты писал сложные проекты и со мною не согласен, либо просто не согласен - объясняй. Все мои провокационные заявления - это моё мнение - для меня этого не существует. Но не для всех. Почему - я объяснить могу. Тебя - я в этом не убеждаю.

Знаний узкой технической области не достаточно, чтобы твое мнение имело вес, особенно по вопросам за пределами этой области.

Это не узкая область - это полное знание области. Области - умения писать код. А поддержка тонн говна, копание в говне, лизание жопы и прочее - пусть это и основной атрибут любого адепта лутающего еду, но это не программирование.

Написание кода - это написание кода. Реализация задач - это реализация задач. Не шизофрения, не какая-то херня неведомая, а конкретно. Всё остальное - мне не интересно.

Уличить я тебя ни в чем не пытаюсь, и моему миру твое «изложение мыслей» никак не угрожает, уж поверь. Просто ты тут довольно неординарный участник дискуссий, и я пытаюсь понять для себя некоторые вещи о тебе.

Это тебе так кажется, что не угрожает. Принятие моего подхода - для тебя угроза, ибо противоречит твоему пониманию, ну как твоему - не твоему, но предположим.

Никто не говорит, что само изложение мыслей моих на тебя влияет. Меня это мало волнует.

Тут вопрос - сможет отвечать за свой выбор, либо нет. Понимаешь - ты выбираешь сам кого слушать/во что верить. Естественно дефолтный подход любого адепта - дай, а потом я соглашусь. Дай вперёд. Дай, дай, дай. Т.е. попытка избежать ответственности.

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

А почем я знаю, информация, которую ты даешь, стоит внимания или нет?

А откуда ты знаешь, что пойдя налево ты не упадёшь в яму? Это как бэ жизнь. Выбор твой.

Тебе ничего не мешает использовать отладчик, если ты его используешь - бояться трансформации программ, работы без гуйни, однострочников и прочего - это твой выбор. Тебе кто-то в интернете сказал «есть другой путь» - и это уже твой выбор - попробовать/попытаться следовать/либо следовать ему.

Тебе никто не обязан что-то пруфцевать. Ты должен подумать - так это или нет. Если не согласен - поспорить. Если сможешь отстоять свою ТЗ - молодец. Не сможет - это лишний повод попробовать.

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

Знаний низкоуровщены у меня мало - это слишком специфично и в обычном применении бесполезно.

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

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

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

Лучше писать «хеллоуворлд», а не «хеллоуворд».

ОК.

Что такое puts-хеллоуворд в ходе прочтения до кода не понятно, читатель еще puts не видел, тем более в примере fputs (???)

Да, надо на puts исправить — это верно.

Многовато воды и отвлеченных рассуждений в тексте, мое мнение - нужно больше четких последовательных действий и меньше о том, «о чем тут не буду писать».

Ну например вот я описываю что мы создаем такое-то дерево каталогов, и будем хранить в них разные версии хелловордов. По-хорошему это надо делать через какой-нибудь git, но git я описывать не буду. Если я говорю «вот давайте создайте такой-то файл, будем его редактировать» то надо сказать про текстовые редакторы, какими они могут быть. Но детально я этот вопрос освещать не намерен т.к. на это уйдет много времени, и поэтому я написал что не буду писать про то, как использовать VIM, Emacs и прочее. По-моему вполне нормально

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

По крайней мере, теперь твоя позиция и подходы мне понятны. Принимаю к сведению.

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

Если я тебя ни по работе

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

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

то что тогда?

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

Да и вообще - сколько в мире людей, которые могут похвастаться созданием чего-то? Единицы. А у остальных - их работа - это коллективный разум и результат, которым они не владеют, либо какие-то студ-поделки.

Это требует совпадения интересов, да и область специфическую. Т.е. есть ваятели, а есть создатели. Т.е. в интересы ваятеля входит постройка дома, а в интересы создателя тех же стройматериалов - не особо. Тут разные направления.

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

== Предисловие ==

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

Книга рассчитана на то, что читатель уже знаком с основами использования ОС linux, в том числе умеет пользоваться консолью, знает что такое компилятор, умеет писать простые скрипты для сборки, в том числе простые makefile-ы. Книга не требует серьёзных знаний математики и языков программирования. По мере изложения книги читатель научится писать на языке C и Assembler, два основных языка, которые используются для низкоуровневого и системного программирования.

Повествование в книге разбит по главам, в каждой главе объяснение происходит на основе на основе реальных примеров. Первая глава даёт базовое представление о языке C и способах взаимодействия прикладных программ с операционной системой. Вторая глава <blablabla>

Все примеры в книге, можно скачать с github.com: блаблабла, лицензия примеров <FIXME>,

-------------------------

Что касается объяснения vim или mcedit, вы определитесь, либо объясняете как пользоваться ПК, либо нет.

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

Я просто имел в виду, что лирические отступления и непосредственно действия «создайте файл с текстом» и информацию по существу лучше визуально разделять, явные отступления можно на другом фоне делать например. Так легче читать, внимание акцентируется на нужном, а не тонет в простыне текста.

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

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

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

Если твои адепты не осилили создание файлика и написание там 2-х строчек, то чему ты пытаешься их учить?

В целом причины наличия 99% воды понятны - отсутствие идеи о чём писать.

Делать это надо в домашней директории ~

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

Создавать все эти директории я советую через консоль

Отлично. Полезно.

Ну и ублюдский стиль - это никто читать не будет.

main (void)
puts(

Л - логика, С - сильное место балаболов.

registrant27492
()

Вот я, например, работаю программистом 5 лет, пишу на с, с++, приходилось писать на асмеме для DSP. Прочитав такое описание книги (список освещённых тем) я бы её купил. Понятно, что что-то уже знаю из этого, но от такой книги я жду большое количество подробностей, тонкостей языка. Я бы её прочитал для того чтобы углубить свое понимание предмета. Это я к тому, что жду книгу с нетерпением :). За такое и денег автору перевести не жалко. Особенно хочу отменить интересность/важность параллели Си <=> assembler.

lup
()

пусть всё делают даже не в консоле(там есть история что развращает) а в

командном режиме ed

!ls вот это всё

и r !ls

и 4,5 w !grep lol

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

== Предисловие ==

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

Отлично, только давайте это писать в статье на вики, а не в комментариях на ЛОРе. Чтоб сразу было понятно, что это я могу включать под соответсвующей лицензией. И книга не только для студентов, она вообще для всех желающих. Вполне подойдет кому-то, кто уже давно закончил вуз, и хочет освоить новую для себя область.

Все примеры в книге, можно скачать с github.com

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

Что касается объяснения vim или mcedit, вы определитесь, либо объясняете как пользоваться ПК, либо нет.

Надо рассказать, чем вообще пользоваться чтобы редактировать код. Я например вообще не настаиваю, чтобы брали какие-то vim-ы и emacs, пусть берут geany и вперед и с песней. Но вот например очень желательно, чтобы там в редакторе была подсветка синтаксиса и автоматическая расстановка отступов, а например mousepad этого ничего не умеет. И да, про моноширинный шрифт надо точно сказать

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