Здравствуйте Гуру программирования, загляните в тему=)
Я серьезно - был бы образец из которого можно таскать примеры - и язык не важен.......
Сперва нужно осваивать простые языки типа Basic или Pascal, чтобы понять суть вопроса, а дальше на чем писать - это все равно.....
Базы данных тоже неплохо бы освоить чтобы не придумывать велосипед для простых задач...
Ну, не настоящий, а мифический.
Слишком упрощаете. Примеры, конечно, вещь необходимая, но не достаточная. Делать аппликации из примеров допустимо лишь при создании прототипов программ, к качеству которых не предъявляется особых требований. Иначе надо вдумчиво читать документацию. Такое моё скромное мнение.
Некий товарищ Дейкстра оч. не рекомендует изучать Basic, как первый язык.
Главное не начинать с языков, типа JavaScript и пхпэшечка, иначе это конец пути и полный тупик.
Это точно, в ряде языков встречаются достаточно дикие индивидуальные конструкции, кроме того есть еще LISP, понять который досконально зная бейсик или ту же яву невозможно.
Ну чтобы вдумчиво читать документацию - надо иметь опыт, чтобы знать о чем думать, а то ведь филолог читая документацию будет думать о том, "какие они все безграмотные - эти программисты".
Критериев качества имеющий четкие метрики не так уж и много. Возьмем например читаемость кода (ремонтопригодность)... - чистая абстракция. Но в целом это очевидно - доверять ПО с высокими требованиями к надежности или быстродействию новичку все равно ни кто не будет....
Главное не начинать с языков, типа JavaScript и пхпэшечка, иначе это конец пути и полный тупик.
Очень спорно, что для начинающего Java лучше, чем JavaScript. Java обладает слишком избыточным синтаксисом, в ней слишком много "обёрточной бумаги", которая теоретически может быть оправдана при работе в команде.
JavaScript же хорош тем, что начинающему практически нужен только браузер, чтобы начать работать со скриптами. Самый "ленивый" старт.
Для неопытного лучше начинать с учебника, в котором объяснено что и как, и почему.
При использовании "аппликаций" будет много проблем. Как правильно "склеить" примеры, зная минимум об используемом языке? Как оптимизировать код примера, если потребуется? Или даже не оптимизировать, а изменить?
Без чтения учебников, документации и т.д. из примеров мы получим криво склеенную, тормозную и не гибкую программу. Возможно, если использовать хорошие фреймворки, то только тормозную и не гибкую.
JavaScript же хорош тем, что начинающему практически нужен только браузер, чтобы начать работать со скриптами. Самый "ленивый" старт.
Это естественно, такие языки как php и js имеют достаточно низкий порог вхождения, потому мы по сей день и видим столько ужасных поделок на них и "мега-php-кодеров", коих развелось на каждом углу.
Я просто подхожу к вопросу со стороны знаний. Я считаю, что сев за яву, пусть и нагроможденную кучей оберток, голова быстрее поймет что к чему и знания появятся более сложным, но более верным путём.
Я, сам просидев 6 лет на веб-программировании, понял, насколько тупиковые эти языки в плане саморазвития человека. Можно научится составлять какие-то алгоритмы, писать команды и делать кучу прочей работы, но не больше. Только когда я перелез на нормальный язык - я наконец стал действительно разбираться во всех тонкостях, начал понимать как правильно организовывать взаимодействие, строить грамотную архитектуру и прочее. После изучения нормального языка тот же JS и PHP дадутся человеку за пару дней, а вот слезть веб-прогеру на Java, C# и подобные популярные будет очень сложно.
Ну и, ява не так плоха, я же не советую человеку начинать с ассемблера, лиспа, немерле и прочих ужастей :))
Про PHP не знаю. Никогда на нём не программировал.
Но программируя на JS можно ознакомиться с некоторыми азами: с циклами, переменными и т.д. Затем уже и на более "трудные" языки можно переходить. Образно говоря, вначале гантели, затем штанга. Понятно, что штангист легко поднимет гантелю, но начинают обычно с малого.
Хотя лучше вначале Python, а затем Python %)
Лиспы не сложные, они просто кажутся сложными после обычных ЯП. На самом деле они просты, как пять копеек(в плане вхождения в синтаксис). А вот Haskell и ко - это да, порог вхождения высок(одна из серьёзных проблем - перегруженность синтаксиса).
п.с. согласен с Когромом, сейчас лучше начинать с python.
А я серьезно спорт начал как раз со штанги))
Ну, так-то да, я не спорю. Тут дело в парадигме больше. Если всю жизнь сидишь и мыслишь ООП, то функциональная парадигма поначалу кажется вырвиглазной, но после определённых разбирательств видны все преимущества такого подхода. С другой стороны, просто новичкам легче понять императивную парадигму (или она просто уже дефолтом навязывается, потому я считаю её более простой).
PS: Реальные пацаны пишут на APL'е и начинают с него же.
Кстати, не могу вспомнить чисто "императивных" языков, кроме ассемблера. То есть, чтобы были только процедуры, но не функции, которые могут вернуть значение. Да и запись "a = b + c" уже не совсем императивна. Надо что-то типа : a += c; a += b; ...
Ну да ладно, это уже совсем оффтоп.
Вброс, который не провоцирует перехода на личности и матерной брани за вброс не считается :)
Имхо, лиспы, по большей части, императивны до немогу. Функциональщина это к Haskell и ML как раз.
Императивность это способ организации вычисления, при котором мы выполняем явное изменение состояния. Так что твое выражение бессмыленно.
Понятие "функции" элементарно сводится к понятию процедуры, впрочим обратное также верно (но не очевидно).
Существуют ассемблеры где a += c можно выразить лишь цепочкой инструкций (в MSIL это будет 4 инструкции). А также есть и такие, где a = b + c будет одной.
Тоже самое (про императивность) можно сказать и про ML. ;)
Ну и? Ты утверждаешь что на C или C++, например, нельзя написать код, в котором не будет явного изменения состояния?
Ты переводишь в плоскость реализации. А по смыслу, функция может влиять на программу не изменяя объекты, а создавая их. При том, созданные объекты могут быть неизменяемыми. Процедура на такое не способна.
В результате на функциях можно сделать код, который явно не меняет состояние, а на процедурах - нет.
MSIL - это не ассемблер, а язык, синтаксис которого похож на ассемблер. Но я не утверждаю, что нет исключений. У меня речь была про то, что a = b + c может не изменять состояния программы, ибо все 3 объекта могут быть неизменяемыми (даже в том же C++).
Но программируя на JS можно ознакомиться с некоторыми азами: с циклами, переменными и т.д. Затем уже и на более "трудные" языки можно переходить. Образно говоря, вначале гантели, затем штанга. Понятно, что штангист легко поднимет гантелю, но начинают обычно с малого.
Хотя лучше вначале Python, а затем Python %)
А вот объясните мне, надалёкому: какая разница с какого языка начинать программировать? В смысле, учиться программировать одно через другое?
Почему мне в детстве никто не предлагал начать говорить с какого-нибудь бурятского? Почему в автошколе мне не предлагали начать с экскаватора? Почему мне никто не сказал, что занятия тяжёлой атлетикой лучше предварять работой грузчиком?
Ну, наверно потому, что PHP и JS сравнимы с машиной-картингом, в то время как автомобиль попахивает Паскалем и Бэйсиком. А вот экскаватор - это уже что-то из разряда специфичных языков.
Научится можно на всём. Картинг быстрый, простой и понятный, но понять устройство автомобиля и принципов работы по нему будет узнать довольно сложно. Автомобиль как база. А вот чтобы обслуживать и работать на экскаваторе - тут надо и базу знать в целом, и специфичность понимать.
Я всегда говорил, что Der Meister - гений. Так что не надо про недалёкого.
Была тут похожая тема. Говорили про то, что язык должен зацепить, позволить быстро почувствовать обратную связь. Это дают скриптовые языки, типа Python. На Java же придётся набрать здоровую портянку для хелловорлда.
Вот, например, зачем новичку до запуска первой программы вникать во все эти модификаторы доступа, исключения, да и вообще в ООП? Это для него - ненужный мусор. И он не станет вникать, и какое-то время для него это останется заклинанием, запускающим программу. Мне такое не нравится.
Я не думаю, что сравнения удачны.
В них суть. Цель какая у студента? Выучить какое-то сферическое программирование в сильно разреженном газе? Или язык выучить?
А то это самое абстрактное "программирование" сродни "вождению", "речи" и "физкультуре" - это может быть всё что угодно, от форта до рефала, какой в нём смысл? А если нужно выучить один язык, зачем начинать с другого?
На практике с "заклинаниями" вроде всё в порядке: студент делает как сказали и желание вникать у него появляется уже позже, когда он более-менее освоится, так что он обычно и не парится.
По-моему, у авторов подобных вопросов на форуме именно такое желание. Пытаются внушить себе, что им это интересно. С нашей помощью, естественно. Поэтому задача опытного программиста в этом случае -- помочь человеку побыстрее разочароваться в этой нудятине. Кто не разочаровался -- программист.
Нет, не надо говорить "один язык", надо говорить - Java. Некоторые языки просто не подходят для того чтобы быть первыми. Например, разработчики D честно говорят:
Но я думаю, что с Java они погорячились.
Да он и дальше не парится во многих случаях. Зачем вникать, если "заклинания" работают?
В общем, я предпочитаю понимать свой код. Кого устраивает другое - дерзайте.
Не совсем, но почти. Скорее потому, что синтаксис языков типа Java заточен на написание крупных программ. Новичок же начинает с мелких, поэтому ему будет менее мучительно использовать язык, заточенный на создание маленьких программ.
С другой стороны, если есть какой-то хороший стимул, типа обещания устройства на конкретную хорошую работу, то найдётся энергия перепрыгнуть ступеньку.
Бери из Герберта Шилдта что понравится. Я начинал с такой книжонки:
http://www.ozon.ru/context/detail/id/1498452/
Шилдт - товарищ простой, без научных "матов". Для новичков пойдёт. Но для нормального понимания потом надо будет ещё Страуструпа, Саттера и т.д читать. Вот тут у нас список есть:
http://forum.codenet.ru/threads/50085-Книги-которые-стоит-прочитать
Чем тебе Java не угодила? Не осилил что ли? trollface.jpg
В теме я привожу аргументы против того, что она должна быть первым языком. Лично же мне не нравится синтаксис. Зачем писать так:
List<String> myList = new List<String>();
если можно как-то так, например:
def myList = List();
Переняли без всякой надобности дефекты синтаксиса C++. Но в последнем такой синтаксис исторически сложился, да и new там имеет смысл.
- веб
- прикладное
- системное
- администрирование
Там ещё пилить, пилить и пилить, причём я говорю не об языке, а о таких вещах как документация(ссылки из wiki на код в svn изобилующий закоменченными секциями и TODO выглядят странновато), IDE(что-то кроме подсветки синтаксиса уже появилось?) и учебные материалы(быстрая пробежка по гуглу дала только 1 книгу на английском языке за $85, дата публикации - 2010 год).
Ну так мой пример и взят из статьи про Немерле в Википедии. Один в один, даже с сохранением имени переменной.
Эх, была небольшая вероятность, что hardcase по невнимательности начнёт доказывать, что Java лучше Nemerle, но ты всё испортил :)
List<String> myList = new List<String>();
Кстати, в новом стандарте Java они слегка уменьшили дублирование кода (dimond-нотация):