Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Как создать свой сайт и заработать?" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Программирование с нуля - это совсем просто! 13) Вдохновляющий
Информационный Канал Subscribe.Ru |
Программирование с нуля - это совсем просто!13) ВдохновляющийПрихожу, смотрю - все работает нормально! Вопрос ко мне: "Ну как же он работает, сервер у нас сломался, срочно почините!!!" Я точно знаю - сервер работает! Смотрю сервак в сети, все открывается, показываю ей. Она говорит, что я не так смотрю! Спрашиваю, как нужно смотреть? Показывает, как смотреть нужно....:) Запускаете Internet Explorer, заходите на rambler, далее Знакомства... В окне браузера надпись: "Уважаемые пользователи сервера знакомств rambler, сервер по техническим причинам не доступен, приносим свои извинения!" Слова руководителя: "Вот видите, нет у меня интернета! И сервер у нас сломался! Срочно чинить!" С сайта "Сисадмин тоже человек" http://sysadmin.mail.ru/ В чем трудность программирования? Многие сразу начинают сомневаться, думают, что дело в каких-то уникальных математических способностях. О таких мифах я писал уже в первых выпусках. Другие не хотят заниматься, потому что надо действительно проверять каждую скобочку и запятую - на месте ли, и дескать, для этого нужна высокая пунктуальность (а в другой работе что, не нужна? Бухгалтеру например. Да любой документ составить, за квартиру и электричество заплатить - точность везде нужна. Нужна пунктуальность например при расчете с любым продавцом, не правда ли? У меня в школе был приятель, его мать считать и писать не умела. А вот деньги считала идеально! :) Мотивация - главное. Третьи боятся "сложной" формы записи. cprintf("%2.2f", 2+2 ); Это сложно, да?
Два программиста увидели НЛО. Учить форму записи в каких то объемах надо конечно, помнить это придется. Хотя справочники в любую систему встроены. Ну конечно, на диване перед телевизором легче и удобнее, это да. Это вообще вещи несравнимые, диван и си плюс плюс. Диван - это наше все... Посмотрите, сколько на вашем компьютере программ! Зайдите на freesoft.ru, download.com - тысячи, десятки, сотни тысяч программ! Программами - хорошими! (в основном :) - забит весь интернет! (а чем еще-то?). И каждую кто-то написал. Что, он умнее нас с вами? Задайте в яндексе любой запрос, и на него вам обязательно не только новости и статьи, но и какая-нибудь программа выдастся. Которую конкретный человек сделал. А знаете, почему так действительно трудно начинать, особенно сейчас, когда мы консольные программы стали изучать, где чистое программирование и ничего больше? И кажется, что дело в математических способностях или пунктуальности... Потому что замечательное отличие программирования от множества других видов деятельности (если не всех! кроме явно творческих, кстати) в том, что в программировании надо прежде всего думать. Думать своей собственной головой. И никто не подскажет, как сделать, если не потрудишься разобраться САМ. Можно вести автомобиль и думать о погоде. А вот в программировании - фига! Есть, есть безусловно доля ремесла и в программировании. Но это когда решается типовая задача, и в памяти уже есть шаблон ее решения, остается только детали реализовать - закодировать немного по другому. Поэтому программисты нередко работают в наушниках - слушая рок и под пиво :) А вот когда возникает потребность подумать, тогда уже ищут тишину... Проблема в том, что система нашего все-обучения совершенно не нацелена на обучение думанию. Вот на механическое заучивание - да. Поэтому назвать ее правильнее система всеобщего запоминания. А еще точнее - система всеобщего оглупления. В некоторых школах и институтах попадаются действительно умные люди, основатели научных Школ (которых, к великому сожалению, все меньше и меньше), которые учат именно думать, принимать решения, творить, брать ответственность на себя и создавать свое, а не копировать чужое. Ну и действуют в них люди, которым обучиться программированию - раз плюнуть. Потому что думать им привычно. Но в результате же после стандартного школьного "обучения" люди вообще теряют навыки думания и живут набором приобретенных навыков. Человек может знать очень много, быть очень информированным и давать ответ на любой вопрос - но быть при этом глупым. Не способным написать даже простую программу :) Потому что тут думать надо САМОМУ, а не пересказывать, как попугай, чужие мысли. Плюс интуиция играет большую роль, у настоящих мастеров. Я таких несколько раз встречал, посчастливилось. Их отличие в том даже от обычных программистов, что мыслят они высокоуровневно. Не опускаясь в детали, сразу выдают главное решение (или хотя бы направление решения), а затем уже за детали берутся. И получается результат в итоге в сто раз быстрее, чем у стандартизованного программиста. Хотя есть методики разработки, моделирующие такие процессы. Очень простые и очень действенные, их мы тоже изучим обязательно. Человек вообще очень хорошо "обучается" шаблонам действий. Устроился на работу, запомнил как робот несколько приемов типовых, и так и тюкает, а мысли совсем в другом месте... На диване с газетой :) С программированием так не выйдет точно. Можно выучить кучу операторов и функций, а вот составлять программы так и не научиться. Почему? Во-первых, потому что ленится человек думать. Тяжело это, с непривычки :) Таким воспитан, бездумным. Только поэтому. Есть и такие, что думают, что хотят учиться думать :) А на самом деле не хотят. Почему? Да все потому же - привычки думать нету. А как тогда надо действовать? А вот дальше я и объясняю. Так что для тех, кто хочет думать и не хочет лениться, продолжаю :)
Однажды Программиста спросили:
Еще на эту тему. Когда в процессе физической нагрузки в мышцах накапливается молочная кислота, спортсмену больно. Но именно так и происходит развитие. И тут так же. Не может быть тренировок без усилий. Только усилия приводят к заметным сдвигам в организме! И тут надо действовать, чтобы сдвиги в голове происходили. А многие хотят научиться без усилий - прочитать, поделать упражнения время от времени и само по себе понять без напряга и само по себе стать хорошими программистами. А мыслями блуждать в другом месте. Вообще-то так тоже можно :) Но выйдет очень долго. Опыт будет накапливаться постепенно, ибо сумма усилий для достижения любого профессионального уровня в программировании давно известна! Хотите знать, сколько вам надо решить задач, чтобы стать программистом высокого уровня? Скажу. Чтобы без проблем устраиваться на работу программистом, выполнять заказные работы, создавать свои программы, нужно сделать (самому написать и получить правильный результат) вот что:
СОТНИ небольших программок Хотите стать очень хорошим программистом? Сделайте тысячу небольших И сотню средних И десятки крупных проектов. И все. На разных языках, в разных средах. Нет в программировании серебряной пули, нет волшебной методики изучения без практики.
Как отличить программиста от нормального человека? Вот это действительно Программист! :) А как размеры программы определить? Тоже все давно померено умными людьми. Небольшая - это такая, в которой несколько сотен команд. Средняя - в которой несколько тысяч. Крупная - десятки тысяч. На одного человека, конечно. А в день сколько можно команд написать? Написать можно много :) но собрать из них работоспособный кусочек непросто. Реально, по самым грубым оценкам, где-то команд (они еще операторы называются часто) около ста можно с хорошим качеством подготовить (отладить, тоже говорят). В зависимости от задачи, конечно. Если просто формулы вычислений, то их можно и тысячами записывать. А вот если логика хитрая, то тут уже не столько числом команд, надо брать, сколько умением. Головой. Найти, главное, алгоритм хороший, который уместится не в 500, а в 15 операторов. Как в задачке с водой - можно в лоб моделировать процесс обмена вина и воды десятками и сотнями команд (что впрочем в определенных ситуациях и лучше даже, так как позволяет разные сценарии решения разыгрывать), а можно заранее побольше подумать в стороне от компьютера - и вообще одной командой (вывода :) выдать решение - "поровну!".
-Сколько программистов нужно, чтобы завинтить лампочку? Вот и считаем. 30-50 тысяч команд отладите, и станете профи. Времени на это понадобится 30000/100 = 300 дней. Меньше года! Это конечно если по 100 команд в день. Но это вполне реально и в свободное время. Можно и без компьютера, кстати. На бумажке - тоже неплохой вариант. Я так сам когда-то учился. Когда программистов к компьютеру на час в неделю пускали :) А остальное время они сидели и думали! И получалось, кстати, очень даже хорошо. Лучше по крайней мере, нежели все время за монитором глаза портить.
Хакер читает внучку сказку: Хотя связь между объемом программы (в операторах) и временем ее создания не линейная. Чем больше объем, тем больше времени надо на его создание. Сложность растет так, что одиночке трудно все взаимосвязи удерживать в голове. На помощь приходят всевозможные вспомогательные инструменты, а также методологии разработки, их мы коснемся тоже со временем. Но крупный проект обычно продолжительнее среднего не в 10, а в 30, 50, 100 раз... Хотя, опять-таки, как правило, в реальной жизни чаще всего встречаются средние проекты. Задания, которые на работе дают, программы для массового тиражирования, заказные работы (разные утилиты, мультимедийные системы, системы хозяйственного учета, игры не очень масштабные) почти всегда в 10 тысяч операторов укладываются. Поэтому вполне реально годом обойтись и без крупных проектов. А за что-то эпическое :) сначала взяться лучше бесплатно, чтобы свои силы проверить, в чем-то экспериментальном поучаствовать, получить опыт, и потом уже на коммерческую основу переводить. Итак, 10 месяцев труда положить на то, чтобы стать очень приличным программистом - имеет смысл, как вы считаете? Мы уже начинаем конкретные упражнения делать, дальше я вам буду давать нужные объемы заданий. По нарастающей. И вы сами почувствуете, как все легче и легче становится программировать. Только имейте в виду, что я не всегда буду доступен :) Не хотите сейчас выполнять, думаете - а, пока мне не к спеху, через полгодика возьмусь - тогда я вам уже вряд ли помогу (бесплатно :). Вон в интернете кучи курсов по программированию для начинающих, в магазинах все полки уставлены самоучителями. Но действующая рассылка - ЛУЧШЕ! И не во мне дело.
Звонок пользователя : Ну останется после меня набор выпусков - только даст он не больше, чем обычные учебники, коих десятки, если не сотни уже. А сейчас есть непосредственная живая :) обратная связь. И неважно, пишите вы мне или нет (нет, важно конечно :). Если делаете вместе с ритмом рассылки, то сам этот факт уже и помогает. Причем очень сильно. А как пройдет тема, в архивы ляжет, так и пропадет живой дух занятий.
Изучить все можно, но хочется все же с кем то делиться своими достижениями и задавать вопросы, ежели чего не понятно=)
Сейчас занятия начинаются самые трудные. Как пройдете базовые вещи (а их немного, единицы!!! - типы данных, понятие переменной и три-пять основных операторов), там уже значительно проще будет. Чисто алгоритмические моменты начнутся, совсем другой уровень. Игры вот будем делать :) с искусственным интеллектом :) И сами увидите, что это просто. Сами будете разрабатывать свои собственные виртуальные миры например! Развивать их, создавать разные существа удивительные, экспериментировать с ними, смотреть, как они живут, как воюют. Как размножаются :) ТВОРЦОМ можете стать своих Вселенных! Не чужих готовых, а своих собственных, в которых можно все менять, от начала до конца. Сами будете видеть, как СВОИМИ руками формируется новый мир, оживает, двигается, развивается. Интересно это? Увлекательно? Да ради ОДНОГО ЭТОГО жить стоит!!! Вот почитайте легендарную статью Андрея Родионова " Своя игра": http://www.crys.ras.ru/gx/texts/ar_selfgame.html
Звезды и планетные системы зарождались и умирали, подчиняясь сложным параметрическим законам с вероятностными критериями, сверхновые взрывались в определенных ситуациях и с предварительно заданной вероятностью, оборудование космического корабля и поведение его экипажа описывалось очень большим количеством параметров и, соответственно, могло оказаться совершенно различным в сходных ситуациях... И это скоро. Через полгода! Стоит позаниматься? Но если человек даже на полгода не может в своей жизни определиться и решить, тогда беда... Программирование тогда инструментальным будет. Есть задача - придумали алгоритм, закодировали и все. Ведь что сейчас важно - как только встретили место, которое не поняли - выясняйте и разбирайтесь, пока не поймете. Не идите дальше с непонятками, не набирайте тексты программ слепо, механически, бездумно! Пытайтесь разобраться в каждом операторе, в каждом слове! И не надо ничего специально учить и заучивать! Делайте упражнения, пишите отчеты, и все, что надо, запомнится само собой. Тратьте усилия не на заучивание, а на выполнение. В результате не память ваша чем-то наполняется, а мыслительные способности развиваются. Знать форму записи важно, но вы уже сейчас можете заметить, что форма в разных языках разная, а вот суть-то одна! Какая разница, cprintf() или writeln() ? Привет или Hello? Поэтому на форму внимание мы будем обращать только по необходимости, а вот содержанию постараемся уделять главные силы. То есть изучив принципы программирования, конкретную технику кодирования можно будет применять уже совершенно свободно. Из книжек вы можете информацию узнать, но что от нее толку, если вы не научитесь составлять программы? Поэтому экспериментируйте сами побольше. Я предлагаю 3 упражнения сделать - вы сделайте 33!
Если бы при приеме на работу к водителям относились так же, как к программистам: Многие ведь как рассуждают - дай-ка я попробую, поделаю, выйдет - хорошо, нет - ну и ладно. Так я сразу могу сказать результат такого подхода - НЕ ВЫЙДЕТ! Если нет решимости изначально, то лучше и не браться, чего зря время тратить. Лучше телевизор посмотреть :) Я мотивировать никого с таким отношением не собираюсь. Не буду! Вот тем, кто старается, я помогаю и буду помогать. А на тех, кто спустя рукава занимается (не-правильно :), время не буду тратить. А как такое отношение понять? Да очень просто. Представьте - приходит спортсмен на тренировку и говорит - "чего-то не очень хочется мне сегодня тренироваться, вы, товарищ тренер, уж как-нибудь придумайте мне мотивацию хорошую, а я посмотрю, появится у меня желание или нет". Словно мотивация эта где-то во внешнем мире гуляет и от кого-то другого зависит! Да нет! Внутри она, внутри у каждого из нас и больше нигде. Так что ответственность за самих себя вы на себя и берите. Берете ответственность стать программистом - тогда и трудитесь. Самостоятельно преодолевая препятствия. В виде cprintf :) Я вам помогу конечно. Но помогу - не значит "сделаю за вас". Более того, я гарантирую что если вы будете правильно выполнять задания, то гарантированно научитесь программированию! Понимаете? ГА-РАН-ТИ-РО-ВАН-НО! Что такое правильное выполнение заданий, я писал уже ранее в одной из рассылок. А в чем препятствие? САМЫЕ главные препятствия - перечисляю в произвольном порядке :) Лень. Само-жаление. Сомнение. Нету других. НЕТУ. Если силен в голове хотя бы один из этих пунктов - лень делать, неохота напрягаться; хочется отдохнуть, трудно изучать; вряд ли получится - ну и не надо тогда браться! Иначе выйдет так - взялся с сомнением, в очередной раз не вышло, расстроился еще больше. В следующий раз взялся за что-то другое уже с бОльшим сомнением. Итд. Наша цель - стать не просто программистом, а Программистом. С Большой Буквы. Мегацель :) Зачем по пустякам размениваться? И я вам помогу. Точнее, вместе будем этого достигать.
Разговаривают два программиста: Тут сообщали о нашей сборной на олимпиаде по информатике в Греции, где российская команда получила четыре золотых награды (это много!). Средний (!) возраст - 17 лет. Что это значит? Это значит, что настоящими Мастерами программирования ребята стали за 2-4 года. Это подтверждает кстати положение о 30000 операторов. А на этих олимпиадах очень трудные задания, которые к тому же надо делать очень быстро; в обычной работе такие встречаются конечно, но редко, да и времени для их решения всегда достаточно. Это значит и еще раз подтверждает, что НИКАКИХ специальных математических знаний и способностей для создания программ не надо, и стать мастером можно за весьма короткий срок. Достаточно постоянной практики, больше ничего! Хотя что касается самой олимпиады, не знаю, есть ли там призы. Это единственное ради чего стоило ехать :) - а еще за чем? чтобы повесить на стену бумажку в рамке? Знаю ребят, которые однозначно не хуже по способностям, а возможно и лучше, только поехали они не на олимпиаду в это время, а на конференцию разработчиков ISDEF. Там в основном независимые разработчики собираются своего собственного софта, делятся опытом. Полезнее это для развития, как вы думаете? Диплом поможет конечно устроиться на оплачиваемое место... У приятеля моего была небольшая программистская фирма в 1995 г. На сытую жизнь хватало (а зачем больше-то? ну куда? унитазы золотые покупать? езжай лучше на природу в деревню и там программируй в удовольствие :) Но он уехал в США наемным. Теперь широко улыбается тупыми шуткам начальника-китайца (типа такой, на дне рождения лысого сотрудника - "выпьем, Мак, за твои последние волосы!"). Об олимпиаде был сюжет в "Вестях", а потом показали центр обучения пенсионеров работе за компьютерами, в интернете, в чатах шестидесятилетние бабушки общаются. На курсы очередь желающих - на полтора месяца вперед записывают! А там, глядишь, и Си освоят :) А что?
Сидит программист в баре, пьет пиво. К нему подходит девица: Все, больше не уговариваю. Цели ясны, задачи определены, за работу, товарищи! :)
Да поможет вам F1, Большой получился выпуск, задачи и ответы завтра. (c) 2004 Сергей Бобровский bobrovsky@russianenterprisesolutions.com
Школа программирования с нуля
Все предыдущие выпуски базового курса тут:
|
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.prog.prognull |
Отписаться |
В избранное | ||