LINUX.ORG.RU
ФорумTalks

ЯП2: системное программирование


0

0

Пишет вам будущий студент, поступивший на сабж. Насколько я знаю, в сиспроге в основном используется С. Что либо еще? Форт? Что стоит изучать прямо сейчас, чтобы быть готовым? Какие книги штудировать? /r/ полезные ссылки по теме.

ассемблер & C

Главным сайтом для тебя на все 5 лет учебы должен быть wasm.ru(в особенности форум), там же все и найдешь

nnm
()

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

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

Да, в общем, в плане прожирания времени двачи ни чуть не хуже лора и других интренетов.

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

И это тоже, но вообще не стоит недооценивать хороших лектора и препода по практике.

anonymous
()

Внезапно. Таких студентов ждет реактор системы Луговского.

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

Сришотка - говно, Питон - рулит.

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

>только wasm лучше подиагонали, а то прочуешь только x86 под оффтопом

Ничего подобного, там есть и люди, которые программили под *nix'ы(see WASM.UNIX). Я тоже когда-то пробовал под Linux & FreeBSD. Забыл, была какая-то хорошая книга..ммм..если вспомню - скажу.

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

На асм что-то неочень arm'ы чевствуют, а это самые распространенные в embedded. PowerPC тоже еще не помер, хот уже и не эмбеддед.

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

> программили под *nix'ы(see WASM.UNIX).

Программировать на ассемблере не нужно, поскольку сегодня ассемблер является только способом доступа к уникальным возможностям платформы. Даже системщику вместо ассемблера полезнее прочитать SICP - при всей практической бесполезности Схема содержит в себе концепции, которые в Си отсуствуют. Книги вроде "Наука программирования", тоже не повредят.

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

> только способом доступа к уникальным возможностям платформы.

Он хорошее понимание апаратной части даёт. А SICP скорее из области архитектурного проектирования.

iBliss
()

C, Asm. Еще perl, shell и awk.

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

>>Ничего подобного, там есть и люди, которые программили под *nix'ы(see WASM.UNIX). Я тоже когда-то пробовал под Linux & FreeBSD. Забыл, была какая-то хорошая книга..ммм..если вспомню - скажу.

>Программировать на ассемблере не нужно, поскольку сегодня ассемблер является только способом доступа к уникальным возможностям платформы. Даже системщику вместо ассемблера полезнее прочитать SICP - при всей практической бесполезности Схема содержит в себе концепции, которые в Си отсуствуют. Книги вроде "Наука программирования", тоже не повредят.

Что самое интересное - ни слова про ассемблер у меня в том предложении не было. На васме собираются люди не только пишущие на ассемблере, но и системщики в общем(посмотрите на title хотя бы - W A S M . R U: Системное & низкоуровневое программирование), соответственно пишут и на С.

>Даже системщику вместо ассемблера полезнее прочитать SICP

SICP - книга хорошая, вот только не "вместо ассемблера". Я себе даже в жутких снах не могу представить системщика без знания ассемблера.

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

> SICP - книга хорошая, вот только не "вместо ассемблера".

Речь идет о будущем первокурснике, как я понял. И полоскать ему мозги ассемблером - рано и вредно (кстати, каким именно ассемблером? их много). Сначала надо осваивать фундаментальные вещи.

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

С этим согласен. По поводу

>кстати, каким именно ассемблером? их много

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

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

>> только способом доступа к уникальным возможностям платформы.

> Он хорошее понимание апаратной части даёт.

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

Я ничуть не против ассемблера, его надо знать - но всё по порядку, и его очередь - не первая. Курс компьютерных архитектур + Си - для понимания работы компьютера, и SICP или аналог - для понимания того, как надо писать программы.

> А SICP скорее из области архитектурного проектирования.

ИМХО, SICP - это именно учебник для программистов. Жаль только, что он использует Схему.

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

>> кстати, каким именно ассемблером?

> под Z80 %)

А... ну тогда ладно.

tailgunner ★★★★★
()

Хмм, забыл.. Советую затариться Таненбаумом: Современные ОС и по желанию Архитектура компьютера и OS: Design and Implementation(по идее то же самое, что и Современные ОС, только разбирается на примере реальной системы - Minix).

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

> И полоскать ему мозги ассемблером - рано и вредно

ИМХО наоборот, от простого к сложному, сначала будут заторы потоб бац в один миг и просветление, а потом "глотать" любую инфу будет как пропасть.

> кстати, каким именно ассемблером? их много

С любого по которому он найдет грамотную литературу и сможет пробовать всё на практике в институте, на работе и дома.

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

> сможет пробовать всё на практике

Да что "всё"? Работу с устройствами? С ФС? С сетевыми протоколами? Никто не пишет это на ассемблере.

tailgunner ★★★★★
()

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

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

> Да что "всё"?

Примеры из найденной им литературы.

> Работу с устройствами? С ФС?

Да.

> С сетевыми протоколами?

Это слишком круто но если осилит, то .... это будут от такие \oo/ пальцы.

> Никто не пишет это на ассемблере

Конечно. А в gdb и еже с ними он что увидит как не ассемблер ?

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

>> Работу с устройствами? С ФС?

> Да.

Ну ХЗ, по работе пишу драйверы - никогда не опускался до ассемблера. Ассемблерного кода в ФС тоже не видел.

>> Никто не пишет это на ассемблере

> Конечно. А в gdb и еже с ними он что увидит как не ассемблер ?

ХЗ, для ядреного кода gdb не пользовался, в userspace gdb кажет обычный исходник. Да и kgdb должен исходный код показывать.

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

> Ну ХЗ, по работе пишу драйверы - никогда не опускался до ассемблера.

Уфффффаааа. Да не для практического применения, а для практического _закрепления_. Выучить ассемблер как таковой (обнаковенный набор и смысл инструкций) дело месяца. Видеть в листинге общий смысл того или иного набора - закрепится только практически.

> в userspace gdb кажет обычный исходник.

Если нет либ без сырцов и debug info.

> Да и kgdb должен исходный код показывать.

А как он это сделает при скажем panic'e на этапе загрузки если файловые системы еще не смонтированы ? Ну даже если с debug-info собрано он только названия и вложенность функций покажет.

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

> Хотя, припомнив Кнута и MIXAL, я, пожалуй, уклонюсь от дискуссии :)

Да я тожь уже сомневаться начал,что мы тут насоветовали. ИМХО, тут если товарищ в Москве ему разведмероприятия в "Ауриге" провести неплохо-бы. Они вроде как узкоспециализированы на этом. Сам с Ауригой и Аурижцами не сталкивался но отрицательных отзывов вроде не видел.

iBliss
()

Всем спасибо за ответы, буду искать и штудировать. Есть небольшой опыт программирования на паскале, с++ и asm под Dos, сейчас пока изучаю perl. Кстати, недавно в интернете пробегала книга по сиспрогу под линукс, но я её успешно потерял. Даже названия не помню....

ну а по поводу двача... у всех свои вредные привычки.

//vpupkin

anonymous
()

Читай SICP, делай упражнения. Да, используется язык Scheme. Но в самом начале программистского пути очень важно научиться правильно проектировать программы. Проектирование -- это не только из области придумывания архитектуры огромной системы с нуля. Абсолютно нет. Даже программу в 1000 строк можно написать так, чтобы только работало, а можно так, чтобы сразу избежать основных багов из-за неправильной структуры программы или данных, заложить фундамент масштабируемости и переносимости, сразу принять правильные решения относительно структуры кода, взаимодействующих модулей, чтобы потом на полпути не выбрасывать всё со словами "да тут проще заново написать, чем в этой помойке разбираться!"

http://newstar.rinet.ru/~goga/sicp/sicp.pdf -- русский перевод SICP

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

Если же начать изучать тот же Си сначала, сразу образуется куча вопросов. Основные непонятки обычно связаны с указателями, динамическим выделением памяти, массивами (что массив -- это адрес первого элемента, чем отличается char* x = malloc(10); от char x[10];) и связанные с этим вопросы. Причём толково прояснить их можно только довольно подробно описав работу компьютера на низком уровне. Зато если толково объяснят и ты поймёшь -- будет очень хорошо.

C++ как первый язык нормально мало кто осилит, и то при наличии хорошего наставника. Но всё равно сначала придётся изучить сишное подмножество, так как многие вещи из него следуют. (Хотя Си и C++ два абсолютно разных языка, но указатели например, штука общая для всех, и лучше их изучать без всякой мишуры от C++, так проще).

Паскаль как первый язык не рассматриваю.

Если изучать Питон как первый язык, в принципе перспективы неплохие если не изучать там *всё* (я имею ввиду отложить всё, что там связано с ООП как можно дальше). Но скорее всего не изучать всё не получится, и ООП-ные конструкции будут просачиваться в программы. Это чревато тем, что не сложится полноценной картины о языке. Хотя, в принципе, можно придумать осторожное введение в нужное подмножество ООП, но это всё полумеры.

Java как первый язык противопоказан. Его осилит любой, кто осилил C++ хотя бы на среднем уровне.

anonymous
()

asm + C + теорию ОС(сетей етс) + архитектуру ПК (cpu етс)

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