За последние 24 часа нас посетили 34690 программистов и 1695 роботов. Сейчас ищут 892 программиста ...

Нужна помощь в мутации.

Тема в разделе "Прочее", создана пользователем dAllonE, 19 фев 2008.

  1. dAllonE

    dAllonE Guest

    Суть проблемы:

    Хочу мутировать из PHP кодера в Программиста. Как я понял для этого как минимум необходимо:

    1. Хорошо знать как работает компьютер на низком уровне.
    2. Понять теорию программирования.
    3. Научиться самостоятельно искать пути решения проблемы а не тупо кодировать в PHP то что посоветовали.


    Что я предпринимаю/планирую в дальнейшем:

    1. У нас начался курс языка Ассемблера. Читаю книги по дискретной математике, затем возьмусь за теорию автоматов.

    2. Сейчас читаю "Дисциплина Программирования"(Эдгар Дейкстра), на очереди огромный том "Алгоритмы. Построение и анализ"(Т. Кормен, Ч. Лейзренсон, Р. Ривест) и Дональд Эрвин Кнут - "Искусство программирования". Буду их перечитывать до полного осознания(очень надеюсь оно наступит раньше чем смерть ;) ).

    3. Хм... Еще не знаю.

    Вопросы:

    1. Что еще может помочь в достижении моей цели?

    2. Как мутировали в true программистов Вы?

    Спасибо всем кто прочел.

    [UPD] Я уважаю мнение тех, кто считает что для программирования вполне достаточно манула... Но все же просьба посоветовать что-нибудь по теме, ссылку про PHP на танке и тему с литературой я прочел еще месяцев 6-7 назад, ман до конца еще не выучил, но уже в процессе. [/UPD]
     
  2. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Алгоритмы не читать, читать сначала Асм (если он действительно нужен), основы, ну хотя бы Питера Абеля. Плюс начать делать корявый проектик "лишь бы опыта набраться" (обычно пишут всякие плееры/блокноты/калькуляторы/саперов), чтобы целеноправлено искать инфу, а не тупо уроки проходить - лучше усваивается.
    Есть так же мнение, что начав изучать сразу прикладной более высокого уровня (Си, Дельфи) ничего не потеряешь. Не всем нужно понимать, как устроена адресация памяти на уровне машкода (тем более, что в мало-мальски крепкой ОС тебе все равно прямого доступа не дадут, только если под х86 не будешь код в нулевое кольцо защиты пихать (драйвер какой, руткит)). Более того, иногда знание асма немного мешает абстрагивароться :) Сразу возникают лишние вопросы - а что будет потом? типа вызвал я конструктор объекта, а чего потом, а как он в памяти разложится и тп, хотя всеми этими вопросами займется компилятор :)
    Я бы даже порекомендовал сразу поучить прикладной высокого. Асм всегда успеешь, если он будет востребован, если нет - потеряешь время. Для виндов могу порекомендовать почитать Русиновича и Дейкстру :) Кнут - это так, для прокачки скилов :) В дельфи можно вызвать встроенный отладчик и посмотреть состояние регистров и выполняемый асм-код - наглядное пособие получается, тем более, что генерится код рабочий (в отличии от кучи древних книжек, которым еще реалтайм подавай). Думаю уж в Си точно есть дебагер свой (я компилил батником, с ее ИДЕ практически не работал:)).


    А я вот деградировал в false программисты %)))

    кстати, вполне можно искать пути решения и в ПХП :) Я вот, при задаче парсинга каких то текстовых файлов запускаю апач и быстренько кодю в ПХП скриптик с регулярками. Получается очень быстро написать готовое решение. Пусть оно требует вебсервера и работает значительно медленей бинарника, зато быстро. А в каком нибудь дельфи я бы гораздо дольше ковырялся.
     
  3. dAllonE

    dAllonE Guest

    Участвую в проекте www.express-site.ru (Да, та самая ссылка "Создать сайт" которая мозолит всем глаза :)... Но пока что с дальше просто PHP кодера не ушел...

    Эм... Я почему-то думал что если понимаешь принцип создания алгоритмов и умеешь их делать = для любого языка высокого уровня остается выучить только синтаксис. Я ошибаюсь?
     
  4. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    dAllonE
    Присоединюсь к antonn, но другими словами:
    То, что ты затеял - это примерно тоже самое, что начать изучать вождение автомобиля с изучения работы всех-всех-всех гаек, потом конкретных узлов, потом сопряжения узлов и т.д.
    Ассемблер - брось. В современном мире он во-первых нафик тебе не нужен, а во-вторых, после него будет очень сложно переходить на более-менее абстрагирующиеся языки. Потому что в асма первая задача - это максимальная оптимизация. А у любого ООП-ориентированного языка - первая задача - это реализация абстрактного алгоритма. И эти две вещи диаметрально противоположны.
    "До полного осознания" - не надо. Для начала достаточно внимательно прочитать один раз. Что запомнишь - всё твоё. Лучше держи их под рукой и периодически почитывай.
    Голую теорию, без практики - не выучишь никогда. А если тебе покажется, что ты таки выучил - вспомни поговорку "ни одна теория не выдерживает столкновения с практикой".
    Можно даже заменить слово "Научиться" на "заставлять себя" - эффект будет полнее. :)
    Вообще-то это хорошо для тех, кто, либо учится на низкоуровневых программеров, либо для тех уже состоявшихся программеров, которые повышают свой скилл, а точнее, мутируют в низкоуровневых программеров.
    Лучше поставить цель "Хорошо знать как работает операционная система и знать её библиотеки" - этой целью ты начнёшь учить ООП.

    А в двух словах - начни с ООП. Раньше был святой Страуструп. Сейчас не знаю, насколько это актуально.
    Начни либо с Delphi, либо с С++, либо с Java. И будет тебе счастье. :)
     
  5. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Только хотел написать об этом. :) Только этот эффект работает, когда уже знаешь языков хотя бы 5 и сталкиваешся ещё с одним.
    Так что, то, что ты знаешь хотя бы синтаксис php и немного научился на нём работать - уже плюс.
     
  6. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Кстати, на Яву сейчас спрос нехилый. Правда она не очень прикладная, в смысле не такая прикладная, как Си :)

    ЗЫ в асме интересно (если вообще достигается состояние интереса) сначала, а потом просто задалбывает делать рутину. Там где в дельфи на vcl я кнопочку и форму делаю около 5 сенкуд, на ВинАпи минут 20-30 с использованием своих наработок с других проектов, то на асме я ваще задолбаюсь :) Асм прикольно при обработке данных заюзать, частенько прирост нехилый, а импортировать функции из винапи нудно и неинтересно :) Вот бы еще при ММХ был бы доступен FPU :(
     
  7. mmaavv

    mmaavv Активный пользователь

    С нами с:
    25 мар 2007
    Сообщения:
    59
    Симпатии:
    0
    dAllonE
    А в какого программиста мутировать хотите?
    программирование для ВЕБа, программирование приложений и программирование для устройств очень сильно друг от друга отличается и набор изучаемых дисциплин, соответственно, тоже.
    По моему мнению, начинать надо именно с выбора направления деятельности.
    Фраза "хочу стать программистом" это как-то очень расплывчато и неопределённо.

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

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

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Я не тру, но прокомментировать хотца.

    dAllonE, почему бы тебе не идти ниже в той сфере, в которой хочешь быть тру. PHP язык для веба, так и чеши от него, как от отправной точки - всё ниже: протоколы, апачи-фигачи и пока не упрёшься в ОСь.
     
  9. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    тут как раз в ось-то практически и не упрёшься. Упрёшься в "апачи-фигачи" и в html-яваскрипт. И всё. Если только в сторону - mysql-mssql.
    Только imho - проще начать с дельфи-хуе.... (пардон, увлёкся) и от неё плясать. Там можно и вниз и вверх развиваться.
     
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP - язык серверного программирования, приемущественно для решения задач в области WEB, и не может бы использован для системного программирования, так что изучение ассеамблера и дискретной математики не поможет прямо доститич поставленой задачи. В случае с языком PHP тебе не нужно знать API ОС на которой работает твой сервер, в каких блоках памяти хранятся переменные и пр. По своему (пока однако не богатому опыту в облати PHP) могу сказать, что здесь гораздо важнее понять логику языка. Программист должен уметь думать на языке на котором он пишет, иными словами, должен уметь для любой задачи быстро предложить несколько вариантов решения - и выбрать сразу лучший, не наступая на грабли. Поэтому - изучай встроенные функции, вникай в то, как они работают, для этого пиши функции сам, изучай ООП, сам пиши методы... Ну и конечно нужно хорошо понимать такие фундаметальные вещи как подключение PHP к веб-серверу, работа PHP с БД, протокол HTTP.
    Если хочешь стать программистом "вообще", а не только в веб-области, то начинать рекомендую с C++.
     
  11. sword dancer

    sword dancer Активный пользователь

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
    я бы рекомендовал для начала усвоить основные парадигмы, посредством освоения соответствующих языков:
    функциональную - lisp, haskell, xslt
    логическую - prolog
    императивную - C, paskal,
    объектную - smalltalk, javascript
    классовую - java, c++
    многопоточную - erlang, ada

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

    Anonymous Guest

    Прочитал все советы.
    Дам тоже один - не слушай никого. Найди сам свой путь.
     
  13. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    я бы порекомендовал трехтомник Кнута. В свое время сильно сдвинул мне приоритеты в правильном направлении.
     
  14. sword dancer

    sword dancer Активный пользователь

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
    "это сообщение - ложно" ^_^
     
  15. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Я бы ещё посоветовал Фаулера "Рефакторинг: улучшение существующего кода" и "Приемы объектно-ориентированного проектирования. Паттерны проектирования" (Гамма, Хелм, Джонсон, Влиссидес).
     
  16. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    +1

    хорошая весчь!
     
  17. dAllonE

    dAllonE Guest

    RomanBush,

    Ну учить его все равно придется, т.к. по нему нужно в мае сдать курсовой проект.

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

    mmaavv,

    Я не спрашиваю, какие языки учить, мне хочется сформировать программистки-логичный стиль мышления )

    Горбунов Олег,

    А разве может быть иначе? Я всегда ищу свой путь. Но это не мешает поинтересоваться путем становления других и позаимствовать нужные мне моменты. :)

    440Hz, Sergey89

    Спасибо. Найду, прочитаю, постараюсь осознать.
     
  18. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    языки программирования и само программирование довольно далекие понятия. многие путают программирвоания с кодингом.

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

    ---

    лирика...

    я начинал на Алголе, Фортране и PL/1 на тех больших компах которые занимали по 2-3 комнаты (EC-1033/45).
    потом появились писюки (PS/2) и C под MSDOS.
    Потом пришел C++ и Smalltalk и я открыл для себя мир юникс (аминь!).
    Потом я для себя открыл как раз то, что называется программированием и наконец нашел себя.

    Я реализовывал деревья, стеки, очереди и диспетчеры памяти. Реализовал RLE,LZW сжатие и посмотрел ка работают архиваторы. Написал вирус. Реализовал быстрые поиски. написал графический движек по типу DOOM1, что бы понять как вычисляются трехмерные изображения.

    Но это все были чужие алгоритмы... Понимаешь о чем я?
    =)

    Вот когда ты придумаешь что-нить свое и реализуешь его. Вот тогда ты станешь програмистом. А пока мы все тут К О Д Е Р Ы!

    а на чем писать дело десятое. было бы ЧТО писать
     
  19. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    на мой взгляд программер от кодера отличается в первую очередь мышлением!
    Программер - творчесская личность, а кодер - математик!

    Это как архитектор и строитель!
     
  20. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Тут ОСь как железобетонный пол. В него как раз и упрёшься: для веба дальше апачей-фигачей только пустота. :) Вот что я имел в виду.

    Скажи это математикам и они тебя убьют. :)

    По-моему, "программист" и "кодер" это синонимы "таланта" и "посредственности", соответственно. Именно этими словами людей делят во всех других сферах деятельности предпологающих творчество.
     
  21. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    lexa
    Напрасно, я не сказал ничего плохого! Это две разные, но одинакого полезные профессии!
    Один без другого ничего хорошего не сделает. Для этого создаются команды из архитекторов систем, кодеров и дизайнеров.
    Это как в кино, главные творцы: Режиссер-постановщик, оператор-постановщик и художник-постановщик! ;-)
     
  22. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Любая профессия творческая если к ней творчески подойти. А чтоб стать программером достаточно творчески подойти к профессии кодера !!!
    (ИМХО само собой)
     
  23. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    S.t.A.M., а вот и сказал. ;) Математики считают себя самыми творческими людьми, они пологают, что математика это верх творческой деятельности, ибо она есть всё и во всём (что, кстати, отрицать сложно :)).
     
  24. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    самые творческие люди - женщины ибо не ведают что творят (с) 440hz
     
  25. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Женщины - самые сильные люди ибо могу победить здравый смысл (c) Hight