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

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

Попробуйте Python - он мощный и простой, но документации на русском немного. Так что если знаешь english - вперед! С C++ начинать не рекомендуют.
А что такого особенного в C++ ? Я начинал с C#, сейчас изучение PHP и ActionScript дается мне довольно легко, да и вообще полноценно писать мешает лишь незнание команд, которые в принципе есть в любом мане и факе.
C++ != C#

Ну а вообще вся эта ветка однотипна. Чтобы уметь смотреть по другому лучше начать с python, или ruby.
C++ - очень большой язык с кучей особенности. Если у вас в проекте есть хоть один "гуру" - нет проблем, если нет - хлопот не оберёшься. Чего стоят одни сообщения об ошибках на 10 килобайт при использовании MPL ...
В чем разница между C++ и С#?
Это совершенно разные по сути языки, C# намного логичнее и проще в освоении, но это .NET, то есть, по сути, только Windows. C++ имеет более широкую област применения, от Win32-приложений до микроконтроллеров.
C++ в микроконтроллерах? Я отстал от жизни? Вроде С был.
Если это SoC архитектуры i386 то вполне можно. Например ICOP-6015 вполне тянет полноэкранный интерфейс на турбовижн.
Как говорит тов. Джоэл Спольски, C# - это VB с синтаксисом С :)
Он очень прост для изучения. Естествено, это только плюс, но кому как... :)
C++ работает с памятью активно, нужно думать обо всяких проблемах, которые при работе с С# вообще не появляются, ибо он активно использует платформу .net, что по сути является очень близкой вещью к виртуальной машине Джава, где есть сборщик мусора и другие фичи, облегчающие жизнь программиста, но снижающие быстродействие программы.
В джаве быстродействие ниже далеко не из-за garbage-collector'а.
C++ это классика, а С# это от Microsoft.
Несмотря на то, что сам пишу на питоне, я против того, чтобы с него начинать изучение. Просто в нем не так хорошо развито объектное программирование.
Рекомендую начинать с PHP, но с пятой версии. Для начала надо научиться нормально использовать абстрактные классы и интерфесы.
для этого пхп не лучший язык
Питон насквозь объектный язык.

А если рассматривать язык с точки зрения ооп то лучще уж в яву уйти чем в пхп.
Я не оцениваю PHP, а только говорю, что в нем сам принцип объектно-ориентированного программирования лучше реализован, чем в питоне. Плюс, он легче в обучении, чем ява.
Подскажите, а насколько просто используется под Питон Psyco (кажется так)?
Насколько это удобно и выгодно в плане производительности в целом? В сравнее например с байт-кодом Java или C#.
Спасибо.
И ещё вопрос - начинать с серии "для чайников" или этого особой пользы не принесёт (в плане владения языком)?
Если по PHP, то рекомендую Zend PHP Certification Study Guide. Базовые понятия он дает лучше.
Я бы сказал, что эта книга больше для тех, кто переходит на php. Если умеешь программить - прочитай ее и - ты умеешь программить на php. А вот если так сразу - то выбор не оптимальный, имхо.
Ну, во первых, если так хочется практики, советую начать с PHP и именно литературы "для чайников". Причем с PHP именно 4й версии. Точнее, можно взять и 5ю, но ООП стоит смотреть в самую последнюю очередь.

Касаемо не web-базируемых языков - посмотрите java. Не думаю, что С++ - подходящий вариант, для изучения основ. Во всяком случае без грамотных советчиков или преподавателей.

И еще о PHP. Я начинал его изучение, когда за плечами был только школьный уровень Pascal и небольшие знания html (как сейчас помню, знал его хорошо, но вообще никак не представлял, зачем там сделаны, например, формы). Причем, считаю, что Pascal мне дал только одно - понятие основ алгоритмизации. Т.е. я, не зная PHP, представлял в общих чертах как работает приложение на нем. Зачем нужны if, for, while - как раз из Pascal я и узнал. А HTML, учится очень быстро - максимум месяц, для понимания основ (CSS тут даром не нужен на этом этапе). Но HTML до изучения PHP надо знать.

Изучение именно PHP я начал с этого "учебника": http://www.poorum.ru/phpbook.DOC.
Прошу прощения, что его закинул на свой блог. Места, откуда я это чудо лет 5 назад качал уже не вспомню, но на компьютере артефакт храню. Обращаю внимание, что это самый короткий и именно практический учебник из всех, найденных мной тогда.

После него я открыл для себя следующий справочник: http://poorum.ru/PHP_for_beginers.chm. Использую его постоянно до сих пор.
Учиться программировать - на басике/паскале - что такое вообще программа, азбука в общем.
Далее - Кнут. Великий и ужасный. Ссылки в гугле.
Дальше уже сам сориентируешься ;)
Бэйзик\паскаль - мёртвые учебные языки. Мне нужны практические. Вы бы мне ещё фокстрот или аду предложили. Но спасибо и ваше мнение ценно
Практически - мёртвые. Но вы сами сказали, что учебные ;)
А хороший кодер это не тот, кто знает все семсотвосемдесатьтритыщщи неймспейса/класса/метода/свойства в каком-нибудь дотНЕТе, поверьте.
А хорошему кодеру чтобы начать писать на абсолютно новом для него языке/в новом фреймворке нужно не больше недели.
А как им стать?
Как-как... Учиться, учиться и ещё раз учиться(с)
А названий тут уже достаточно накидали, чтобы устроить гуглорейд на пару дней ;)
Тебе надо освоить в первую очередь принципы программирования. На каком языке - всёравно. Базовые понятия почти во всех языках одинаковы (принципы построения циклов, функций и т.д. и т.п.)
Кнута тебе рановато читать, но потом необходимо, если ты конечно собираешься стать профессионалом в своём деле, а если просто хочешь написать сайтик для себя, даже не берись читать.
ЗЫ: О Паскале зря ты так, я сам учился (правда это давно было) с него, базовые понятия он даёт, и воспринимается легко.
ЗЫЫ: Зная несколько языков и умея анализировать их, создавая аналогии работы, ты всегда освоишь новый язык за очень короткое время. Удачи.
Ну про неделю вы загнули... Както маловероятно что даже очень хороший ПХПшник за неделю разберется с Haskel, или с Erlang.
PHP-шник - это не хороший кодер. Хорошей кодер знает языков штук пять и хорошо - парочку. Мне, в частности, для того чтобы начать писать на Haskel'е потребовалась как раз неделя. На Erlang пока не смотрел...
Имхо знание большого числа различных языков программирования не есть ведущий фактор и признак хорошего кодера. В моем понимании, хороший кодер тот, кто хорошо и достаточно знает определенный язык программирования и реально использует его для создания качественных и стабильно-работающих приложений. Он может знать и 1 язык, зато писать на нем такие весчи, которые и самый заядлый программо-полиглот не сможет реализовать ни на одном из ведомых ему языков.
На самом деле вряд ли это возможно. Программист, знающий Haskell с большей вероятностью сможет написать хороший алгоритм обхода дерева или спроектировать более абстрактный класс.

Ведь, язык - это не просто синтаксис. Главное в нём - семантика. И знать о принципах функционального программирования (не на уровне map и lambda, а на уровне понимания того, как ленивые вычисления позволяют оперировать бесконечными структурами) и логического программирования необходимо без вопросов. Иначе будете впадать в ступор при решении простейших вобщем-то задачек, но которые для того, чтобы они стали простейшими, нужно переформулировать в других понятиях.

Это всё приемлемо, если под кодером вы всё же понимаете программиста (делаю об этом вывод из фразы 'может писать такие вещи'). Классический же кодер, которые по стандартной таксе выдаёт триста строк кода в день, мало понимая, что за алгоритм он кодирует, действительно может обойтись одним языком. Но как я понимаю, такие кадры - это члены высоктехнологичных сообществ, вроде транснациональных корпораций, где знают, как такого кодера можно работой нагрузить (нетривиальная задачка на самом деле). Простому же программисту на просторах рунета вряд ли к подобному образу жизни рационально стремится.
зря вы так про паскаль. на нем вон прошивки для PIC-контроллеров клепают за милую душу. и программеру на Delphi устроиться на работу проще, чем сишнику (по крайней мере, в Минске).
Вы о чём вообще? Какой "басик"? Какой Кнут? Вы его сами читали?
Обращение к тем, кто минусует: всё-таки ответьте - Вы читали Кнута?
А что?
это такое
я не минусую, но я читал старика Кнута. Очень полезно, но я бы не советовал его для начинающих ;)
конечно, надо сильную базу в математике иметь, иначе про задачи и все выкладки можно забыть
Я бы и не стал советовать читать его и продвинутым.
Во-первых большая вероятность, что не пригодится.
Во-вторых начнете ошибочно считать, что узнали все о многом.
В-третьих будет мало возможностей использовать полученные знания.
Лучший способ в чём-то разобраться до конца — это попробовать научить этому компьютер(с Д.Кнут)
а как без Кнута?
хотя конечно я все тома не осилил )
а паскаль хоть и мертвый язык ( что в общем то спорно) но для изучения концепций, в том числе ооп вполне подойдет.
Возьмите что-нибудь попроще. Скажем Алгоритмы. Построение и анализ. Или другой подобный учебник (у Кормена есть большой недостаток: толщина; понятно что читать его нужно не "от корки до корки", но носить-то придётся всё).
Кнута читал, интересный триллер. Но все три тома, как и "войну и мир" не осилил.
В принципе, весь Кнут это оочень сурово, тут согласен.

А на минусовать лично у меня кармы не хватает, так что це не мы.
их гораздо больше чем три)
Лучше читать не Кнута, а Кормена... он воспринимается проще, и все базовые алгоритмы в нем разобраны. И только затем переходить на Кнута.
Я считаю, что начинать с С гораздо полезнее, хотя и не в пример сложнее. Просто, если научиться работать на С, то уже любой другой язык будет восприниматься "интуитивно". Можно в принципе и с пхп начать, а после на С.
.нет языки считаю лажей. И не переубеждайте меня. :)
Я бы порекомендовал автору топика не Кнута, а, скажем, "Совершенный код" Стива Макконелла. В качестве языка - кхм, а почему бы и не Java.
Для начала, конечно, если вообще нет никаких знаний о программирование, развивать в себе особый вид мышления, умение строить алгоритмы и мыслить абстракциями. Брать любую простую задачу - например вычисление факториала числа - и писать для нее решение на уровне псевдокода, сначала своими словами, потом, когда станет известно про условные операторы и циклы, более подробно. Потом на простом языке, на котором удобно.

Дальше можно освоить процедурное программирование. Либо сразу переходить к ООП, если чувствуете в себе силы. Прочитать пару книжек по ООП (например есть книга, называется, по-моему, "Применение UML и шаблонов проектирования"), понять не простое, что это, а зачем и как применять. Взять хороший язык - ту же Яву - и начать работу. Лучше всего сочетать теорию с практикой. Благо, есть интернет, и много готовых примеров кода. Брать чужой код и разбираться в нем - тоже хороший способ.

Т.е. в конечном счете все сводится к - четкой цели, постоянном желании добиться успеха, упорному труду и способности к самообучению.
И кто тут такие минусоиды? Вообще Хабралюди стали каким-то циничными злюками. Я просил совет и вовсе н обязательно всё и вся минусить
ХабраСуки - новый тип народа на Хабре. Минусуют просто так
Тупо игнорь, а то больше достанется )
Уродов везде хватает...
поэтому и писать здесь не хочется.
чувак, вот ты уже целых пять дней, как тут зарегистрирован, а уже суками людей называешь. на себя-то посмотри со стороны?
Себя я знаю, я тех, кто к чему-то стремится и не пишет явный бред никогда не минусовал ни на одном проекте. Надо уметь смотреть с точки зрения другого человека и соглашаться, а тут тупо любое сообщение минусят, что портит всё (проект в том числе)
любое, ага. ладно, проехали.
интересно, а как назвать тех людей, которые за выраженное мнение минусят, да еще и карму гасят, так что ничего кроме комментариев раз в 5 минут писать нельзя, и после этого чтобы что-то написать кроме нужно выпрашивать подъема кармы??? на ФИГ...
Do not feed the trolls, как говорится. Комментарий "какого фига вы меня минусуете, сволочи???77семь" будет вполне логично заминусован.

Я, если что, минусов тут не ставил, но минусовщиков отчасти понимаю.
А, и это, давайте в оффтоп не сваливаться. Минусы ведь, они и за оффтоп бывают :-)
во-первых PHP - это не язык, а гипертекстовый препроцессор. РНР - инструмент заточенный под работу web-приложений, в этом он хорош.
Присоединяюсь к сказанному о Python, это язык который пригодится даже в том случае, если Вы не собираетесь стать программистом. Он кроссплатформенный, по сути имеются реализации даже для Pocket PC. В интерактивном режиме Python может стать мощнейшим калькулятором (попробуйте премножить два 40-значных числа и поймете). С помощью скриптов можно автоматизировать некоторые рутинные операции в системе. Вобщем скриптовый язык идеален для начинающего, поскольку прост, позволяет увидеть результат быстро, без сложных процессов компиляции.

Очень уважаю С++ но посоветую Вам его только, если имеете серьезные намерения развиваться в программирование дальше.
У меня очень серьёзные намерения. С чего начать изучении C++?
Бьер Страуструп - создатель языка - написал книгу. Она достаточно тяжёлая (в прямом и переносном смысле), но Вы получите правильное представление о философии языка.
я бы новичку не советовал кстати старика бьерна тоже
А я читал одни и те же отрывки в течение нескольких лет, пока учился в универе. И каждый раз понимал что-то по-новому.

А вообще лучше всего (если учиться не языку, а программированию) лучше всего почитать библию старика Вирта "Алгоритмы + структуры данных = программы". (Уже предвижу одобрительные комменты =)
Страуструп хорошо раскрывает суть языка, но не больше. Лучше изучать системы а не языки. Например MFC, .NET или Qt и wxWindows.
я советую все-таки прийти в книжный магазин, собрать несколько разных книг с полок и посмотреть, какое изложение для Вас ближе. Будет большим плюсом, если к книге прилагается диск. Потому что в книгах встречаются опечатки прямо в листингах.
Меня например запарили опечатки в серии книг "___ за 24 часа" Практически в любой книге этой серии можно накопать опечатки, а если листинги на диске - они тестируются и Вам будет проще.
В остальном - дело вкуса.
Только выбирайте книгу в которой используются примеры, которые интересны Вам практически - это ускорит процесс изучения
но и при серьезных намерениях все же рекомендую скриптовые языки с повестки не снимать. Они позволят не только разминать мозг в решении практических задач, но и делать прототипы программы. Когда нужно просто проверить алгоритм, прежде чем писать код в С++
По поводу Python выбор книг не очень большой.
На данный момент в продаже книга Сузи - неплохой обзорный материал
Похоже ты не слушаешь что тебе пытаються втолковать, твоего запала не надолго хватит по моему ;)
Хочешь всего и сразу
Роберт Лафоре "Объектно-ориентированное программирование в С++" — сам с нее начинал. Но вообще, лучше действительно начинать с абстрактных вещей, вроде теории алгоритмов. Иначе можно сначала сделать резкий скачок в развитии, а потом постепенно начинать отставать от коллег.
Читай Кнута, учи алогритмирование. Синтаксис не самое главное.
абсолютно согласен! а еще математику =)
Блин, чё за фигня? У кого-то что, какое-то пристрастие к красному знаку минус или это неполноценные люди или минусофилы?
С чего вот это минусовать "У меня очень серьёзные намерения. С чего начать изучении C++?"?
Система плюсования-минусования на хабре давно дискредитировала себя. Не обращай внимания, игнорь и будет тебе щастье :) Не самая страшная вещь на свете.
если навыков совсем нет, то начни с самого начала. Сначала Basic, потом C. Главное - понять как идет работа с памятью. Хоть ты и собираешься быть Web программером, но такие вещи знать надо. Потом подучи C++(т.к. стандарт в ООП). Освоишь это - потом все языки будут проще.

P.S.:можешь еще и Асм подучить, неплохо для расширения кругозора
Где-то помню читал, что люди, начавшие изучение с бейсика, потеряны для процедурного и ОО программирования. Я как раз начинал в детсве со Спектрум бейсика. Теперь думаю, насколько я потерян. :-)
ну я же не говорю, что надо становиться Basic-гуру. Но автор вообще ниодного языка не знает. Просто для ознакомления с программированием, понять что и к чему хватит Basic/Pascal.
Хех, я тоже со спектрумовского Бэйсика. Там помню столько хаков было (POKE, RANDOMIZE...) - не счесть...
По поводу "потеряны для процедурного и ОО программирования" скажу, что мне всегда хотелось писать на функциях, но приходилось страшно извращаться с GO TO, GO SUB...
тут целое поколение выросшее на спектрумах потерянными считать можно. Ж)
Я с очень многим не согласен, но так как комментировать могу только раз в пять минут, напишу одним постом.

0. Ошибка топикстартера в том, что он не указал, насколько серьёзно он хочет изучать языки, собирается ли связывать жизнь с программированием.

1. Дался вам этот бейсик с его мало похожим на другие языки синтаксисом. Если так уж хочется изуродовать своё сознание процедурным языком и потом с трудом переходить на ООП - учите Си. Его преимущество в том, что синтаксис практически идентичен джаве, С# и С++ - основным языкам промышленного программирования, кроме того научитесь с памятью работать (что, кстати, непрофессионалу не очень нужно). И не сильно он сложнее того же паскаля.

2. Алгоритмы знать хорошо, особенно при устройстве на работу :-) А так достаточно быть в курсе, какие есть и, в случае чего, подглядывать в книжку (или в википедию). Кнут (кстати, уже перевели четвёртый том) монструозен - он нужен эстетствующим фанатам или специалистам в CS. На практике лучше Кормен.

3. Очень сомневаюсь, что С++ - стандарт ООП, как написано выше. Стандарт - скорее Java.

Мой рецепт таков: будущему профессионалу можно (если есть желание) учить С++, но лучше сразу С# или Java. Для любителя хорош питон. Для веб-программирования в любом случае, нужно знать SQL, HTML, CSS, иметь представление о XML, паттернах... Не повредит JavaScript, AJAX... Много всего нужно знать :-)
Соглашусь

Java + (HTML + XML + CSS + JavaScript)+ Python + MySQL
да. к тому же для явы есть куча книжков с разборами как базовых алгоритмов, так и отличная штука blueJ
C++ - это стандарт. Принят ISO.
Вы неправильно понимаете слово "стандарт". ISO C++ - это спецификация на язык, не больше. У C# тоже такая есть, только ECMA.
НЛО прилетело и опубликовало эту надпись здесь
C# есть там где есть WinCE.
C#, ибо за .NET будущее
А кого почитать чтобы изучить?
Понятия не имею, авторов так-то немало...
Я всё методом тыка изучал, +, когда надо, MSDN. С другими языками так, конечно, не выйдет )
Программирование на платформе Microsoft .NET Framework
CLR via C#
Рихтер
В чём разница между C# и С++?
В том, что это разные языки :). C# - ближе к Java, чем к C++ по своей идее. Читайте на википедии, там по этим языкам неплохие статьи.
C# не бывает сам по себе, это язык созданный для .NET. Это как Ленин и Партия - говорим одно, думаем про другое :)
учи сначала C. .Net потом, а то изуродуешь себя как программера на всю жизнь
Тогда уж ассемблер. Чистый C вряд стоит изучать кроме как по необходимости. Контроля типов нет, исключений нет, юникода нет, библиотека убогая - кому это сейчас нужно?
Зато дает понять как идет работа с памятью
Ассемблер тоже справляется с этой задачей на отлично.
Нет. Ассемблер склоняет к медетированию не над общей структурой программы, а над конкретными инструкциями. mov rax, rbx написать или xchg rax, rbx. Так что нет, чистый ассемблер ничего не даст понять. Лучше всего, по собственному моему опыту для того, чтобы понять, как работает машина, ОС и приложение в решении задачи - это писать на Си и ассемблере.

А те, кто так ратует за .Net спрошу: вы способны объснить как работает инкрементальная сборка мусора и как сборка через дефрагментацию? И в каких случаях нужно применять одну, а в каких другую? А сложность используемых алгоритмов оценить?
Я понимаю о чем вы говорите, но все равно, с точки зрения воспитания хорошего стиля от Си лучше сразу отказаться и использовать C++. Чем лучше С++ даже для простых проектов, хорошо пишет сам Страуструп и пересказывать здесь я не буду (абстракция данных, инкапсуляция ресурсов в объекты и техника "выделение ресурса есть инициализация", шаблоны, обработка исключений - вот основное что помогает избежать ошибок). Си теперь это язык больше для электронщиков, замена ассемблеру при написании прошивок для однокристаллок - да, это тоже программирование, но масштабы не те и проблемы тоже.

Насчет сборки мусора, чтобы писать хороший код совсем не важно знать как это сделано. Достаточно просто придерживаться правил (т.н. "хороших практик") и иметь в виду, когда и где возникают накладные расходы. Об этом можно почитать у Рихтера. Сложность алгоритмов - если вы об алгоритмах сборки мусора - то нет, не в курсе как это сделано. Оно работает, и неплохо - а у меня и так есть над чем подумать.
Мне понравилась Pro C# 2005 and the .NET 2.0 Platform, Apress 2005. Легко находится в осле в оригинальном PDF. В переводе не видел, да и переводы не люблю - вечно что-нибудь переврут.

После неё очень советую упоминаемую ниже CLR via C# Рихтера, хотя и по некоторым вопросам с ним можно спорить, но все же это действительно мастер-класс.
Кстати, а он кроссплатформенный? Попрёт под Mac OS X и под Linux программа написанная на нём?
Нет конечно, нормальная кроссплатформенность только у Qt
Qt - это по-моему не язык.. и каким тогда обрахом обеспечивается кроссплатформенность Firefox и других программ?
Кутэ - это набор классов для С++.
ну так .Net это тоже не язык программирования. А кроссплатформенность приложений обеспечивается написанием их на кроссплатформенных фреймворках вроде Qt(например Opera)

P.S.:молодой человек, по-моему вам не программированию надо учиться, а общим знаниям из области IT
Есть Mono, .NET под другие оси. К тому же, MS открыли .NET, так что развитие только начинается... Жаль, только в read-only.
Существует .Net под юниксы - называется Mono
Понятно, что реализована не самая актуальная версия .NET, но и за то что есть надо сказать энтузиастам Mono огромное спасибо.
Лично я .NET не использую, но ради справедливости надо это упомянуть.
прошу прощения, не увидел предыдущего поста
Не знаю, будет ли мой совет полезным, но:
Я тоже хотел стать программистом.
Начал с Паскаля.
На массивах споткнулся, пошел дальше, но было очень трудно.
Я понял, что это - не мое...
Обычно на указателях многие останавливаются. Особенно при изучении с++
Угу, согласен с вами целиком и полностью. Народ потом бросает c++ к едрени фене и идет учить PHP. Когда основы того же PHP изучены, понять то, что было не понятно прежде - куда проще. Главное - практическое программирование.
Как же достали меня уже люди с подходом "главное - практическое программирование", не умеющие предсказать сколько машин потребуется для их поделки при 100 QPS и миллионе пользователей...
Ну, не надо так критично. Не сравнивайте себя и молодого 16-летнего человека, который только знакомится с программированием. У него другие задачи сейчас стоят - прежде всего научится. Если уходить в частности, глубокую теорию, искать подноготную высшего алгоритмостроения - вся энергия и желания пропадут раньше, чем у него начнет что-то получаться.

Счастье - это когда после первого дня обучения у Вас нарисовалась строчка "Hello world", а не болит голова от кучи функций, которые трудно представить как и зачем применимы. А "поделки для миллионов поьзователей" делают уже много-чего-умеющие программисты. Если бы Хабр делали дилетанты - мы бы так просто с вами не общались.
эту связку уже упоминали тут, но я все же повторюсь:
      1. Java — язык, который во многом определяет стандарты
      2. html+css+xml — технологии, без которых не возможно представить современных веб.
      3. python — на мой взгляд лучший и самый перспективный язык для написания именно веб приложений.
      4. javascript — ну и без него никуда при работе с вебом. (ajax и еже с ним включены)

конечно все это только мое личное мнение, и если бы можно было вернуться на 6 лет назад, я бы пошел именно по этому пути.
я давно понял, что учиться программировать хорошо можно лишь на реальном проекте. придумайте программу и пишите, почитывая разные программерские форумы, пытаясь разобраться в каждом вопросе который там задают другие. будете узнавать все больше нового и перестраивать, а то и переписывать набело свою программу
а потом поймете что научились :)

а PHP сейчас я бы уже не посоветовал изучать, хоть и люблю этот язык :)
новое поколение выбирает (обычно) питон, а то и руби ;)
Тут (лично у меня) проблема: когда делаешь лично для себя и нет заинтересованной в исходе третьей стороны, в конце концов надоедает и забиваешь... Особенно если какой-то сложный кусок.
а вы пишите стартап :) идей то полно, и есть немаленькая "вероятность" того, что его купят :)
Лениво, т.к. стартап - это не только собственно создание программы, но еще и продвижение и прочие подобные штуки...
Так, начать надо с создания. Пока нет тестовой текстовой версии, хоть и хреново, но все же работающей на домашнем виртуальном сервере (a la denwer), слово "стартап" - только красивое слово.
обычно идейщики сначала раскручивают свою идею, а потом продают за огромные бабки пример - Facebook, mySpace
Ой, ну тут вы не правы. Кто ж купит идею, которую автор даже не представляет как воплотить.

Просто для примера, хоть к стартапам он и не имеет отношения. Я начинал путь в программировании с заказа одной Тульской телекомпании и, по-совместительству, самого большого провайдера в городе, сделать сайт. Причем, на тот момент я знал только HTML и школьный Pascal. Был излишне амбициозным молодым человеком и согласился воплотить в жизнь огромное количество требований, которые и не представлял как должны работать.

Тогда у меня были 3 месяца, на то, что бы изучить PHP, сделать "админку" (стыдно, но я просто не знал, что уже готовую cms можно скачать из интернета) и наклепать уйму сервисов для сайта (голосования, простейшая банерная система, поиск по БД подключенных к сети домов, телепрограмма). Согласен, код был отвратительным, очень длинным, не красивым, медленным - но сайт был сделан, и параллельно выучен PHP. Заказчик остался доволен. И никаких идей, промо, маркетинга - просто готовый проект. Это был 2004 год, сейчас технологии продвинулись ой как далеко, такие легкомысленные заказчики почти исчезли, но задачи остались.

Как вариант - попробуйте сделать CMS, удобную для пользователя (на ваш взгляд). Всегда надо с чего-то начинать. Вот и будете учиться и писать.
Для этого и хочу выучить PHP, но уже сделать платформенную CMS, чтобы её основе можно было разворачивать любые сервисы, т.е. как бы фреймворк с собирателем, пользователь задаёт параметры в окошке, а система гибкая, как плстилин сформирует чётко направленную CMS. Сейчас эра интеграции, даже проектр голограмм можно купить за 370,000 (ведь когда-то столько стоили плазменные телеки), поцессор Silverhorn появившийся в этом году будет положен в мобильные интернет устройства. Простой пример взаимодействия десктопного приложения и CMS отвечающей на запросы - проект Qoove (десктопное приложении трубет Integrated Runtime)
Тогда так:
Java + HTML + PHP + MySQL (или любая другая sql) + XML - если желаете "все и сразу", но начать хотите не с web'а.

Если хочется начать именно с WEB, то:
HTML + PHP + MySQL (или любая другая sql) + Java + XML.

Если хотите углубиться в сайтостроение - тогда пририсуйте где-нибудь CSS.
html + css + js + ajax(клиентский) - 1 человек
php + sql + xml/xslt - другой
Человек не знает программирования совсем. Начинать изучение клиентского программирования с javascript и AJAX в высшей степени не разумно. Да и в нашем случае автор желает изучить и серверную, и клиентскую и embedded платформы. Т.ч. такое разделение - сложно. А AJAX - всего-навсего технология JAVA и XML - с нее начинать мягко говоря не стоит.
Иными словами, вы пока в жизни не писали ни на одном языке, но уже сразу хотите делать такие вещи?
Учите C# — на нём проще всего узнать сколько сейчас минут :)

А если серьёзно — вы неправильно поставили вопрос. Для начала определитесь что вы собираетесь программировать. Если веб-приложения, то С++ вам врядли понадобится. Если embedded-устройства, то PHP и Python вам будут мало полезны, хотя Python может и пригодится для написания вспомогательных скриптов. Язык выбирается исходя из конкретной задачи. А умение программировать — это отнюдь не знание в тонкостях синтаксиса какого-то конкретного языка. Учитесь решать задачи и проектировать системы, язык в данный момент вещь второстепенная.

PS: Всё вышесказанное — сугобое IMHO.
Мне необходим меш-ап, интеграция вебовых приложений на десктоп, а для этого C++ и язык скриптов для поддержки меш-апа в вебе
Тогда учите JAVA. Интеграция - это ее конек. C++ слишком многозадачен, без грамотного учителя забредете в те дебри, в которых не понятно, что и зачем нужно. Т.е. для его изучения нужен своеобразный план. Закопаетесь в тонкостях, и не уловите сути.
я советую начать изучать c# или java

для явы рекомендую скачать blueJ и найти книжку Wrox Beginning Algorithms
а дальше по паттернам для явы книг море


для сишарп... простых чтото не упомню, как справочник подойдет с#2005 для программистов
а как учебник... ну серия демистефайд ничего (c# demystified)
кроме того посмотрите на всяких книжных сайтах книги которые называются beginning in и так далее

имя базу в сишарп или яве, гораздо проще будет освоить пхп и яваскрипт например если это понадобиться

ну а дальше то что советовали по ооп и паттернам =)
CSharp Essentials, 2nd Edition ничего очень даже
Учите javascript, убъёте кучу зайцев одним выстрелом.
Java - как разработчик будешь в будущем очень востребован под мобильные платформы.
как раз наоброт ИМХO. айфон на Mac OS X основан, Windows Mobile скоро будет тоже, Android на Linux основан. Конец midp
Не правда, не путайте J2ME и Java. Java - многоплатформенна, и от его поддержки никто никогда не откажется.
НЛО прилетело и опубликовало эту надпись здесь
Простите за незнание, теперь буду более грамотным
если вы правите код и он вам понятен но писать сами не можете, это означает, что вам надо не синтаксис языков программирования изучать, а основы программирования вообще:

Начните со слова "информатика" в википедии и далее по наростающей, численные методы, линейная алгебра, аналитическая геометрия, методы оптимизации и т.д. Неплохо ознакомится до написания простейших программ со всеми эпохальными языками: бейсик, паскаль, с, ассемблер

Сам по себе язык програмирования это всего лишь инструмент для реализации алгоритма, первичная задача программирования разработать алгоритм, а запись алгоритма на языке это "кодинг", поэтому индуских программистов называют кодерами, а наших программистами.

з.ы. посмотрел профиль, вам всего 16 лет, начните с "информатики", а потом в хороший ВУЗ на специальность "прикладная математика"
На счет специальности, ВУЗа - согласен. Хотя, как в моем случае, может не свести =) На счет глубокого изучения алгоритмизации и высшей математики - пока рано. Да и все языки изучить трудно, а хорошо ознакомиться получиться лишь при наличии очень качественной литературы. Я придерживаюсь практического способа обучения.
я написал это все выше пока не посмотрел, что ему 16, а так информатика, и подготовка для поступления в вуз
Если хочется серьезьно изучать, то как уже и говорили учите алгоритмику. Я бы посоветовал еще дискретную математику и информатику. Далее что-нибудь по устройству компьютера. А то куча народа программировать программирует, но как работает процессор даже не представляют. Желательно хотя бы немного покодить на асме. Далее ознакомиться с основными парадигамами программирования и ознакомиться с C C++/Python Lisp Prolog, далее если у вас веб, то стоит ознакомиться с HTTP и тем как работают вебсервера, затем уже можно переходить к изучению PHP Perl и т.п.
Если учить такие азы, то после них уж можно сразу ассемблер
вот интересно тот кто этот ответ плюсанул прочитал начало треда или многабукаф и юмор про асм понравился?))))
Прямо университетский курс
До университета мне далеко, а знать и писать хочу и надо сейчас. К тому же у меня нет факультета языков программирования в ГУ и других тоже
Хех. Ну если хочется понимать как и что программировать, то надо изучать в таком объеме.
А я думаю сначала изучить HTML, CSS, JAVASCRIPT, PHP 5, C++... а потом может сразу вгрызусь в ассемблер, а структуру ПК я неплохо знаю, как и веба. А если проходить полный курс - это штудировать все языки со времён ады.
Вот правильно вам рекомендуют изучать алгоритмику: тогда бы и мысли-то не возникло "штудировать все языки со времён ады". Языки — инструмент, не более. А то, как вы с ними сможете обращаться — дело совершенно другое. Это же полный идиотизм считать, что программирование на том же Бэйсике или C++ кардинально отличается друг от друга. Дело в мозгах, а не оформленном коде. А для мозгов как раз и нужно знать теорию алгоритмов и прочие вещи. Тогда и не будет вставать подобных вопросов, на каком языке писать.
веб начинают c HTML, CSS, Javascript.
PHP, Python уже на следующем шаге, когда изучите сначала клиенсткую часть и транспорт.

и что вы имеете в виду "десктопое"?
хм… а вам не кажется, что клиентскую и серверную часть должны делать разные люди?
Должны разделять, но програмер серверной части обязан знать и клиентскую, даже если никогда её не пишет. Особенно транспорт.
а почему вам так кажется?
Десктопная - прикладные программы, которые устанавливаются, запускаются и пишутся на языках не-для-веба
тогда сюда попадают и МС офис, и 1С бухгалтерия и, даже, 3D Max Studio. Но знания языков абсолютно не достаточно для каждой из областей этих программ. Нужна ещё и специализация.
На C можно писать и для веба. Тогда какой это язык?
HTML, CSS — языки программирования? Я вас умоляю!
Нет, это китайская грамота, которую вовсе не обязательно изучать. Оно существует для запудривания мозгов бедных веб-програмеров.
Здравствуйте. Я решил научиться программированию.

Два первых предложения топика.
два первых предложения про питон и пхп. Вы, наверное, никогда не преподавали веб-программирование.
Укажите, пожалуйста, где там про питон. Про PHP, так топикстартер колеблется между ним и C++ ("меня интересует веб-программирование и десктопное").

Да, я пока еще не преподавал. В 20 лет как-то еще мало опыта, чтобы других учить.
первый же (http://habrahabr.ru/blog/i_am_clever/353…)

А я обучал и знаю, что когда обучаешь пхп людей, не знающих HTML-CSS то их весь процесс затягивается в 3 раза, пока объяснишь ему эти языки и каким образом передаются данные.
Вы вот видите разницу между первым комментарием к топику и первым предложением топика?

Как CSS влияет на передачу данных?

На передачу данных влияет HTTP, но никак не язык разметки. Для того, чтобы показать-научить, вполне достаточно понимать разницу между GET и POST, а вот она как раз сидит в самом протоколе. Ну для наглядности, согласен, что удобно показать это именно на примерах форм (пускай сами познают мир, когда будут разбираться с XML-RPC, хехе), но совершенно не обязательно на этот момент иметь глубокие знания — вполне достаточно общего представления.

Где я не прав?
CSS конечно не влияет, но я не представляю себе веб-разработчика, что не знает CSS.

Везде правы. Просто вы считаете, что не обязательно знать много.
Наверное, я неправильно выразился: знать много есть хорошо, но не обязательно знать много сразу.
надо определится: является ли обязательной необходимостью изначально знать: CSS, HTML. Как по-вашему?
Как преподаватель, ответьте мне на один вопрос: в школе изучают математику, но придя в нормальный ВУЗ, многие ее разделы, которые давались ранее достаточно поверхностно, приходится копать и перекапывать, фактически изучать заново. Почему бы не давать сразу все подробно?

После того, как ответите — отвечу и я.
Потому, что человек должен знать материал от простейшего к сложному. Переход и агрегацию методов и свойств объекта изучения принято познавать дедуткивно, согласно тому, как человек познаёт мир.
В большинстве случаев, чтобы понять как работает та или иная часть механизма, необходимо понять, что она представляет из себя механизма в целом. А для этого надо изучить сперва механизм, как одно целое.

Программирование не исключение. Пока не будет представления о том, что должно быть на входе и на выходе программы (целой или какого-нибудь модуля), то изучение всевозможных методов будет просто тратой времени, потому как без понимания весь материал потом прийдётся изучать заново.

Что касается школ, то школы не являются специализированными учебными заведениями, а потому изучение материала только поверхностное.
Ну, тут частично и содержится ответ на Ваш же вопрос: достаточно знать HTTP и вовсе не обязательно HTML+CSS для начала изучения именно программирования. Те вещи можно изучать параллельно, как мне кажется, по мере необходимости. Т.е, понимать, как работает все в целом — важно, но не стоит заходить в какие-то дебри.
достаточно для изучения PHP. Но для создания хороших вещей - нет.
Для создания хороших веб-приложений и дополнительных знаний вроде HTML+CSS недостаточно.
* вроде = в виде (описка)
НЛО прилетело и опубликовало эту надпись здесь
Двумя руками поддержу.
Так по c++
http://www.ozon.ru/context/detail/id/2847443/
http://www.ozon.ru/context/detail/id/83179/
http://www.ozon.ru/context/detail/id/89308/


А по php
http://www.ozon.ru/context/detail/id/2811332/
http://www.ozon.ru/context/detail/id/2847621/


Сам читал рекомендую
НЛО прилетело и опубликовало эту надпись здесь
Сразу думать как проц - "01010101" - это жесть =) Но спасибо за совет, я согласен, что ассемблер - это самый нижний уровень, когда говоришь с процессором его языком, но для новичка - ассемблер - жесть как она есть
НЛО прилетело и опубликовало эту надпись здесь
Ну это понятно, что чтобы понять истоки не нужно изучать плоды. И я знаю, что машина Тьюринга, ассемблер - это основа, я этого не отрицал. Под жестью я имел в виду сложность и цели, которым служит язык. И понимаю, что изучив ассемблер легко проглатывал синтаксис и семантику последующих языков, но всё же..
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Лучше всего начать с книги Чарльза Петцольда «Код» — она проста, понятна, и дает знания на несколько другом уровне, чем просто изучение языка программирования. После ее прочтения вопрос «с чего начинать» отпадет сам собой, потому что не так важно, на каком автомобиле учиться вождению, если знаешь общие принципы их устройства, виды и способы использования.
вот кстати да. а еще есть афигительнейшее произведение Дийкстры "Дисциплина программирования" !
Веб надо изучать с HTML, далее CSS, потом JavaScript (уже на этом этапе вы должны gjkyjcnm. понимать алгоритмику построения кода) ну и потом PHP. Компилируемые приложения сегодня я бы рекомендовал изучать с C# очень просто и наглядно, особенно после JavaScript и PHP. Будет необходимость потом уже с пониманием всего окунетесь в мир C++.
По шарпу для совсем не чего не знающих я б рекомендовал - Чарльза Петзольда.
По HTML посмотрите что-то вроде этого http://www.ozon.ru/context/detail/id/946879/
Ну а на самом деле слишком много вы хотите сразу. Так не бывает. Хорошо бы вам в институт пойти. Хотя базис обычно в школах дают на уроках информатики.
Прошу, поднимите мне кармы хотя бы до 0.1, а то минусоиды меня совсем закопают
Беги!!! беги отсюда скорей и скрывайся... за изучением HTML'я!
не смешно
не превращайтесь в кармо-попрошайку, будьте выше этого, сделайте выводы и учтите их в следующий раз.
Тут только так.
Спасибо, достоинство - важное качество. Простоя добился неплохих результатов на Хабре для новичка и написал статьи, а из-за минусов продолжать писать не смогу, а значит потеряю предыдущие статьи
Ну значит не сможете временно, большое дело, блин, ёмаё.
Читать зато можете :)
Со школьного алгоритмического, сперва научитесь программированию, рекомендую почитать книги Дональда Кнута, а затем освоить любой новый язык для вас не будет проблемой.
Это, так сказать, академический путь.

Если хотите стать cкрипткидди, то возьмите любой самоучитель из серии "... для чайников" или "Язык программирования ... за 24 часа" и вперёд :)
Не-не, лучше Кормен. Вспомните, как Кнут пугает неподготовленных людей, а особенно нематематиков. Хотя лично я предпочитаю последнего — практически настольная книга.
учи 2 языка - динамически типизированный (Python/Ruby, PHP5 не советую) и статически типизированный (Java/C++ по вкусу) и будет тебе универсальная связка. На досуге можешь ковыряться в интересных языках типа Smalltalk.
Учить надо не языки, а принципы (объектность, наследуемость, типизация и т.п.) и соответсвующие прикладные библиотеки (STL в C++, стандартные классы в руби и подобное). На это уйдёт 98% усилий. Разучить же конкретный язык, то есть пять ключевых слов и правила применения точки с запятой задачей, стоящей упоминания, не является.
Изучение прикладных библиотек я отношу к изучению языка
Спасибо Вам Хабролюди, прочитал комменты, и решил начать изучать новые для себя языки программирования. Завтра иду покупать "Python для чайников".
Нее я конешно люблю читать книги и учебники в электронном и распечатанном вариантнте, но иногда лутше купить хорошую книгу, чем печатать или читать с монитора.
из всех коментов запомнилась только одна фраза "не так важно, на каком автомобиле учиться вождению, если знаешь общие принципы их устройства, виды и способы использования."
в теории не важно, на каком автомобиле учишься вождению. а на практике, попробуй порули большой фурой после легковушки с автоматом.
ну или напиши код способный работать в условиях highload, сразу после освоения мегасупервыносящеймозг процедуры выводящей "Hello, world!" на том же языке.
Brainfuck тоже ничего так
Для самоубийц и/или мазохистов - самое то )
С английского
вот всегда интересовало. насколько шустрее работают большие проекты на джаве по сравнению с пхп... я на раздорожье... либо в джаву уходить либо дальше пхп...
а почему не то и другое сразу?
я сторонник специализации
НЛО прилетело и опубликовало эту надпись здесь
Если совсем не хочется учить азы ( а придется рано или поздно ), попробуй хотя-бы начать алгоритмически мыслить, для этого очень клево подходят рисования всяких "Backus Naur Form"s, конечных автоматов et cetera.

Как книгу для начала предлагаю "Стуктура и интерпретация компьютерных програм" aka SICP. Плюс одновременно пробовать делать выводы по ходу чтения книги и писать примеры на scheme, и скажем python|java.

Если цель - заделаться кодером-ремесленником как в странах золотого миллиарда, где человек хорошо рисующий иконки обеспечен на всю жизнь - забудь о том что я тут написал. Это не хорошо и не плохо, но описанное выше вряд ли пригодится.
К Автору. Imho, дела обстоят так. На самом деле web-программирование только кажется очень простым. Потому что инструменты, которые в нём используются достаточно развитые, и с простым интерфейсом. Они похожи на автоматическую коробку передач. Можно, конечно, ездить на автомобиле, ничего не зная о том, как она устроена, только проблема в том, что когда понадобится значительно изменить режим движения, просто водитель-незнайка ничего сделать не сможет.

И не стоит думать, что автоматическая коробка передач - это простое устройство. Это очень концептуальная штука, а в ней всего несколько шестерёнок. То же самое и с высокоуровневыми языками программирования, которые вам тут все рекомендуют: Java, Python, С#. Если вы сразу направите энергию на их изучение, то узнаете, как давить на педали, но как конкретно при этом будет работать машина понимать не будете. И это не даст вам выйти за рамки моделей программирования, навязанные высокоуровневыми средами разработки. И, что самое неприятное, вы даже понимать не будете, почему та или иная среда или система программирования построенна именно таки образом, и как этот образ лучше всего использовать. Потому что в основе этих построений лежат не такие уж и тривиальные конструкции. А такое непонимание вскоре приведёт к принятию неверных решений, когда сложность проектов станет относительно большой.

Поэтому, не слушайте вы этих всех любителей PHP, Java, Python, С#, C++, которые наверняка (если они начинали программировать с этих языков) не знают ответов на многие вопросы. Ну, например: а почему у html именно такая структура?

Потратьте время разумно, начните с изучения азов программирования. Ну в самом деле, вы же не начинаете изучение вычислительной математики с интегралов, пределов и операторов. А начинаете с чисел. Филогенез повторяет онтогенез и всё такое прочее.

Поэтому, начните с изучения алгоритмов (ибо задолго до компьютеров всё началось именно с алгоритмов), реализуемых на простых (не для изучения, а устроенных примитивно, которые от машины недалеко ушли) языках программирования: ассемблер и Си. По алгоритмам и структурам данных сейчас есть много хороших книг. Кормен и Кнут, конечно, обязательны для чтения и просветления, но начать можно с гораздо менее страшных и объмных книг, вроде Алгоритмов и структур данных от Вирта. Небольшая книга написана гуру специально для того, чтобы учить программированию.

Если найдёте кроме учебников по этим языкам ещё и книгу 'секреты программирования игр' (она старая и игры там для DOS), получите ещё и дополнительный fun от практики плюс заряд бодрости от вычислительной математики, изложенной интересно.

Затем, прочитайте и освойте (выполните все задания) какую-нибудь книгу по операционным системам, лучше всего подойдёт, вероятно, Баховский UNIX, где расписано, как работают современные операционные системы, какие алгоритмы там используются, как осуществляется ввод\вывод - это важно понимать для хорошего сетевого программиста.

Конечно, если вы пойдёте по этому пути, то сразу же поразить своих знакомых сайтом с динамическим контентом. Но зато, для вас потом эти сайты будут делом техники, а не высоким полётом мысли. Если вы сможете на ассемблере реализовать echo-сервер, который базу данных о подключениях держит в АВЛ-дереве, то уж в PHP наверняка разберётесь.

Да и в процессе изучения материала вы откроете для себя кучу других областей, где можно побыть программистом, которые могут оказаться гораздо более интересными для вас, чем программирование для web, да и более финансово привлекательными (web слишком уж насыщен программистами от Java и PHP, зачем этому рынку ещё и вы?).

Вобщем, распорядитесь своим временем разумно, а не так, чтобы максимально быстро достичь визуального эффекта.
На тему алгоритмов. Вспомнил хорошую книжку начального уровня. Шень, программирование: теоремы и задачию. Взять можно здесь: ftp://ftp.mccme.ru/users/shen/progbook2/progbookpdf.zip
Я бы не сказал, что PHP — легчайшее средство разработки. Прис оздании сайтов на пыхпыхе до сих пор всё делается руками. Нужно всякий раз помнить о куче проверок, каждому приходится изобретать велосипеды, либо юзать фреймворки. (Однако, прежде чем юзать фреймворк, лучше сделать свой попроще — чтобы понимать, как всё работает). Хотя пыхпых и предоставляет большие свободы в программировании (в плане типизации, удобных массивов), я бы не сказал, что на нём можно быстро построить крутой динамический сайт.

Сейчас нам в вузе преподают C#, навязывая идеи объектного программирования. С одной стороны, в какой-то момент испытывал неприязнь — «вот, раньше это было так сложно, и не каждому дано, а теперь любой дурак может формочки клепать». Но потом я заметил приятную фишку. Можно полностью абстрагироваться от системы и увлечённо строить объектную модель, причём, если правильно всё построить — то всё так красиво и изящно получается, что просто плавишься от удовольствия.

Конечно, это возможно и в любом другом языке, но там всё равно рано или поздно приходиться спуститься на самый нижний уровень своих абстракций и много-много писать.
А зачем тебе становится классическим программером? Ты погляди сколько вокруг ИТшников и ведь каждый из них что то да пытался изучать. ОДин из 100 стал более менее толковым программистом. Итог - программеров как грязи. Ты начинающий, опыта у тебя мало и на данном этапе ты нафиг никому не уперся. Оно тебе надо?

В противовес есть embedded программирование, однокристаллки и PLC.

Что лучше быть одним из легиона или одним в поле войном? Я предпочел быть крайне редким специалистом, чем пытаться лезть в попсовое ООП программирование. Изучил ассемблер под кристаллки и парочку МЭК языков (IL и LADD например).

Вот тут поле непаханное, т.к. многие про такое даже не слышали, квалифицированных кадров тут просто катастрофически нехватает. Если ты хоть немного знаешь асм или Си (не ++), то тебя с руками отрывают разработчики электроники местного масштаба. Если ты знаешь PLC то отрывают еще быстрей. КАДРОВ НЕТ!!!
Я после универа, без опыта, с голимым синим дипломом тут же за несколько дней нашел себе работу программера PCL с зарплатой в 35тыр (немыслимые бабки в нашей глуши, зарплата инженера тогда была 12-15тыр). Сейчас я программирую однокристаллки, на этом живу. Работаю в месяц дня два, хватает на жизнь. При этом я далеко не крутой спец, все мои проги под кристаллки не сложней чем датчики опросить, лампочкой помигать, да байтик по RS232 отправить.
Да я не напишу какой нибудь веб проект или не подниму прикладную софтину, зато мне под силу оживить станок с ЧПУ или разработать систему автоматики на заказ. И специалистов моего уровня (а он очень не высок) в моем городе от силы человек два три.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.