Pull to refresh
21
0

User

Send message
UFO landed and left these words here
Согласен, но и железо используется не самое мощное. Я не знаю как там на самом деле, может и правда на С уже все давно забили. Но у меня есть повод верить в С как язык и для веба тоже. Год назад проскакивала вакансия в D-Link и была такая вот тестовая задача:

Требуется некий тестовый проектик. ANSI C. Без плюсов-классов-пых-пыхов и прочих перлов и яв(жав,джав). Выдаёт HTML-страниицы на stdout. Требования:

a) Многостраничность.
б) Поддержка линков не только во внешний инет, но и на свои эти вот страницы.
в) Структурированность, логичность и масштабируемость кода... хоть и будет это оцениваться достаточно субъективно(с нашей точки зрения :-)).
г) Устойчивость к ошибкам. Всё и всегда должно проверяться. При возникновении
каких-либо неполадок, будь то неверный запрос или отсутствие переменной
окружения, etcetera, пользователь должен подробно уведомляться о проблемах
посредством того же HTML. Падение работы бинаря(типа "ошибки сегментации".. ну или "access violation" в оффтопике) - недопустимый случай.
д) Приветствуется многосырцовость, наличие хидеров и, вообще, юниксвей.
е) Формирование проекта на основе automake/autoconfig будет воспринято "на
ура", хотя здесь может быть удобней написать makefile самостоятельно. На выбор.
Посмотрел код, думаю комментарии излишни, уже сказали что это не код. Но это не повод вешаться, для понимания что к чему предлагаю следующий алгоритм.

Для начала википедия:
ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F#.D0.9F.D0.B0.D1.80.D0.B0.D0.B4.D0.B8.D0.B3.D0.BC.D1.8B_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F
Читаем внимательно. Рекурсивно идем вглубь.

Дальше приступаем к изучению собственно программирования:
see.stanford.edu/see/lecturelist.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111
Курс стенфордского университета. Базовый вводный, то что надо.
Дальше можно двинуться в сторону:
see.stanford.edu/see/courseinfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e

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

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

Для начала стоит выбрать язык программирования. Да, я видел что разговор идет про пхп. Однако я считаю этот язык очень вредным для программиста-новичка. Так как пхп-шников здесь однозначно много, то сейчас пойдут комментарии — это популярный язык, много примеров, много документации, много где можно спросить совета. Это так, и это самая главная проблема. 80% пишущих на пхп знают что такое программировать не лучше вашего, в интернете огромное кол-во просто отвратительных примеров, приучающих к тому что не надо. Да и книг дурацких тоже навалом. Выберите для обучения что-нибудь отличное от пхп, если потянет обратно — вернетесь. Но хотя бы на время обучения избавьте себя от кучи быдлокода в качестве примера.

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

Как вариант возьмите python или ruby. Никаких фреймворков для начала, поймите как работает вся кухня.
Разберитесь с элементарным вводом-выводом, посмотрите на спецификацию HTTP.

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

Самое время поговорить о концепциях чуть более сложных, чем валидация форм или шаблонизатор. Разберитесь с понятием кеширование, какое оно бывает, когда как и почему может применяться.
Дальше двигаемся в сторону взаимодействия машина-машина, читаем Restful web services — очень хорошо вправляет мозг кстати.

Еще остались силы? Читаем — Programming Collective Intelligence.

Маленькое уточнение: все книги и документацию старайтесь читать на английском. К сожалению некоторые книги успевают устареть уже к моменту выхода в печать, а уж к моменту выхода их на русском они вообще неактуальны. Это не касается таких книг «Искусство программирования» или например книг по TCP/IP.

Если Вы внимательно работали с книгами и курсами до этого, то к этому моменту у Вас будет в голове система и более менее трезвое понимание, как выглядят программы изнутри. Вы будете мыслить не категориями процедур и вывода html кусков кода, а архитектурно — база данных, абстракция от БД, сервер приложений, бизнес логика, конроль ввода-вывода, шаблоны, кеширование, обратное кешировани, балансировщики итп.

Впереди у Вас будет еще много чего — SSO, распределённые файловые системы и вычисления, Data mining итп. Но это уже advanced, а база у Вас будет.

Кстати, не пытайтесь осилить всё что я описал за месяц — сломаете мозг :)

Удачи в учёбе ^^

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity