В комментах недавно появился вопрос о том, смогу ли я написать игру дурака без помощи интернета и дополнительной литературы. Какой вопрос, такой я дал и ответ, но потом появился более интересная интерпретация в принципе того же вопроса, о которой я и хочу сегодня поговорить. Ясный красный, что помнить абсолютно все нафиг нужно. Если бы я пытался выучить наизусть все, о чем хоть когда-то читал и пытался изучить, то голова Джони Мнемоника показалась бы мне маленькой флешкой. Но я реалист и не пытаюсь запоминать все. Когда я что-то читаю или изучаю, то главная цель, которую я преследую - это понимание. Если я понимаю вопрос, то все отлично, и можно продвигаться дальше.
Когда дело доходит до реальных дел, то вот тут уже свое понимание я использую для того, чтобы писать реальный код и выполнять поставленные задачи. И даже в этот момент я не пытаюсь запоминать что-то. Когда выполняешь много раз одни и те же задачи в разных контекстах, все самое необходимое запомнится само. Я никогда не пытался запомнить функции, но когда меня поставили в жесткие условия и посадили не просто за компьютер без интернета, а даже за язык программирования который я не знал и заставили писать тесты в блокноте (читай мою заметку собеседование в канадскую компанию), я сдал тест успешно и уже пол года работаю в этой компании и продолжаю писать в Notepad++ без помощи подсказок среды разработки, без мега отладчиков и даже без файлов помощи.
Во время теста мне дали только одну книгу по JavaScript и сказали, что ASP похож на JavaScript, а дальше выкарабкивайся как можешь. И ничего, за 4 часа написал все, что требовалось.
Когда есть большой опыт, все необходимое и то, чем вы пользуетесь очень часто запомниться само и игру в дурака или сапера можно будет написать без помощи справочников. Смогу ли я написать сапера, дурака или что-то простое на Delphi без помощи книг и интернета? Не вижу проблем. В таких играх нужно помнить функции работы с графикой и простейшие вещи типа массивов. Если даже забыл, как работать с графикой, всегда можно мухлянуть и использовать компоненты TImage в качестве карт и перемещать их, а компонент TImage уже сам прорисует свое содержимое.
Смогу ли я написать без Delphi, а прямо в текстовом редакторе? Если не использовать графику, а мухлянуть и упростить себе жизнь компонентами, то да. Если использовать графику по максимуму и задействовать DirectX, чтобы было красиво, то вот в этом я сейчас уже не уверен. Хотя уверен, что не смогу, потому что уже забыл DirectX. Года два назад я бы без проблем ответил ДА, а сейчас хотя бы примитивный помошник в виде IntelliSense среды разработки не помешал бы. Последний раз я видел среду разработки Delphi чуть больше года назад, когда уволился с последней работы в Питере. Ну а DirectX не использовал с того дня, как сдал книгу. Не знаю почему, но почему-то перестал использовать его :).
И вот тут мы подходим ко второй части вопроса, который недавно прозвучал в комментариях на этом блоге - что случиться, если произойдет перерыв. Базовые вещи никуда не денутся, потому что это как езда на велосипеде. Как работать с массивами, переменными, создавать объекты вы не забудите никогда. Но вот параметры функций можно подзабыть. Мне часто приходят вопросы по Delphi на мыло, но в последнее время я стал замечать, что я больше стал посылать в Help по приблизительно очерченной дорожке, потому что начинаю забывать его.
Когда-то я изучал Flash и даже что-то пытался на нем делать. Если сейчас мне дадут Flash, я без проблем смогу создать какие-то простые анимации с движениями, даже не смотря на то, что я профессионально не работал с ним. Смогу ли я что-то большее? Тут даже точняком скажу, что нет.
Мозг имеет особенность выбрасывать ненужную информацию. Ее можно сохранить, если постоянно заставлять мозг, напоминать ему и тренировать. Нужно ли? Я считаю, что нет. Ничего позорного в том, что кто-то может писать код только со справочником, книгой или интернетом нет. Как я уже говорил, главное - это понимание. Если вы понимаете, то быстро найдете решение проблемы.
Тут я уже приводил пример с SQL и курсорами. Если меня попросят написать SQL код с курсорами, то без справочника или хелпа я это не сделаю. И тут причина даже не в том, что я не могу запомнить, как это делается, а в том, что я не хочу. Если я буду знать, то для меня будет проще использовать их во многих ситуациях, вместо того, чтобы написать банальный UPDATE. Тут я даже специально не пытаюсь запоминать, как оформлять код. Конечно же, если меня бросят в тяжелые условия, то я скорей всего все же вспомню, как это делать, потому что все равно что-то со временем отложилось в башке и если покапаться, то можно найти, но вот сегодня пришлось писать код с курсорами и я полез в интернет, чтобы вспомнить, как это делается.
Если кого интересует, смогу ли я написать простую игру без помощи интернета и справочников, то спешу кого-то обрадовать, а кого-то разочаровать - смогу. Смогу даже без среды разработки, а только с компилятором командной строки, если не использовать DirectX. Но даже если не мог бы написать даже сапёра, я бы абсолютно не комплексовал. Если кто-то не может написать даже простую программу без помощи интернета, то не стоит сейчас бежать и зубрить все функции и их параметры. Это глупость. Все равно мозг очень быстро овышвырнет все, чем вы не пользуетесь в повседневной жизни. Самое главное понимание того, как все работает и как можно решить проблемы.
Итого: поэтому изначально вопрос о том, смогу ли я написать игру я посчитал глупым и не собирался отвечать серьезно. Я уже давно ни с кем не мериюсь "а ты можешь", "а у тебя больше". Все это закончилось в школе. А вот вопрос - имеет ли смысл помнить все, это уже другая плоскость. Я не знаю, что именно хотел узнать автор вопроса.
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
Большое значение, тут, имеет смекалка- без смекалки и элементарную вещь не напишешь...
Помнится, был со мной случай, правда, не связанный с программированием: ко мне обратился один из многочисленной клиентуры с просьбой объяснить как переделать расчетный листок организации(в нем отображается общая заработная плата, удержания, и сумма к выдаче на руки), консультирование происходило по телефону(по нему что- то, только, и объяснять...). Ну я, недолго думая, отсканировал этот листок, с помощью Paint стер реальные данные и прописал нужные.
Возникла проблема: как- же распечатать документ в нужном формате- простая печать не подходит, через обменники- то- же. В итоге скопировал изображение расчетного в MS World и распечатал в нужном мне формате(ранее, ничем подобным не приходилось заниматься)...
p.s. Мораль- программист не должен все знать, ему достаточно лишь грамотно оперировать полученными знаниями.
эх а я так уже привык к ide ее помощнику, что честно скажу - игру я не напишу...
Я тоже был в шоке, когда мне сказали выполнять тест в блокноте и без помощи IDE. Первая мысль была - "да они сумасшедшие гики, откуда нужно валить как можно дальше". Но ничего, справился а через месяц работы привык и сейчас сам прекрасно себя ощущаю без IDE. Это дисциплинирует и заставляет думать постоянно, потому что знаешь, что никаких удобных отладчиков под рукой нет и нужно быть аккуратным.
И что реально без отладчика и IDE получается писать более качественно и быстро?
А если это не так то это того не стоит)
Задавать глупые вопросы по программированию, это моя стихия. А "дурака", я привел так, первое, что пришло на ум. Просто хотелось узнать, как вы работаете в форс-мажорных ситуациях. Когда нет интернета или того же справочного пособия. Спасибо.
Так и задавай вопрос, а то я не знаю, что от меня хотят. Я без интернета почти не бываю, и без него у меня ломка. Да и обращаюсь я к интернету или к файлам помощи очень редко. Все основные функции знаю наизусть. Если нет информации и невозможно найти, то начинаю научно тыкать. Тыкалка у меня за долгие годы развилась очень научная, поэтому очень часто помогает.
Михаил, скажите не использовать IDE и отладчики, это условие фирмы?(если да то почему), или вы сами решили так работать.
Запрета нет. Некоторые используют Visual Studio в качестве редактора кода, но не более. Проекты очень часто большие и полная компиляция занимает ооооочень много времени, поэтому компиляция проектов идет через командную строку и rake (аналог make файла, только как я понял это ruby вариант). Это позволяет компилировать только те модули, которые изменились. Когда выполняем rake, то сценарии компиляции делают кучу автоматизации.
Когда нельзя компилировать и запускать из студии, она превращается просто в крутой редактор кода. Поэтому я использую чуть более простой редактор кода, но который стартует практически мгновенно и так я экономлю время.
Да, все это можно было бы реализовать в последней студии, да даже 2008-я позволит сделать то же самое. Но просто в компании уже давно устоялась такая компиляция, она быстрая и всех устраивает. Я не знаю, но я очень быстро привык работать в блокноте.
Отличная, четко разложенная статья. Рассмотрены в деталях все поставленные вопросы, и даже больше. Продемонстрирован очень сбалансированный и оптимизированный, выработанный с годами практического опыта подход.
Спасибо за материал, всегда интересна точка зрения бывалого программиста, профессионала на подобные вопросы. Они действительно важны, для организации работы и подхода к программированию в общем, -начинающим программистам, для вырабатывания у них видения, расстановки приоритетов в акцентировании их внимания в столь многогранной сфере.
Спасибо еще раз за материал, и за уделенное время, реальный диалог с читателем. Очень приятно, полезно, и круто.
Согласен с he110, спасибо за выделенное время.
И писал пару игр.
В том числе и на паскале типа инры клад. Но это для общего развития
Уважаемый Михаил Фленов. Хочу поблагодарить Вас за книгу "Библия Delphi". Каюсь, прежде чем купить ее, скачал электронный экземпляр - проверить, насколько легко будет мною пониматься текст. Самая доходчивая книга по программированию, из всех, что мне попадались. Иногда встречаются ошибки, но их число сведено к минимуму.
Настоятельно рекомендую эту книгу начинающим. Никакой отпугивающей спец. терминологии, все просто и доступно.
Еще раз ОГРОМНОЕ СПАСИБО.
а вот я хотела узнать про программу который можно сделать электронную учебник подскажите с ким программам надо работать что бы он был не обычном ааа
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.