О программировании - информация для начинающих
В связи с модой на алготрейдинг вижу много тем про программирование.
Первую программу (это был простой графический редактор на BASIC) я написал в 11 лет. Т.е. это было почти 20 лет назад. Фактически можно сказать, что программированием я занимаюсь почти всю сознательную жизнь. Поэтому думаю начинающим может быть полезен мой опыт.
Итак:
1. Программирование привлекательно тем, что практически не требует обширных знаний. Нужен особый творческий + конструторский склад ума. Хорошее пространственное, абстрактное мышление. Умение держать в голове большие модели целиком, умение нестандартно мыслить. Что касается собственно знаний — все они довольно таки просты для понимания, и при наличии прерасположенности можно стать хорошим программистом за 2-3 года.
2. Недостатки программирования исходят из его преимуществ. Т.е. для работы нужен в основном быстрый и гибкий мозг, программисты довольно быстро выходят из строя. Человек с возрастом глупеет, и для программиста это становится заметно очень быстро. Если в других профессиях важен жизненный опыт, то у программистов это не слишком нужно — считаю эта профессия идеальна в возрасте 18-22 лет, когда пик энергии на максимуме, и мозги работают наиболее быстро. На практике, особенно в России программист 35 лет уже староват. Тем более технологии меняются каждые 3-5 лет, многим надоедает их изучать.
3. Лучший способ научится программировать — это как ни странно, практика. Видел что Тимофей хвастался, что прочитал 200 страниц книги по C#… Занятие абсолютно бессмысленное. Каждый язык был создан из практических задач. Как пример — было создано куча языков в академической среде, но десятилетия ведущим был Cи — фактически созданный практиками для конкретных задач системного программирования. Не понимая где на практике должна быть использована та или иная конструкция языка совершенно бесполезно ее изучать… Более того, бывает что программируя на языке годами можно не знать некоторых конструкций, просто потому что они не нужны. Программирование прежде всего прикладная область.
4. Исходя из (3) могу дать ключ к пониманию ООП. Когда мне было 13 лет было совершенно не понятно зачем нужна инкапсуляция, полиморфизм и пр. Вернее, так то оно вроде понятно — инкапсуляция — скрытие. Полиморфизм — изменение. Но общей картины не складывалось. А не складывалось из-за банального факта. Мало где в учебниках писалось зачем же нужно ООП
ООП нужно прежде всего для коммандной работы
Как только появляется опыт работы в больших проектах с десятком сотрудников, ООП становится понятным и очевдиным. Так, инкапсуляция мешает другим сотрудникам сломать код, а полиморфизм внести изменения не вникая в его суть.
Так что совет новичкам — даже не пытайтесь понять ООП без реального опыта работы. переменные-условия-циклы-массивы — этого набора достаточно, что бы начать писать простейшие программы. ООП вам не понадобится еще очень долго
5. Промышленное программирование состоит только на 0.1% из кодирования идеи. Все остальное время уходит на реализацию ее обвязки. Новички этого не понимают. Например знаю что на форуме есть тарарин (сори, забыл имя), который ревнует мой сайт, считая что пиарюсь незаслуженно. Дескать ничего сложного, что бы сгруппировать цену по кластерам. И это действительно так. На это мне нужно было примерно 20-30 минут. Основная я же работа состоит в том, что бы заставить отдавать этот результат мгновенно на базе в 60 гигабайт при одновременном подключении 50 — 100 человек, в соединении MSSQL — C# — JAVASCRIPT кода, в написании грамотного ТЗ для помошников — фрилансеров, контроле, отладке и проч, проч.
Я писал, что для кодирования не нужно много времени, но для создания архитектуры многолетний опыт все же нужен. Сложность системы растет экспонентциально, и опыт программиста состоит в том, что бы заложить фундамент системы так, что бы она не рухнула под собственным весом при построении 20-30 этажа и не пришлось делать все заново.
З.Ы. По старой рунетовской традиции предвижу что сейчас появится куча спорщиков с опытом не 20, а 30 лет и начнет оспаривать каждый пункт. Relax, информация напиана для новичков. Понятное дело что с опытом обращаешь внимание уже на другие вещи
План должен быть, не: прочитать за сегодня столько то страниц,
а: реализовать такой-то проект
рекомендую для неумеющих плавать, но умеющих читать. Джон Каунсилмен «Спортивное плавание». Когда я сказал своей знакомой что учусь по книге плавать — она долго смеялась, а в школьные годы она даже какие-то призывые места по области брала. Ок, говорю — пошли в бассейн. Вобщем проплыв брасом пару дорожек, сделав при этом одинаковое число гребков и примерено с одинаковой скоростью (мы не соревновались — просто плыли «для себя») она признала, что техника в первом приближении более чем.
резуюме — да не торопитесь вы делать такие сильные выводы, жизнь богаче. вы ее видите через узенькую щелку. И ООП нужно в первую очередь не для коллективной работы а для ЭФФЕКТИВНОЙ работы, и как следствие применение ООП существенное понижает порог сложности организации командной работы.
Я понимаю, что вам хочется поспорить, что бы показать свой ум.
Но еще раз — мои советы для новичков, с профи я бы общался по-другому и выдвигал другие тезисы. Но для новичков они скорее вредны.
просто забавно было проиллюстрировать на случайном примере, как можно быть заведомо уверенном в чем-то и тут же столкнуться с полным опровержением этой идеи. я это уже проработал для себя и ничему особенно сильно не удивляюсь.
вы предполагаете, что то чему я научился за два месяца походов в бассейн с частотой 2 раза в неделю лично господин Каунсилмен меня бы научил за ОДНО занятие? Я уж не говорю про большинство наших трениров (я немного занимался спортом) которые вообще нифига не могут объяснить технику и до всего самому приходится доходить? давайте прямо тут и закончим спор.
не в режиме спора: я с интересом прочитал ваш пост. он не плохой и не «неправильный» это просто мнение, связанное с вашим личным опытом и вы его обобщаете на многие ситуации в которых вы даже не были. вот увидите что ваше мнение о возможностях программирования в 40 лет заметно изменится. только и хотел вас немного удивить необычным примером, всего-то а превратилось в какой-то эмоциональный «спор». кстати, я поэтому почти ничего не пишу и не комментирую (хочу скрыть свой ум :-) )
Вообще я вроде как изначально предупредил, что это упрощенный подход, который может помочь новичкам, в целом же все конечно намного сложнее, только имеет ли смысл показывать всю картину?
В 8-ом классе детям вы тоже на первом уроке физики говорить «ну вообще-то 3 закона ньютона на самом деле вообще не работают». Да, не работают, но в первом приближении и для макромира самое оно.
ООП имеет применение не только в целях повторного использования кода. Но в первом приближении так оно и есть. Коментарий «не для коммандного, а для эффективного», вообще ни о чем, т.к. под эффективным можно понимать вообще все что угодно.
Надо как-то позитивнее быть
Многие считают, что взрослому человеку учится стыдно.
Пример — есть разница встать первый раз на роллики в 12 лет или в 30? Во втором случае уже некомфортно осознавать что тебя могут увидеть прохожие за этим занятием.
Я давно заметил, что читаю быстрее другие людей. Одним из моих развлечений было читать в метро через плечо книги, которые читают другие люди. И где-то через 2 года трейдинга я заметил, что женщина читает свою книгу быстрее чем я — он переворачивала страницы быстрее, чем я дочитывал до конца. Это было огромны шоком. Я понял как деградировал и вскоре бросил торги.
не соглашусь. Потому что когда не знаешь с чего начать, можно просто взять и начинать что-то читать.
может ты не заметил, но я писал, что за время прочтения по книжке реализовал 20 программ, это и есть та практика, без которой никуда
Я например писал… Ну на 7 языках точно, не считая всякий технологий, библиотек и пр. Неужели ты думешь что я каждый раз читал фолианты по 700 стр?! Я от силы за всю жизнь прочитал книг 5, да и то по диагонали
Но как я это все могу сделать, если я вообще ничего не знаю? А по книге я уже научился делать массу вещей:)
Да и читать честно говоря интересно
Книги дают только общие ответы, а нужны ответы КОНКРЕТНЫЕ.
вот и пишут такие код так, что… лучше б вообще не писали.
вы конечно это затрагиваете, но именно программирование (написание кода) — самая простая и легкая часть, если речь идет о создании программного продукта.
Шлите ваше резюме, что бы я оценил что вы там за систем архитект. Может вы формочки для 1С всю жизнь рисовали.
Специально же разделил кодирование и промышленные IT проекты, нет, как обычно всегда найдутся умники вставить свои 5 коп
Иех, жизнь прошла мимо...))
4. Не согласен, что ООП удобен для командной работы. Скорее ООП больше подходит там, где действительно нужны объекты. Кнопки на форме — хороший пример экземпляров класса, а класс birthdayParty — в учебных целях -ОК, а на практике выделение таких расчетов в класс спорно
да, есть программисты и 60 и 70 лет. Но много ли их? Статистика говорит, что это работа для молодых.
по второму пункту — спорсить с тем, что ООП удобен для повторного использования кода… ну даже не знаю, что на это можно ответить!
Основная моя ошибка была в том, что я сразу предполагал какие-то сложные проекты для торговли. В то время как автоматизация в торговле или анализе числовых рядов строиться на довольно таки примитивных программах, где не нужно иметь даже и 2-ух лет опыта.
Программирование развивается только в ширину. Появляется багаж знаний как делать не нужно. Качественных уровней типа продвинутый, гуру, мастер — нет такого. Поэтому я и свинтил с программерской ниши. Потолок в знаниях был достигнут очень быстро, и я не очень-то и уверен, что эти знания прям так уж сильно отличаются от того, чему научился еще в школе.
Самая сложная и интересная работа была сразу после института (участвовал а разработке пакета 3Д графики, за 150 долл/мес).
Годы опыта в программировании не очень то нужны.
Алготрейдинг — это пожалуй самое интересное. Здесь чем не занимайся, а все развитие идет в плюс мне, а не работодателю.
Для начинающих советую книгу «C++ Без страха» Брайан Оверленд, объясняет на пальцах и без лишней воды.
Что касается возраста, то например такие алгоритмы которые разрабатываю сейчас мне бы лет 10 назад даже и не снились, потому что это опыт и понимание.
другое дело что пришлось перестраивать мозги под программирование, а это действительно сложнее чем лет в 20… это да, жалко…
Но появились витамины, различные средства… например выявился один интересный побочный эффект обычного средства от кашля — бромгексин. оказывается он активизирует мозг :-) причем очень очень хорошо, главное не переборщить.
Лично для меня программирование — это интересное время провождения. Торгую я по большей части руками на больших интервалах и соответственно сделки открываю 1~3 в неделю. И пока держу позу или жду сигнала, постоянно что то программирую анализирую историю с помощью возможностей программирования, тестирую какие то свои идеи. Это очень хорошо отвлекает от рынка, давления позы и не даёт мозгам задубеть.
Многие так считают, но дело обстоит наоборот. Отсутствие знаний проблемной области как раз и является одной из главных причин неработающего, негибкого и недокументированного (и недокументируемого в принципе) кода.
Понравилось про 35 лет. Действительно, тот возраст, когда новое осваивается все труднее. Но опять же, здесь речь о кодерах, а не о программистах в целом. Если к 35 годам человек так и остался кодером, не став при этом архитектором, то дальше ему будет крайне тяжело (и с объемами работ, и с новыми технологиями, и, как ни печально, с системой начальник-подчиненный)
При работе над сайтом мой помошник например не знал даже что такое акция.
Причем еще раз повторю мысль — не книги типа Language Reference или Programmin Tutorial (это есть в MSDN), а книги посвященные концептуальному проектированию программных систем, начиная с изучения целей и задач, это цела наука.
К тому же CASE технологии были популярны в конце 90х, сейчас же царит Agile. Что впрочем не есть хорошо. Однако у CASE так же есть ограничения применимости. В освновном это корпоративные проекты ценой в миллионы долларов.
Трейдерам алгоритмистам эти технологии глубокопротивопоказаны.
ruticker.com/MXTicker/ClusterProfileGraph?ticker=RIZ2&cperiod=15&priceStep=50&rperiod=day
Блин, я же говорил щаз набежит куча «профи» и начнет умничать, показывая как много знает умных слов.
Если человек хочет научится программировать, ему однозначно НЕ надо ничего знать про CASE
по моему — все остальное детали.
Это не примитивно, это элементарно.
Я еще раз напишу — нет смысла изучать новичку тонкости ООП без опыта, знания не будут усвоены.
Надеюсь для вас не секрет что базовая экономическая теория распространяется не только на акции и производные? Про спрос, предложение и котировки, думаете, только на фондовой бирже говорят и думают?
Пытаясь столь ревниво изолировать биржу от всего остального мира, выдает ваше слишком узкое понимание трейдинга и рынка в целом и вызывает серьезные сомнения в Вашей успешности. Для развития нужно расширять свои горизонты, а не зашоривать, чего вам и желаю.
Ладно — лично Вы. Но зачем вы пытаетесь огородить как вы считаете «ваш» рынок от общих идей и концепций, без которых не будет никакого развития? Российский фондовый рынок, да и экономика в целом имеет известные проблемы с притоком капитала и очень малой долей в мировом масштабе. Отчасти, в качестве одного из факторов, это связано с отсталостью в программно-технологической сфере (это взаимосвязанные вещи). Трейдерский софт в России — чрезвычайно слабо развит на фоне других развитых стран. И это реальная сдерживающая проблема исключающая какие либо разговоры о каком либо нашем лидерстве в финансовой сфере.
Без обид. С наилучшими Вам пожеланиями.
Но причина по которой я тут — это мой частный интерес к финансовому рынку, как я уже говорил раньше. Я совершаю иногда некоторые спекулятивные операции на СПОТ и на ФОРТС. В чисто экспериментальных целях. С этих операций — не живу, т.к. на данный момент знаю более надежные способы обеспечения своей семьи, детей и себя и оперирую малыми суммами. Но интерес к этому рынку есть и он напрямую связан именно с автоматизацией работы на нем.
А вот когда научиться тогда встанет вопрос об автоматизации и визуализации процессов, не видимых на графике тогда и научиться.
Или вы 2 мес. читали книгу а потом прыгнули в бассейн и поплыли?
Вот на это скажу: НЕ ВЕРЮ
ладно, сдаюсь, я проиграл. я привожу только неудачные примеры и неправильные обобщения.
даже не обязательно знать сишарп, можно на простых примерах быстро понять что там куда писать. так что, Тимофей занимается ерундой, забивает себе голову всякими формочками, кнопочками и прочей ересью, для его потребностей это лишнее.
и любой статистик, теорвеорист или физик, сделает это в велсе лучше программиста который думает что щас он всех порвет написав если хай>клоуз тогда бай)
Что могу заметить на этот счет?
200 лет назад программистов не было. 35 лет назад программистов на планете было не много больше нескольких сотен или тысяч. Сегодня их несколько сотен миллионов. Наступят времена, когда в той или иной степени составлять программы будет половина населения Земли. Скоро. Это раз.
Во-вторых. Если сегодня сравнить технологическую развитость США и России, то количество людей не брезгующих программированием там и здесь — пропорционально уровням той самой развитости. За страну обидно. Поэтому и трачу тут свое личное время и пишу все вышеизложенное ради пропаганды. Чтобы привлечь побольше людей в этот хай-тек сектор. Не нужно брезговать — это более достойный труд, чем многие считают. И не нужно бояться — это предельно логичная и подробно описанная область человеческих знаний чтобы понять любому грамотному и терпеливому человеку. И очень полезная почти в любой профессии. Невежество — зло. А со злом необходимо бороться.
Всем успехов в своем деле.
Только реализован имеющийся потенциал в силу ряда причин пока чрезвычайно слабо. Надеюсь в этом Вы не станете спорить со мной?
Одной из причин я вижу некоторое неправильное отношение к кибернетике в СССР. Это конечно не смертельная беда, но на практике — негативный результат налицо. Наши выпускники в основной массе работают в США и Европе.
Брина некорректно относить к русским. Он вырос, получил образование, сформировался и сделал бизнес в США. И я бы без унижения наших достоинств, все же самокритично относился к себе и не преувеличивал наши фактические достижения. Далеко ходить не надо. Давайте посмотрим на наш популярный клиентский софт для работы на биржах. Вы считаете, он не сильно отстает по развитости от западного?