Начинаем учиться пограммированию ?
Большинство программистов профессионалов, которых я знаю, учились программированию ещё с детства. Сейчас же всё чаще и чаще мои знакомые, которые до некоторого времени почти никак не были связаны с програмированием, пытаются начать осваивать данное ремесло.
С чего вообще начать ? Эта проблема стоит у них остро. У них нету времени делать эксперименты просто ради удовольствия (а именно с этого начинался лично мой опыт в программировании) . Задача стоит - быстро освоить. Очень часто слышу вопросы: как быстро выучить c++, или java, или php... Если в этот момент человек начнёт изучать просто данный конкретный язык программирования, то тогда существует не большая вероятность того, что он вырастет в профи. Если человек именно научиться профессионально решать задачи в программировании, ему надо изначально построить определённый базис. Чем прочнее будет этот фундамент, тем проще и быстрее будет происходит освоение остальных частей. Если вы просто знаете синтаксис c++, но не знаете как конкретно выполняется та или иная команда, вы не сможете быстро писать эффективные реализации алгоритмов или вы не сможете полностью понять как конкретно работает ваш код, и вы будете сильно удивляться, когда будут находиться баги в тех местах, где их не должно быть. Чем меньше будет таких blackbox'ов в ваших знаниях, тем проще вам будет оценивать потенциальные проблемы и решать их до их появления.
Вообще всегда для того, чтобы выжать из инструмента максимум что он может, надо знать принципы его работы. Если вы выучили, что на клавишу фортепиано можно нажать слабо или сильно, извлекая при этом более громкий или тихий звук, то вероятность того, что вы научитесь играть на нем быстро ниже, нежели если вы знаете, что при нажатии на клавишу, молоточек бьет по струне. Если знать принципы работы сцепления и двигателя, то ездить можно однозначно лучше, чем без них.
Для того, чтобы начать программировать, желательно:
* понимать хотя бы минимально принципы работы того, под что собственно и пишутся программы;
* иметь хорошую математическую базу, или же быть готовым её быстро пополнять.
В общем виде программирование, можно сказать, наука о преобразовании данных. Всегда есть что-то X (блок управления), который работает над чем-то Y (информация - сама программа + её данные?), получая при этом Y (результат). Многие говорят об ассемблере, как о самом низком уровне такого представления. На самом деле это не правда, точнее почти правда. Самый низкий уровень - это машинный код, байты информации, которые умеет обрабатывать процессор. Ему не понятны текстовые команды, которые и являются языком 'ассемблер'. Каждый язык, который работает по принципу 'компилятор' на выходе имеет набор комманд в машинном коде.
Смотреть что такое ассемблер и машинный код всем программистом надо в обязательном порядке. Современные процессора имеют сложную структуру и сложный машинный код. Честно говоря, я не вижу смысла разбираться полностью в деталях как 'оно' работает, но общий принцип очень желательно знать. Я бы посоветовал для знакомства с ассемблером глянуть на более примитивные (старые) процессора: zx80, x86, возможно глянуть на ассемблер процессоров семейства arm (в большинстве кпк используются именно такие процессора).
продолжение следует... правда возможно только в рамках своего блога...
С чего вообще начать ? Эта проблема стоит у них остро. У них нету времени делать эксперименты просто ради удовольствия (а именно с этого начинался лично мой опыт в программировании) . Задача стоит - быстро освоить. Очень часто слышу вопросы: как быстро выучить c++, или java, или php... Если в этот момент человек начнёт изучать просто данный конкретный язык программирования, то тогда существует не большая вероятность того, что он вырастет в профи. Если человек именно научиться профессионально решать задачи в программировании, ему надо изначально построить определённый базис. Чем прочнее будет этот фундамент, тем проще и быстрее будет происходит освоение остальных частей. Если вы просто знаете синтаксис c++, но не знаете как конкретно выполняется та или иная команда, вы не сможете быстро писать эффективные реализации алгоритмов или вы не сможете полностью понять как конкретно работает ваш код, и вы будете сильно удивляться, когда будут находиться баги в тех местах, где их не должно быть. Чем меньше будет таких blackbox'ов в ваших знаниях, тем проще вам будет оценивать потенциальные проблемы и решать их до их появления.
Вообще всегда для того, чтобы выжать из инструмента максимум что он может, надо знать принципы его работы. Если вы выучили, что на клавишу фортепиано можно нажать слабо или сильно, извлекая при этом более громкий или тихий звук, то вероятность того, что вы научитесь играть на нем быстро ниже, нежели если вы знаете, что при нажатии на клавишу, молоточек бьет по струне. Если знать принципы работы сцепления и двигателя, то ездить можно однозначно лучше, чем без них.
Для того, чтобы начать программировать, желательно:
* понимать хотя бы минимально принципы работы того, под что собственно и пишутся программы;
* иметь хорошую математическую базу, или же быть готовым её быстро пополнять.
В общем виде программирование, можно сказать, наука о преобразовании данных. Всегда есть что-то X (блок управления), который работает над чем-то Y (информация - сама программа + её данные?), получая при этом Y (результат). Многие говорят об ассемблере, как о самом низком уровне такого представления. На самом деле это не правда, точнее почти правда. Самый низкий уровень - это машинный код, байты информации, которые умеет обрабатывать процессор. Ему не понятны текстовые команды, которые и являются языком 'ассемблер'. Каждый язык, который работает по принципу 'компилятор' на выходе имеет набор комманд в машинном коде.
Смотреть что такое ассемблер и машинный код всем программистом надо в обязательном порядке. Современные процессора имеют сложную структуру и сложный машинный код. Честно говоря, я не вижу смысла разбираться полностью в деталях как 'оно' работает, но общий принцип очень желательно знать. Я бы посоветовал для знакомства с ассемблером глянуть на более примитивные (старые) процессора: zx80, x86, возможно глянуть на ассемблер процессоров семейства arm (в большинстве кпк используются именно такие процессора).
продолжение следует... правда возможно только в рамках своего блога...
