Начало программирования.

Тема в разделе "WASM.BEGINNERS", создана пользователем Heineken, 22 ноя 2008.

  1. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    мм... пишу нижеследующее в невменяемом состоянии.

    Нафигатор по изучению любого языка программирования:

    Шаг 1 - Изучаем основные понятия и термины:
    Что такое компьютер (в общем)?
    Из каких компонентов состоит процессорный блок и какие роли они играют?
    Методы представления информации в компьютере?
    Что такое программа?
    Что такое ОС (Операционная система)?
    Кто такие прикладные и системные программы?
    Что такое ЯП (язык программирования)?
    Кто такой машинный язык?
    Кто такой низко-уровневый ЯП (aka язык-ассемблер)?
    Кто такой высоко-уровневый ЯП (aka ЯВУ)?
    Кто такая программа Компилятор (плюс что такое программа-ассемблер)?
    Кто такая программа Интерпретатор?

    Шаг 2 - Методы решения задач на компьютере:
    Что такое алгоритм (а кто такой Абу Абдулло Мухаммад ибн Мусо аль-Хорезми)?
    Что такое модель?

    Шаг 3 - Познаем один ЯВУ:
    Если вам понравился синтаксис паскаля то сливаем FreePascal, устанавливаем, ищем
    справочники по компилятору FP(должен быть в дистрибутиве), далее учебник по языку программирования
    Pascal.

    Если вам понравился синтаксис бейсика то сливаем FreeBasic, устанавливаем, ищем
    справочники по компилятору FB(должен быть в дистрибутиве), далее учебник по языку программирования
    Basic.

    Если вам понравился синтаксис си/си++ то сливаем msvc++ или digital mars c/c++ или open
    watcom c/c++, устанавливаем, ищем справочники по компилятору, далее учебник по языку программирования C/C++.

    Шаг 4 - Истина где-то рядом(только после того как подурачитесь с каким не будь ЯП):
    Берем Зубкова "Ассемблер под DOS-Windows-Unix" или что нибудь в этом роде, берем
    masm/tasm (эти два пакета программ по разработке собственных программ очень широко распространены).
    Кто такая программа Debugger?
    Кто такая программа Дизассемблер?

    Шаг 5 - Для чего и кого будем писать ПО (программное обеспечение):
    Выбираем платформу (т. е. операционную систему)
    Выбираем область будущих программ (прикладная или системная)
    Познаем систему в той мере которая была определена (или от и до, зависит только от вас)

    Не рекомендуются (для начала изучения программирования):
    различные RAD-средства, и баалистические технологии визуального кодинга (ака Visual Basic,
    (C/C++ с ATL, MFC, и прочие библиотеки затуманивания мозга ниофиту), Borland Delphi, Borlad C/C++ (хотя
    если слить только компилятор, без VCL - то можно юзать), .NET, Java, и прочие средства разработки у
    которых имеется ООП парадигма + байт-код + здоровенный Framework предусмотренный на все случаи жизни или хотябы на половину).

    Рекомендуется:
    Если вы выбрали Си/Си++, то рекомендую для начала изучить Си (К&Р), так думаю будет легче
    изучить Си++.

    Рекомендуемый мной отладчик для прикладных программ под Windows - OllyDbg, для системных программ - SoftIce который сейчас входит в пакет DriveStudio. Хотя SoftIce отлаживает и прикладной софт.

    Рекомендуемый мной дизассемблер - IDA.

    Шлепать консольные приложения с прогрессивным уровнем сложности (от простого Hello World, до
    более сложных программ, типа введите ваше имя, фамилию, отчество, скан-паспорта, пароль от акаунта
    webmoney, и полученные данные отправляете к себе на сервер :))

    Только представьте себе - работа с клавиатурой и консолью, плюс работа с сокетами (сетевыми
    розетками), алгоритм преобразования цветного изображения в черно-белое и конвертирования в png или zip сжатие bitmap'a, и реализация как клиента так и сервера. И вы уже хакир! Правда еще не кулХацкир, но между первой и второй промежуток не большой :)


    P. S. бред. Закрыто.
     
  2. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Мои первые проги шли в примерах к C++ Builder'у. Перелез на него с VB6, ибо задолбало городить ему DLL-ки на TASM32. Еще была тормозная VC 6.0++, вызывавшая полный отврат (формошлепства как такового не было, инсталл обгаживал всю винду). Ставил редко, чисто на покомпилять примеры, интересовали ActivеX контролы для васьки, однако маст-дайная сложность этой недотехнологии отбила всю охоту, юзать весь этот замороченый до нельзя отстой.

    Вобщем билдер. Удручало все. Тормоза компиляции, навороты в скобочках, непонятных константах и знаках припинания, немеряный размер ничего не делающих прог. Зато был отладчик, шагающий не по какойто псевдокодовой мутотени а по настоящим кодам асм'а (за одно это я готов был на всё).

    Кой как перепортировал, пару своих формошлепных прог с мерзопакосного VB васика.. Так и познакомился с Object Pascal, в связке с которым С++ билдер и крутился. И когда столкнулся с необходимостью использовать свои визуальные компоненты (благо борманы щедры на примеры), оказалось куда легче забацать их на pas-е.

    Ну и как то так, програмирование, перетекло в разборки c нюансами компиляния и доводку напильником того что мне не нравилось, что и побудило обгрейдить FAR colorer-ом, после чаво мне было уже не особо до гуевой IDE :)

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

    Студию тож время от времени поюзывал, ибо разжился примерами DirectX SDK, сорцами Quake1, которые с некоторыми переделками, потом пахали в том же билдере.

    А так в кодинге под свои задачи (любые что придут в расширеное сознание), юзал в основном Far/Colorer и дельфе компиль децеце32, и все решалось и решаеться проще, быстрее, без лишнего нервоза.
    зы
    и да! практически никогда не читал help-ы и msdn-ы, доверял только провереному в компилянии и работе коду, из которого выдрать те или иные решения, порой радикально упрощая всю писанину со ста строк до... десятка.
     
  3. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Arthur
    +2

    От себя еще допишу, что можно еще взглянуть на интерпретируемый Lua (lua.org). Он прост, мал, быстр, достаточно мощен, в нем есть объекты, наследование, операторы (реализовано не на С++ уровне, но +, -, =, > итд подменить можно), гц, работа со строками, хэши, массивы (срезов нет), его легко расширить или встроить. У него простые сорцы и можно будет впоследствии наклонить в нужную сторону. Синтаксис достаточно сильно похож на паскаль (нет нагнетания бегинов и ':'), что я считаю преимуществом перед питоном (перл поначалу учить запрещено категорически - сорвет крышу). У него очень хорошая дока. Кроме того на оригинальном сайте свободно лежит первое издание книги иерусалимовского по нему, если с английским норм - очень рекомендую. По ней и язык выучите и прогить научитесь за недельку - две. Потом на более серьезный ланг (пас) перейти будет легко. К нему куча либ, пакетов, расширений (см на сайте). Язык развивается, регулярно появляются новые версии, патчи. Сорцы компелятся под кучу платформ.

    таково мое имхо.
     
  4. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Arthur
    FreePascal же консольный компилятор, если не ошибаюсь к нему нет ИДЕ (Lazarus не в счет), стало быть лишаемся множества полезных вещей, например source level отладчик...
     
  5. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    K10

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

    Лично я использую в основном Дельфи, но стараюсь обеспечить, чтобы исходники нормально компилировались и во ФриПаскале. Как правило, это сделать не слишком сложно, чуть ли не основное -- это всегда ставить ^ там, где, это положено по виртовскому синтаксису (Борланд несколько это дело упростил: если компилятор способен сам понять, что нужно выполнять разыменование указателя, ^ не нужен).
     
  6. inviZ

    inviZ Сергей

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    92
    Адрес:
    Хабаровск
    Arthur
    Ну да, неплохо. Конечно, многовато написал.

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

    1. Дискретная математика, мат. логика, булева алгебра, теория автоматов и т.д. Основы алгоритмов и структур данных.
    2. Архитектура и организация ЭВМ, здесь же немного ассемблера под любую, пусть даже под устаревшую платформу. При этом на ассемблере реализовывать практически то, что изучалось в пункте 1.
    3. Изучение более сложных алгоритмов и структур данных и одновременно чистого С, т.е. без ООП, для закрепления изучаемых алгоритмов на практике.
    4. Теория операционных систем + опять же практика на чистом C по работе с потоками, процессами и прочими вещами, относящимся к теме. Под любую ОС, в принципе. Хотя лучше под Linux или FreeBSD.
    5. ООП на C++.
    6. Формальные языки и грамматики. Обязательно с практикой, поначалу можно с использованием flex и yacc.
    7. А дальше уже все то, что относится непосредственно к конкретной специальности.
     
  7. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    K10
    Зачем IDE? Максимум простой редактор с поддержкой подсветки синтаксиса + bat/make. Когда уже все это осознаешь, поймешь и переваришь, потом пожалуйста хоть IDE, хоть Binary Editor. Нужно с самого начала научиться отделять компилятор от интегрированной среды разработки, понимать процесс компиляции и компоновки, и желательно ознакомиться со всеми ключами самого компилятора.

    inviZ
    В вузах конечно роль немалую играет преподаватель. Я же попытался выделить основные термины и понятия, чтобы можно было самостоятельно начать осваивать какой нибудь язык программирования. На сколько это правильно, честно говоря я сам не знаю :) Это лишь предположение возникшее исходя из собственного горького опыта.
     
  8. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    ага, как на модулях: конпилер и редактор где то на сервере, а ты по телнету к нему и набиваешь edit main.cpp, в удобном насколько это возможно телнет-редакторе, потом conpile link, полное пэ! я на таком кодил - жуть.
     
  9. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Comer_
    Ну это как бы не дело, учиться программированию, когда компилятор на сервере, а не у вас на локалке :)