Как стать автором
Обновить

Комментарии 50

Мне кажется новичку это все как раз надо изучать по ходу. Терминал — не цель, а средство, зачем он может быть нужен, если большинство задач решается без него. Это может только отвлечь от основной цели.
Регулярные выражения — лишь один из приемов программирования. Изучать его надо тогда, когда в нем появится необходимость. Я стал с ними работать только году на 10-ом своей практики.
На счет софта для разработки полностью согласен, особенно полезно изучить отладчик сразу как начинаешь программировать, хотя бы на минимальном уровне. Это же касается простейших настроек компилятора и прочих линковщиков.
И вот уж система контроля версий точно по началу мне кажется не нужна. Профессиональный программист обязан уметь с ней работать, а новичку мне кажется лучше пока заняться более важными делами:)
я писал основываясь на своем опыте, все эти вещи встретились мне за пол года, кроме, пожалуй, ярковыраженных регулярных выражений.
На данный момент существует такое множество постоянно обновляющихся инструментов, что изучать их нужно только при необходимости. За исключением фундаментальных основ. Иначе учиться можно вечно, как завещал один дедушка.
В плюс гитхабу (битбакету): когда много времени проводишь на работе, дома, у подружки и еще иногда ездишь к родителям, то просто удобно не тащить ноут. Это не говоря, что в нем есть вики и менеджер задач, и его также можно использовать как code review, и того что через rss можно подписаться на коммиты в любимом репозитории и следить за развитием любимого проекта.

Кстати насчет rss, очень помогает читать все сразу и в одном месте (минус в карму соц сетям).
НЛО прилетело и опубликовало эту надпись здесь
Судя по первому пункту еще не хватает:
0. Купить себе мак.
можно поставить себе линукс
Нужно
Особенно, если ты работаешь в Visual Studio.
Вообще-то речь шла о терминале, нативная консоль в венде мрак, power shell чуть лучше, но все же ему далеко до юниксовой консоли.

Разработка под вижлу отдельная песня, в текстовом редакторе сложновато править огромные бесполезные .sln и .proj файлы, хотя вроде можно компилить сорцы без проектных файлов из консоли, но я таких людей не видел. Также есть mono, но здесь я ничего не скажу.

Также modernstyle писал о чем нужно подумать перед тем как увлечься программированием. Сюда же стоит добавить стоимость используемых продуктов. В данном случае стоимость венды, вижлы, может быть решарпера, здесь человеку нужно либо выложить круглую сумму, либо искать кряки, либо перестать думать о вилже и/или венде.

Итого, если Вы работаете в вижле, то никакой линукс Вам не нужен, тк Вы уже со всем определились, если нет, то вольны выбирать ось, которая будет удобнее/интереснее.
Разработка под вижлу отдельная песня, в текстовом редакторе сложновато править огромные бесполезные .sln и .proj файлы, хотя вроде можно компилить сорцы без проектных файлов из консоли, но я таких людей не видел.


А зачем их часто править?

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


Есть такая штука как Bizspark, которая выдается многим и все инструменты становятся бесплатными. Ну и к тому же для студии все равно крек не нужен — она и без него нормально ставится.
Самое просто это создание, удаление и изменение файлов, что по сути является дублированием файловой структуры проекта на файловой системе, а теперь представим, что мы хотим добавить в проект папку со статикой (css и сотню иконок из любимой js ui библиотеки). Если не запускать вижлу и работать в текстовом редакторе, то нужно будет править эти файлы. Создать и добавить новый проект в .sln вообще кажется страшным, тк там и id и конфиги проектов. Все это к тому что редактирование этих файлов не подразумевает ручные измения, тк вижла это делает автоматически.

Про Bizspark не знал, выглядит интересно, хотя и с уловиями.
Cygwin вполне не плох для многих задачь.
полностью согласен с автором топика, с первыми 4-мя пунктами также столкнулся
Ну нет, автор и господа. Точнее, то, о чём говорится в статье, так лишь отчасти.
Я довольно долго шёл к программированию. Считаю, что, во-первых, это процесс индивидуальный. Во-вторых, имеющийся уровень у человека очень разный — например, я в школе вообще программирование не изучал почти, в начальных классах. То, что делалось, это даже не 1%, это 0.5%, или меньше. Сами помните, что делали в 90-х в начальной школе в компьютерных классах. И так получилось, что ВУЗа не было, а это даёт базу, всё-таки.
В общем, долго идя к этой области, ко мне пришло понимание, что главное — вовсе не терминалы, СКВ и т.п. Главное, во что надо вникнуть, — это алгоритмы, логика их построения. Чтобы при появлении задач можно было разработать её алгоритм решения, понять суть вообще. А языки и остальное — это уже после. Поэтому-то школа и ВУЗовская подготовка важны, там проходят базу, если даже учёба не на программиста. Поэтому, господа, IMHO, главное — уметь проводить анализ задачи и строить алгоритм (строить этапы, если угодно) её достижения. Без это будет пустота, будет фраза «корова на льду», будет пустое оперирование операторами и элементами языков, тупой подбор, перебор и т.д.
p.s.: Это IMHO.
Чтобы при появлении задач можно было разработать её алгоритм решения, понять суть вообще.

А для этого лучше поменьше смотреть видеоуроков и побольше практиковаться.
Первым делом нужно поставить себе задачу — достаточно интересную, чтобы не забросить через день, но все же постараться выбрать не слишком сложную — впрочем, сложность задачи дело относительное, по началу все равно большинство проектов не будут доведены до конца. Но зато в процессе их решения человек будет учиться искать информацию, классифицировать ее, и, конечно же — практиковаться в решении.
Да, не буду отрицать. Скажу вдобавок лишь, что вот, как пример, лекции по алгоритмам на Лекториуме. Весьма хорошо парень читает. Нужно абстрагироваться от синтаксиса и мыслить, для начала, вот так, блок-схемами. Это как при изучении иностранных языков, доводится схема форм глаголов до автоматизма, что связывает весь лексикон и даёт возможность расширяться. Так и тут.
Не хочу никого обидеть (в том числе и автора статьи), но…
Так получилось, что около четырех-пяти месяцев назад я решил слегка разнообразить свой досуг новым хобби и вплотную заняться веб-программированием.
простите меня, если я неправ и несправедлив, но я искренне считаю, что 5месячного опыта недостаточно чтобы писать статьи «для новичков» и пытаться научить их чему-то, особенно если ваша статья в какой-то мере претендует на фундаментальность. «Что следует знать перед тем как «увлечься» программированием» — сильное название, не находите? Подразумевает чуть ли не кладезь знаний для всех и каждого. То же, что вы написали — это то, с чем вам лично пришлось столкнуться, и это не значит, что каждый начинающий программист должен сразу бежать учить регулярки.
Некоторые вон микроконтроллеры учить сразу предлагают,, угу. и ассемблер.
А чего такого в том, чтобы сразу учить микроконтроллеры и ассемблер? Ассемблер тех же пиков — около 50 команд, у 8051 и того проще. А дает отличное представление о том, как программа выглядит изнутри и как она исполняется. Потом переходить к более высокоуровневым языкам и другим платформам становится проще.
В основах обычно дают алгоритмы, и пытаются научить думать системно,
Потому что зная и понимая задачу, по сути, уже без разницы на каком языке её решать.
Правильно было бы, конечно сказать, что GUI лучше рисовать на C#, а оставить C++ для низкоуровневого программирования, но это уже знание специфики и доступных для решения задачи средств.
В чем проблема «научиться думать системно» начиная не с левых фреймворков, а с чистого железа? Микроконтроллеры ничуть не хуже, а в некоторых аспектах даже лучше, подходят для обучения начинающих — не веб-программистов, конечно, а инженеров. Не все же спят и видят как будут веб-бейзд продукты клепать.
Да нет тут проблемы, просто не всем оно интересно и не всем оно подходит.
Я в первом комментарии говорил про жесткое «сначала микроконтроллеры, потом всякие ваши сайтики», видимо я недостаточно акцентировал на этом внимание.
Да, недостаточно)
Я понимаю, что тем, кто хочет веб-программистом стать железо ни к чему.
Совсем уж высокоуровневому прикладнику или энтерпрайзнику тоже.
А вот тем, кто имеет дело с С/С++, даже если не в сфере железа, уже может быть полезно — для понимания того, как выглядит программа изнутри и как она исполняется.
Тем, кто хочет системным программированием заниматься — и вовсе отличный старт.

Хотя, тем, кто пишет «всякие ваши сайтики», тоже, на самом деле, неплохо знать хотя бы основы системного программирования, а то это как то удручает, когда не понимаю, как в памяти хранятся данные, сколько могут занимать данные того или иного типа и как это выполняется. Но для них это скорее ради общего образования.
Если честно, то вообще если вам часто приходится использовать терминал и т.п. то что-то не так в инфраструктуре и автоматизации разработки. Рядовой программист имхо не должен отвлекаться на всякие терминалы. Рабочее место должно быть такое: человек сел, открыл IDE, открыл (создал) проект, начал программировать. Можно быть отличным программистом, но терминалом не пользоваться ( знаний гугла о командах хватит ).
Разве терминал не IDE? Текстовый редактор, сборка, отладка в одном месте.
Кому должно моё рабочее место? Зачем ему IDE?
Вот я пишу в Sublime, у меня постоянно открыты несколько терминалов: сервер, консоль, тесты, папка проекта, что-нибудь ещё. Инфраструктура мне удобна. Что я делаю не так?
Разные языки — разное окружение.
>предполагали что я владею некоторой базой основ, которая, на первый взгляд, к непосредственному программированию не имеет никакого отношения.
Ну вы же понимаете, что уровень владения компьютером у всех разный, по вашему авторы книги должны еще учить читаталей работе за ПК? Про терминал есть отдельные книги вроде unix shell in a nutshell.
Меня, например, обычно в книгах удручают именно затяжные вводные главы написанные как под копирку. Еще часто встречается такой подход: тут мы делаем бяку, нормальные люди так никогда не делают, но вы пока об это не думайте и делайте как есть.
Такой многообещающий заголовок. И совершенно не соответствующее содержание. Терминалы, регулярные выражения, это все технические моменты думать о которых перед тем как увлечься совершенно нет никакой необходимости.
Я бы начал с того что не все программисты одинаково полезны одинаковые. Есть множество направлений и специализаций. рассказал бы кто-нибудь о специфике веб програмирования, мобильных приложений. Для начала приходится решать именно эти вопросы.
Полностью не согласен с автором. Я уверен, что мне базу для программирования все-таки дала начальная подготовка в школе (у нас был спец.класс от универа) и на первом (и единственном) курсе вуза, где мы в тупую строили простые функции по обработке массивов, строк, чтение и вывод информации, помню даже был алгоритм по сортировке. К сожалению, так и не доучившись попал в программисты 1С. Но это база дала стать хорошим программистом, которого ценят и хорошо платят.
Но вот уже устал от 1С и стал смотреть в сторону более серьезных ООП-языков. Быстренько изучил базу Java, основные библиотеки, написал приложение на Android. И вот такой уверенный в себе решил пристроиться куда-нибудь. Но не тут то было, сразу сказалась нехватка знания алгоритмов и паттернов проектирования (более серьезная проблема — это уровень предлагаемой зарплаты как новичку). Поэтому я, желающему стать программистом, посоветовал бы:
1. Изучение базовых основ выбранного языка программирования: циклы, условия, выражения и т.п.
2. Отработка навыков п.1 с параллельным изучением алгоритмов. В этой хорошей книжке кроме теории есть и практические задания, что даст возможность практиковаться.
3. Потом ООП и основные паттерны проектирования (банда четырех самое то)
4. Для закрепления навыков п.п. 1-3 вступаем в какой-нибудь OpenSource проект. Вникаем в чужой код, учимся работать в команде. А в качестве плюшек будет система управления версиями + какой-нибудь из методик разработки.
5. А потом можно будет и резюме писать.
В комментарии высказано лично моё мнение, совсем претендующее на идеальное.
По тексту.
1. Очень много абзацев в начале текста показали одну штуку — отсутствие сосредоточения на чем либо.

По средства прграммирования:
1. консоль — не панация, а средство решения конкретных задач — управление сервером, который находится на другом континенте или в серверной этажом ниже, редактирования кода в любом консольном редакторе, чтения почты, и, обоже — просмотра фильмов и прослушивания музыки — да, вы не ослышались про последние два пункта, ой, простите, три — в консоли можно еще и по сайтам лазить — консольный броузер тоже присутствует, и не один.
2. Текстовых редакторов разного уровня функциональности, как и полноценных сред разработки — до чертиков.
3. GUI или не-GUI — решать конкретному пользователю кому-то удобна MS VStudio, или еще кто из кросспалтформенных GUI сред, а кому-то emacs собаку выгуливает и кофе варит, а кому-то с головой хватает vi(m) и mcedit.\

По программированию — ничто так не мотивирует как четко поставленная цель — хочу (десктопное/консольное/веб/телефонное) приложение, которое будет делать а)блабла б)бебебе и с)тратратра.
Когда таких вот четко поставленных целей будет уже порядочно, граблей будет найдено достаточно, может идти на Junior Developer *Ваш(и)_любим(ый/е)_ЯП* и расти дальше, когда вы определитесь.

Начинать можно от простейших скриптов по автоматизации, например:
У меня есть табличка в БД с моей адресоной книгой — фио, телефон, дата рождения, почта.
Я хочу чтобы мне раз в месяц присылалось письмо в почту со списком днеё рождений в текущем месяце, и в начале недели, если на этой неделе у моего друга — ДР.

Моя история «успеха»
С начала чурался веба — как огня, понемногу писал скрипты для автоматизации разных админских задач (администратор уже 16 лет) (две истории нашли свое место в статьях на хабре).
В прошлом году взялся за Powershell, и познакомился с XaocCPS, который задал мое направление движения дальше, в десктопный C# (о программировании до этого не знал ровным счетом почти ничего), сделал пару программ, актуальных на тот момент для себя — висящий в трее будильник/таймер, свистящий как чайник — чтобы не пролюбить на плите кипящий чайник — потом купил нормальный со своистком, и утилитку для пакетной конвертации фоток в превьюшки для выкладывания на сайт

За последний месяц взялся за написание сайта по управлению домашними финансами на Asp.Net MVC4.
Сейчас осваиваю JQuery, оформление отдал на откуп проекту Twitter Bootstrap. Основные функции он уже делает, дополнительные пилю, потихоньку.
НЛО прилетело и опубликовало эту надпись здесь
Скорее больше в сторону логики и философии — этому вроде как должны в школе и в вузах учить — думать системно.
Если ты понимаешь суть задачи, то дальше задачу можно решать кучей способов и используя язык на выбор.

И еще понимать что сейчас надо — или сейчас быстрее и дешевле найти кусок кода в гугле, скопировать его, подправить и запустить,
Или понять, что решение этой задачи нетривиальное и надо сесть, подумать, набросать черновой проект, проверить как он работает и дописать его до состояния «не стыдно выложить на гитхаб»
Вот-вот-вот, о таких вещах и речь. Однако потом, такой человек останется, так сказать, быдлокодером, то есть для каждой задачи будет гуглить готовые куски и пытаться конкатенировать их. Ничего хорошего это не даст. Если он захочет устроиться на более-менее серьёзную должность, то там надо будет строить алгоритмы и писать код а самому, или вовсе читать код других и указывать на недостатки (это я про тимлидов). Можно, конечно, остаться на быдлоуровне, но это смешно.
Поэтому лучшн не заниматься такими вещами изначально, не стремиться это делать.
а блок схема получения кипятка в чайнике у меня последние полгода такая:
проверить, есть ли в фильтре вода, если нет, набрать.
если вода в фильтре есть, проверить, есть ли вода в чайнике, если нет — набрать до максимума.
еслои есть, тоже долить до максимума, если воды меньше половины.
Проверить наличие свободных конфорок, если есть свободная, найти зажигалку, если все заняты и работают, ждать до освобождения одной из них
поджечь свободную конфорку,
поставить чайник на конфорку.
Подождать первого короткого свистка, подойти к плите.
подождать второго свистка, выключить чайник, открыть клапан для отключения свистка.

профит

НЛО прилетело и опубликовало эту надпись здесь
А офисе у нас даже закипевший 3 минуты назад чайник и тот включают почти все сотрудники.
шаг заивсит от того надо ли «свежий» кипяток, а так даж если вода и горячая она просто закипит быстрее
НЛО прилетело и опубликовало эту надпись здесь
У меня дома проще — полный фильтр = полный чайник = полныйу заварочный чайник. Учитывая размеры моей «кружки» одного заварочного чайника аккурат хватает на жену, малого и меня на один цикл чаепития. Но, пожалуй, это уже уход от темы
НЛО прилетело и опубликовало эту надпись здесь
А вообще принцип KISS никто не отменял :)
Разве что у жены, если она готовит ужин, можно спросить
НЛО прилетело и опубликовало эту надпись здесь
-1. Изучить базовые алгоритмы, теорию алгоритмической сложности, что позволит понимать, как всё написанное будет выполняться, что позволит не писать проверку на ложность преобразованием в строку и т.п… Да, Кнута на полку тоже можно поставить.
0. Изучить строение операционных систем на уровне выше чайника. Иначе даже в веб программировании возможны ляпы, которые поставят под угрозу всю систему (привет ссылкам с ../ и т.п.). На полку поставить можно Таненбаума
>привет ссылкам с ../ и т.п.
А чем плохи относительные ссылки? Казалось бы, переносимость, независимость.
Я имел ввиду работу таких ссылок на некоторых веб проектах, когда ссылкой myurl.org/../../../../etc/passwd можно прочитать много чего интересного
Хох! Здорово! Даже не думал что такое бывает.
А как так получается?
Веб-сервер запущен от рута, права в файловой системе криво настроены?
Ни чего кривого. В /etc/passwd только список пользователей. Он доступен на чтение.
Пароли в /etc/shadow.

История этого бардака.
Если коротко: раньше хранить хеши паролей в открытом виде не казалось чем-то странным. Потом пришлось выносить в другой файл, так как закрыть чтение /etc/passwd уже не получалось.
Но как же защититься от такого?
Настроить права на смену директории сервисом, chroot, просто прямая настройка сервиса… вобщем это я и имел ввиду, когда советовал почитать про ОС во избежание :)
Я не понял. А что уже зимние школьные каникулы начались? Зачем ЭТО тут? Или это часть какой-то популистской стратегии? В общем это и многое другое есть в других уголках интернета в более и менее доступных формах.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории