Size: a a a

Compiler Development

2020 April 07

DP

Dmitry Ponyatov in Compiler Development
Дейтел & Дейтел
источник

A

Alex in Compiler Development
По содержанию выглядит весьма круто, спасибо
источник

A

Alex in Compiler Development
*хотя примеры как у K&R на устаревших диалектах ))
источник

PS

Peter Sovietov in Compiler Development
Alex
Да, даже ко второму изданию. Берём первый же "hello world", а там main без возвращаемого типа. В общем, если кто-то посоветует хороший учебник для начинающих по Си на русском - буду очень благодарен
И это поведение вполне соответствует стандарту ANSI C89, сокращенный вариант которого приведен в конце книги. Пусть читатели сразу изучают работу с унаследованным кодом :) Честно говоря, я не понимаю, как можно обучить студента серьезно программировать на Си без материала из этих приложений на последних страницах. Уже не говорю о написании собственного учебного компилятора подмножества Си :)

Неплохо бы иметь обновленную версию K&R. Но ко 2 изданию можно просто добавить C: A Reference Manual, где в авторах тот самый Гай Стил, к тому же. На русском нет, увы.

https://savedparadigms.files.wordpress.com/2014/09/harbison-s-p-steele-g-l-c-a-reference-manual-5th-ed.pdf
источник

AK

Andrei Kurosh in Compiler Development
Alexander Tchitchigin
Предлагать делать свой язык программирования человеку, который ни одного языка программирования ещё не знает, по меньшей мере странно. А скорее всего, просто вредно.
Любой достаточно амбициозный разработчик знает, что сначала надо написать свою операционку :)
источник

AT

Alexander Tchitchigin in Compiler Development
Andrei Kurosh
Любой достаточно амбициозный разработчик знает, что сначала надо написать свою операционку :)
Как мы на днях выяснили, на самом деле, сначала нужно спаять собственный процессор. 😃
источник

M

MaxGraey in Compiler Development
Alexander Tchitchigin
Как мы на днях выяснили, на самом деле, сначала нужно спаять собственный процессор. 😃
Сначала нужно научиться добывать и очищать кремний до чистоты 99.9% =) А потом уже до фотолитографии и пайки переходить
источник

DP

Dmitry Ponyatov in Compiler Development
Andrei Kurosh
Любой достаточно амбициозный разработчик знает, что сначала надо написать свою операционку :)
одно другому не мешает, достаточно сделать операционку поверх рантайма языка 8)
источник

S

S.Atan in Compiler Development
Alexander Tchitchigin
Как мы на днях выяснили, на самом деле, сначала нужно спаять собственный процессор. 😃
Гораздо более умные люди для таких целей используют симуляторы логических элементов.
Но это я так... к слову.😊
источник

T

Thorn in Compiler Development
Victor Miasnikov
Но каким образом самый наилучший учебник спасёт начинающего от "дефектов дизайна языка программирования"?

А именно:
- отсутствие ELSIF
- CASE ( который switch) в низкоуровневом стиле.
- и т.п.

Насколько педагогично отсутствие констант? ( да, заменены  #define или модификатором const, но... )

Модули в учебники уже успели внести?
то есть главная проблема в С — это отсутствие elsif? не
— отсутствие модулей, заменяемое .h файлами (ODR и зависимости при билде на совести разработчика)
— препроцессор
— слабая система типов, почти все приводится ко всему, int foo() может принимать любые аргументы, прототипы функций вообще не требуются и т. п.
— сумасшедшие правила старшинства операторов, из-за чего на практике, применяя битовые операциях, ставят скобки везде, как в лиспе
— UB, IDB и strict aliasing, приводящие к разной семантике в разных компиляторах
— стандартные типы (int etc.) разные на разных платформах, union и bitfields не portable, выравнивания тоже
и т. п.,
из-за чего в ответственных применениях пишут длинные списки чего не надо делать типа http://caxapa.ru/thumbs/468328/misra-c-2004.pdf и требуют их соблюдения, хотя это все не более чем полумеры
источник

VM

Victor Miasnikov in Compiler Development
Thorn
то есть главная проблема в С — это отсутствие elsif? не
— отсутствие модулей, заменяемое .h файлами (ODR и зависимости при билде на совести разработчика)
— препроцессор
— слабая система типов, почти все приводится ко всему, int foo() может принимать любые аргументы, прототипы функций вообще не требуются и т. п.
— сумасшедшие правила старшинства операторов, из-за чего на практике, применяя битовые операциях, ставят скобки везде, как в лиспе
— UB, IDB и strict aliasing, приводящие к разной семантике в разных компиляторах
— стандартные типы (int etc.) разные на разных платформах, union и bitfields не portable, выравнивания тоже
и т. п.,
из-за чего в ответственных применениях пишут длинные списки чего не надо делать типа http://caxapa.ru/thumbs/468328/misra-c-2004.pdf и требуют их соблюдения, хотя это все не более чем полумеры
Я-то, как раз, "выражаю осторожное сомнение" в том, что "Си пригоден для первоначального обучения".

(

И мой список - в разрезе этого.
Просто - парочка примеров.

Конечно, "проблем дизайна" больше

)
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Timur Safin
K&R очень короток, но не очень методичен и потому непонятен. Помню его тогда пришлось пару раз перечитывать, чтобы дошло
Согласен, мне K&R вообще не нравится как учебник.
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Если речь идёт о "начать программировать", то, мне кажется, начинать надо с какой-нибудь Scheme. C и прочие низкоуровневые языки, во-первых, как правило, некрасивы, а во-вторых мешают выработке алгоритмического мышления искусственными ограничениями. Программировать и так достаточно сложно.
источник

AT

Alexander Tchitchigin in Compiler Development
Igor 🐱 Jirkov
Если речь идёт о "начать программировать", то, мне кажется, начинать надо с какой-нибудь Scheme. C и прочие низкоуровневые языки, во-первых, как правило, некрасивы, а во-вторых мешают выработке алгоритмического мышления искусственными ограничениями. Программировать и так достаточно сложно.
А для этого специально разработаны HtDP & Racket. 😃
источник

VK

Vladimir Kazanov in Compiler Development
Alexander Tchitchigin
А для этого специально разработаны HtDP & Racket. 😃
а что за HtDP?
источник

AT

Alexander Tchitchigin in Compiler Development
Vladimir Kazanov
а что за HtDP?
How to Design Programs.
источник

AK

Andrei Kurosh in Compiler Development
Igor 🐱 Jirkov
Если речь идёт о "начать программировать", то, мне кажется, начинать надо с какой-нибудь Scheme. C и прочие низкоуровневые языки, во-первых, как правило, некрасивы, а во-вторых мешают выработке алгоритмического мышления искусственными ограничениями. Программировать и так достаточно сложно.
В природе существуют вакансии junior scheme developer?
источник

AT

Alexander Tchitchigin in Compiler Development
Andrei Kurosh
В природе существуют вакансии junior scheme developer?
Какое это имеет отношение к обучению программированию (с нуля)? 😉
источник

AK

Andrei Kurosh in Compiler Development
Alexander Tchitchigin
Какое это имеет отношение к обучению программированию (с нуля)? 😉
Самое прямое: если человек имеет возможность, как древнегреческий философ, полностью погрузиться в тонкие материи, не заботясь о насущном - то да, можно начинать с чего угодно. Я таким людям могу только позавидовать. Но их исчезающе мало
источник

AK

Andrei Kurosh in Compiler Development
Практичнее было бы идти по пирамиде потребностей снизу вверх и сначала научиться тому, на что есть спрос. Большинство там и остается. А вот немногие особо способные поднимаются дальше и там их ждут прекрасные миры лиспа, хаскеля и прочих :)
источник