Язык, Для чего, С чем.
Сперва мини история =)
С недавнего времени занялся изучение программированием, так как это будет в будущем моей профессией. Ну как вы знаете в учебных заведениях нифига не учат и берут только деньги, и студенты ( скажем большая часть ) говорю это, так как я сам на данный момент студент - сидят и играют всякие игры, просто тупое убивание времени. Я этого не понимал, но в скорее я осознал что я "дурак" что тоже сидел, играл игры и т.д. не занимаясь ничём полезным, не думал про будущее.
Скажем так : всё что происходит с человеком - виноват он сам.
Вот я "забыл" на эти игры, начал учится по своей буд. специальности. Сидел на форумах, искал в поисковых системах разную информацию, читал книги.
Я много раз замечал, что на форумах создают темы где спрашивают с чего начать, и почти на всех форумах одинаковые ответы, например ( учи С++ / С# или там Delphi а еще : учи то что тебе нравится ) ну а я подумал, как можно что то изучать, если не знаешь для чего и под что его можно использовать.
Вопрос :
Вот тут я хотел задать вопрос или даже несколько : какой язык и для чего используют, какие направления есть ( там для написание программ, для создание сайта и т.д. ) хотел бы узнать КЛАССИФИКАЦИЮ, НАПРАВЛЕНИЙ чтоб определиться какой язык выбрать ...
Заранее прошу прощение :
- русский у меня хромает - понемногу изучаю.
- если неверно сформулирован вопрос ( от него зависит ответ который я хочу получить, но надеюсь вы поймете что я хочу =) )
- если подобная тема была создана ( типа мне было лень искать, если я даже нашел, ответа того что я хотел - не увидел )
буду очень благодарен, если кто то уделит мне 5-10 мин. своего времени
для написание ответа.
П.С.
- в ходе написания ответа прошу не переходит на личное, типа "купи букварь" и т.д.
- если не знаешь ответ - проходи мимо, глупости не пиши.
На первых двух страницах ему советовали доступно как могли. После этого ему надо было уже идти читать книжки. И книжки (одну точно) ему советовали. Ещё посоветовать? Могу. Да и полно советов по книгам в разделах, в том же "Общие вопросы программирования".
Хорошо. Покажи пример правильного ответа.
Позиция афтора стала ясна после его ответа: Я ничего не понимаю кроме PHP, поэтому хочу учить PHP. Почему вы мне не посоветовали PHP. Я создал эту тему с хитрым умыслом, что бы мне советовали осваивать PHP. Одному мне сцыкотно хотеть изучать PHP. Кто нибудь - посоветуйте мне изучать PHP, мне так одиноко!
Вообще, подобные вопросы возникают у многих. И, если честно, уже стало напрягать объяснять одно и тоже.
Что мешает учиться у hardcase или у Green или ещё у кого-то? Что мешает учиться, пытаясь давать ответы другим новичкам, как это делали (делают) Kogrom, kooder, Енот_в_Засаде, cronya и т.д?
Лень? Ну хорошо, иди устраивайся работать "бесплатно" в контору, где применяют экстремальное программирование (XP). Говорят, что некоторые быстро растут при использовании такой системы.
Чуда ждешь? Ну жди.
Будем разрабатывать систему закачки в моск афтарам знаний программирования с помошью поливочного шланга и велосипедного насоса
У меня есть некоторые идеи по поводу такой системы. Но пока мне надо создать её прототип и опробовать его на себе. На это может уйти не менее года. Если пройдет удачно, то вернёмся к вопросу о проекте :)
Внимание, правильный ответ: "Не в языках счастье!". :)
Программисту важно не столько знать конкретные языки, сколько общие понятия (что называют computer science): алгоритмику, использование памяти и адресацию, модульность, ООП, декомпозицию, функциональное программирование, базы данных... Ну, и направления программирования, разумеется: системное, прикладное, скриптовое и т. п. В этом смысле самый правильный ответ дал kooder.
В другой теме уже писал, что для начала программирования важен результат в виде: "Работает!". Автором темы, похоже, этот этап уже пройден. Надо двигаться дальше.
"Простые" или "сложные" языки программирования изучают не просто так, а для получения знаний по одной из "наук", перечисленных выше. Скажем, для алгоритмики и модульности хорош Паскаль, память и адресацию проще познать в Си или даже ассемблере, ООП и декомпозицию -- гм, Java? Изучение синтаксиса конкретного языка -- это так, на закуску, если алгоритмика понятна.
Опять же, существуют два типа знаний: на память и на сообразительность. Цель обучения -- развить сообразительность, а запоминание названий функций и их аргументов -- домашее задание, API по-любому в справке описано. Умение пользоваться библиотекой, не заглядывая в справку -- одна из составляющих опыта.
Правильно, нечего мусолить. Можно молчать. Опять же, Рунет чище будет.
Вот и предлагаю сделать прикреплённую тему. Писать в ней мало, зато по делу.
Вот это и надо было написать в первом же ответе. Прекрасно вписывается в понятие "методы обучения и самообучения". Тебе это очевидно? Прекрасно. Старшекласснику может и нет. Профориентацию развалили ведь.
Можно, конечно, сделать вид, что, мол, задал вопрос про язык -- получи ответ точно на заданный вопрос, игнорируя, что перед тобой новичок. Это и есть троллинг. Раньше на форумах было как-то больше конструктивности.
Чтобы начать делиться опытом, достаточно вспомнить, как сам учился. Тогда и мысли будут соответствующие. Всегда стараюсь поставить себя на место новичка и сравнить с тем, что думал в его возрасте. Думал о том же? Помогать. Нет? Советовать выбрать другую профессию.
Как-то так.
Потом я спрашивал, как в текстовый файл записывать нужные мне данные. Кто-то заикнулся о базах данных. Так в мою жизнь вошел Access и ADO компоненты доступа к данным.
Из своего невеликого опыта я все равно осмелюсь заявить, что автор научится, если есть желание. Не знаю, чему он научится, но научится. Если будет читать и слушать, что ему говорят, о чем и писали выше Когром и Иктомы. А в этой теме конкретных ответов было немало. И об областях, и конкретные языки. Все.
Если автору мало, то пусть едет в Минск, там УК Иктомы ему шлангом и сварочным аппаратом мозги поправит. :)
Уважаемый, может ты на форум учить пришёл, а я пришёл учиться. Некоторым кажется, что я спорю с другими от нечего делать, а на самом деле я учусь. Почитай эту тему внимательно и увидишь, как я выпытываю у форумчан знания. Прикол то в том, что я не могу угадать, что они выдадут. При том пытаюсь учиться и у того, у кого больше знаний и у того, у кого меньше. Вот пример:
http://forum.codenet.ru/showthread.php?t=64842
тут я пытался у hivewarrior-а чему-то научиться. В результате, вроде бы разобрал некоторые вещи.
Можно сказать, что мы тут наоффтопили, что не угодили автору темы. А можно сказать, что пытались рассмотреть тему не только на уровне начинающего. Я думаю, что второе важнее.
И с этим можно поспорить. Обратимся к этой теме:
http://forum.codenet.ru/showthread.php?t=64726
Мне видится, что это весьма познавательная тема.
Вопрос: почему эта тема была создана в "Общалке"? Что это за симптом?
Ну вот. А теперь представь, если бы Оля написала: "Это невозможно, программа может работать только при включённом компе." Или, хуже того: "Ха-ха-ха, посмотрите на него, простых вещей не знает. В Гугл!". А потом особо активные личности устроили бы флуд, что лучше: GetTickCount, QueryPerformanceCounter или RDTSC? Сильно бы помогло?
И? Кто-то заикнулся ведь! Помогали, то есть. А вы дедовщину устраиваете.
Вопрос: почему эта тема была создана в "Общалке"? Что это за симптом?
Симптом легко угадываемый. Раз тема вышла плодотворной, и перенесли бы, что тут такого? Опять же, куда смотрят модераторы?
Почему она вышла плодотворной? Не потому ли, что люди свободно говорили то, что думают, не боясь, что придёт модератор, скажет, что "Раньше на форумах было как-то больше конструктивности" и всё поудаляет?
Переносить не надо - в других разделах её могут попортить.
1) Сам был менее опытный и знал меньше. Казалось что тут много великих гуру. Это было когда я в области С++ еще копался. Теперь ушел в Java / Oracle, и так мне уже не кажется.
2) Раньше мне просто нравилось похоливать, доказать кому-то правоту, блеснуть словцом, показать себя. Теперь не тянет :) Постарел, ага.
3) Раньше были технические холивары с Грином, Питбулем, Мерлином, Никоном и еще кем-то. Жгли. Теперь если холивар, так обычно политический.
Как-то так.
Автору же посоветую просто брать и решать какие-то практические задачи. По себе знаю: способ жестокий, но работающий. Не в языке счастье, хотя я бы тоже посоветовал для начала что-то универсальное, вроде тех же C#, Java, ну или VB.NET, который суть тот же C#, только другими словами. Для этого есть много хорошего бесплатного софта, очень много литературы, и, главное, вы очень быстро сможете делать что-то практическое. Читайте книги, перечисленные в этой теме. Находите задачи и решайте их, благо задач дофига. Нет нужды учиться программировать на чём-то, лучше и правильнее учиться программировать вообще, и вы сможете программировать на всём.
Кстати, акроним УКи ЖУТКО БЕСИТ. ХОЧЕТСЯ ВЗЯТЬ И ...
Мне он напоминает не пойму, то ли совковое "товарищи", то ли ЗКи... Реально глаз режет.
Мне он напоминает не пойму, то ли совковое "товарищи", то ли ЗКи... Реально глаз режет.
А чо он к стати обозначает? (извините что не в тему)
Это фирменный троллинг Иктомы. ) Означает либо Уважаемый Камрад, либо Унылый Камрад. Кем себя считаешь - так и понимай. А что имел ввиду высказывавшийся останется тайной.
:D
Я бы лучше не смог сказать. Тоже так думаю.
Ничего личного, просто интересно.
Ну а что до дедовщины, тут, каюсь, погорячился. Это не дедовщина, а метание бисера перед новичками. По-моему, тоже моветон: лучше уж таки меряться умами в отдельной теме.
Ничего личного, просто интересно.
"Старички" реже создают такие "философские темы". Но я как-то создавал тему про циклы, Оксотник про шаблоны и т.д.
Да и вообще, флудильня флудильне рознь. Одно дело - говорить о философии программирования, другое - рассуждать про то, что раньше было лучше и какие все вокруг тролли.
Ну а что до дедовщины, тут, каюсь, погорячился. Это не дедовщина, а метание бисера перед новичками. По-моему, тоже моветон: лучше уж таки меряться умами в отдельной теме.
Периодически создаю флудильни, но почему то коммерческо-тролльским успехом они не пользуются.
Может про баб... женщин, т.е. поговорим?
Я тут говорил в основном с этими участниками: hardcase, koodeer, Zorkus, Iktomy, а не с автором. Кто из них новичок?
Что касается отдельной темы... Не совсем ясно, зачем создавать параллельную тему. Думаю, что лучше и удобнее вести одну. И наверняка автор может отсеить то, что понимает.
Ничего личного, просто интересно.
Думаю, причина этого проста. На простой, а точнее, философский вопрос начинающего ответ может дать:
1. практически каждый,
2. точный ответ не может дать никто.
Из-за первого пункта набирается много участников. В итоге - флудильня.
Из-за второго пункта набирается много разных мнений, зачастую противоречивых. В итоге тему можно счесть тролльской. Может даже до скандала дойти (такое не раз бывало).
Означенные товарищи вместе появились только ближе к концу темы,так что пара-тройка страниц–это,право,не флудильня:)
Если бы ты потрудился прочитать тему, то заметил бы, что там камрады обсуждали "Язык, Для чего, С чем", а сейчас идет флуд, имеющий отношение к топику равно такое же, какое имею к балету я. И начался он с поста Фримана, а поддержан был постами Сани.
По поводу бисера. Это не метание. Или сейчас любой, кто делится знаниями с новичками - мечет бисер? Стало модно быть нубом? Как муж дипломированного психолога, могу сказать, что тренд последних лет разговаривать с ребенком на нормальном языке, а не сюсюкать. Это помогает детям взрослеть и формировать личность.
УК Жорж, предлагаю создать прикрепленный тред "Изба-флудильня". Причом тред должен быть закрытый. Для входа нужно пройти обязательную фаллометрию и внести оплату за ведро бисера для метания.
По поводу предложения УК Фримана о прикрепленной теме: Смысла нет. 99% новичков считают свой вопрос уникальным, это же количество не то что поиском не пользуется, им в прилепленые темы залезть лень. Модератору темы придется применять репрессии, что отпугнет новых фтыкателей от форума. И самое главное - все мы тут умные, трезвомыслящие люди. И наше мненеие с течением времени, под воздействием факторов, меняется. Сегодня советуешь одно, а завтра оно уже не актуально. Слова "ЯП - это всего лишь инструмент" многим новичкам непонятны.
В свете этого понятным становится даже обсуждение особенностей Haskell в теме, начатой чуваком, жаждущим определиться, стоит ли ему учить похапе. Любая тема должна с чего-то начинаться, и продолжить флуд гораздо проще, чем начать. Поэтому так часто получается, что самый пустяковый вопрос может превратиться в былинную дискуссию.
Новички, которые создают заезженную тему, обычно еще зелены и молоды, а пороху в их пороховницах хоть отбавляй. Многим из них хочется получить результат прямо сейчас, мгновенно, но не у многих это выходит. Как говорится, руки чешутся, а обо что почесать они не знают.
Согласитесь, если ты на радостях или горестях, русчувствовавшись, (а обычно именно такими форум встречает новичков, у которых так и останется не больше 20 сообщений) заходишь на форум, на котором не хочешь оставаться долше семестра, то соблюдение банальных правил не входит в область твоих интересов. Вот они и соблюдаются весьма выборочно. Да и еще гормональное и психологическое состояние помогает делать много интересного, например, считать свою тему уникальной. "Да как, чтобы до этого дошел кто-то еще? И мне читать стену текста? Нет, лучше спросить снова". Им не в домек в виду объективных причин, что ответом будет та же стена текста, либо ссылки на первую стену. Потом энтузиазм пропадает и люди, оставив 20 сообщений, покидают форум навсегда. Печально, но правда.
Почему "деды" разводят флудильню? Это уже интереснее, ведь не всегда из вопроса "как начать" получается то, что мы имеем. Скорее, из-за скуки, по крайней мере, я придерживаюсь этой точки зрения. Да и сам порой готов от нечего делать вступить в полемику с кем угодно, чтобы банально убить время. Да и флудильня флудильне рознь, как кто-то отмечал в этой теме. Данная мне кажется вполне продуктивной, с интересом зачитывался и рука прямо не подымалась вмешаться. Почаще бы такое...
Программисту важно не столько знать конкретные языки, сколько общие понятия (что называют computer science): алгоритмику, использование памяти и адресацию, модульность, ООП, декомпозицию, функциональное программирование, базы данных... Ну, и направления программирования, разумеется: системное, прикладное, скриптовое и т. п.
У меня тут 2 соображения.
Первое.
"Общие понятия" - это конечно хорошо, но без практики они плохо усваиваются. И тут всё же встаёт вопрос выбора.
Если рассуждать совсем уж теоретически, то с одной стороны да, надо ознакомиться с ассемблером и си (который без плюсов), а с другой стороны... С другой стороны надо уж быть честным и изучать языки, в которых зародились, названные многими тут, парадигмы: это Lisp и SmallTalk (или Simula даже), например.
К сожалению, меня, например, смущают современные реализации этих языков, их примитивность либо недоступность. Поэтому можно выбирать некие гибриды, но это несколько затуманивает понимание некоторых парадигм, а отсюда следуют споры.
Второе, частично следующее из первого.
Говорят, Дейкстра утверждал, что программисты, начавшие изучение программирование с Бейсика - навсегда испорчены. Тут некоторые что-то подобное говорят про PHP. Поэтому меня удивляет, что нет объявлений типа: "Требуется опытный программист на SmallTalk или Lisp, чтобы клепать сайты на PHP". Раз уж важен не язык, а общие понятия, то почему бы и нет? :)
1) Я заметил, что популярно рассматривать ЯП как какие-то знания, которые необходимые для написания скриптов/программ/чего-то еще. ЯП - всего лишь средство. Что же тогда является знанием? Это знания "как правильно составить алгоритм". Дейкстра, собственно, любил ругать испорченных бейсиком за неумение составлять вменяемы алгоритмы. Вместо этого эти гиблые люди молились идолу GOTO, что и вызывало праведный гнев.
Итог? Знание отделного ЯП почти никак не отражается на умении программировать в общем и целом. Только знания в алгоритмистике могут помочь. А как они складываются у большинства новичков? Именно путем осваивания какого-либо ЯП. И этот первый язык накладывает отпечаток на все остальное, что делает этот человек. Но если человек учит не язык, а учится составлять алгоритмы на этом языке, то все складывается иначе. Не зря же рисуют блок-схему или подобное в начале проекта, да и меня в свое время учили сначала составить алгоритм, а потом реализовывать его частный случай на ЯП.
2) Про вакансии. Их частенько составляют люди далекие от IT-сферы в целом, и от программирования в частности. Многие из них свято верят, что программист должен уметь и принтер починить, и лампочку вкрутить. Поэтому если они где-то слышали, что сайты пишут на ПхП, то они и будут требовать его знание.
Опытный программист на Лиспе, может за вечер прочитать первую главу про пхп и его особенности в любой книге, и пройти собеседование без особых проблем. С другой стороны, программисту на Лиспе не выгодно в резюме размещать информацию о том, что он знает Лисп, если хочет попасть на работу (кроме как дополнительной информации).
Проблема снова таки в Брендах. Лисп и Смалталк не узнаваемый бренд, в то время как ПхП популерный и у всех на слуху.
Вроде бы Freeman это всё объяснил, причём более подробно. Что нового у тебя?
Вот тебе пример:
http://forum.codenet.ru/showthread.php?t=63091
Это объявление разместил уважаемый тут программист, хороший специалист по C++. Ну да, что-то про Python он упомянул, но лишь как дополнительный плюс.
И я не пока не склонен утверждать, что он составил ошибочное объявление.
Если ты про
то новое есть. Примерно 2й абзац, например.
В остальных двух постах ничего схожего с моим постом не нашлось. Или думаешь иначе?
Вот тебе пример:
http://forum.codenet.ru/showthread.php?t=63091
Это объявление разместил уважаемый тут программист, хороший специалист по C++. Ну да, что-то про Python он упомянул, но лишь как дополнительный плюс.
И я не пока не склонен утверждать, что он составил ошибочное объявление.
Еще можно добавить то, что работодатель заинтересован в получении прибыли как можно скорее. Ты будешь тратить время на переобучение нового персонала? Я бы не стал. Лучше найти человека, который на 100% соответствует заявленному.
Но никто не гарантирует, что человек, который откликнется на объявление, не будет знать только Лисп, а во время подготовки документов на оформление/до собеседования, не перейдет на ПхП5.
Да, он не будет знать многих нюансов, собственно ради этого и пишут графу "опыт работы", чтобы знать, сколько нюансов человек успел освоить при работе с данным ЯП. Нэ?
Понимаешь, ты много говоришь об алгоритмике, а меня она волнует тогда, когда надо что-то оптимизировать. Это случается не часто. Есть более интересные понятия, о которых говорили выше. Например, повторно используемый код. Как писать программы так, чтобы легко можно было их куски использовать в других программах? Это довольно интересная наука, которую я ещё не совсем постиг. И более важная наука, для тех, кто время бережёт.
Если рассуждать теоретически, то стал бы обучать, если мне он нужен на постоянную работу. Но не переобучать, а именно обучать некоторым навыкам, требуемым на конкретном производстве. Для одноразовых поделок это дорого, да.
Есть основы алгоритмики. При выборе правильного языка, закладывается правильная основа. Без умения составлять простенькие алгоритмы, сложно что-то оптимизировать. Сначала же основы информатики изучают, а не кидаются на программирование операционных систем или администрирование сетей.
Да, есть интересные понятия, я не говорил о том, что все написанное выше - бред. Я наоборот очень радовался, когда читал это. Смысл в том, что умение программировать почти всегда сводится к умению составлять правильный алгоритм, а потом лишь только его реализацию на каком-либо языке.
Возьмем, например, тебя. Ты знаешь JS? Ты мне сейчас скорее всего ответишь нет. Если ответишь да, то возьми любой другой язык, который не знаешь;)
А теперь открой какой-нибудь код на JS. Тебе же понятен общий смысл того, что там происходит? А все потому, что ты видишь суть алгоритма за ширмой реализации на ЯП.
Таким образом, я хотел сказать, что начинать стоит только со столпов мира программирования, которые способны решать большое количество задач, а не заточены под какую-либо. Я полностью поддерживаю тех, кто советовал С# и Java. Эти языки помогут сложить правильное понимание о происходящем в компьютере, о процессоре, о памяти и т.д.
Если рассуждать теоретически, то стал бы обучать, если мне он нужен на постоянную работу. Но не переобучать, а именно обучать некоторым навыкам, требуемым на конкретном производстве. Для одноразовых поделок это дорого, да.
А я бы не стал. Исключение, если простой проекта слишком дорог, а людей нужных нет, да нет. Но если этот же человек за неделю сам освоит базис того же пхп, то на собеседовании я бы пригляделся к нему в плотную и, конечно, взял. Даже если основные его познания и в Лиспе.
Фишка в чем? Фишка в том, что мне нужен код на пхп. Если человек знает Лисп, то не факт, что он обучаем и сможет освоить пхп. Но если человек знает лисп и в довесок основы пхп (так как мне все же нужен код на пхп), то его вполне можно и взять. Если бы я был уверен, что лисп-программист может реализовать то же, что и программист на пхп за то же время, и если бы это не мешало остальным участникам проекта, то я бы крепко задумался о переходе на лисп. Особенно, при отсутствии программистов на пхп.
Проблема лишь в бренде и потребности в этом бренде. В пхп потребности больше, чем в лиспе, вот и пишут его.
Это не так. Я же тебе говорю, обычно алгоритм - это несущественная мелочь. Но ты веришь в другую догму. В принципе, кодеры и должны верить в эту другую.
Основы JS знаю. Другой язык? Ну те же Lisp и SmallTalk, например. Никакой мне общий смысл в них не понятен.
Это ты хорошо сказал, это зачёт.
Ты скорее всего упускаешь момент, когда думаешь про алгоритм. Понаблюдай, может, все же думаешь;)
Основы JS знаю. Другой язык? Ну те же Lisp и SmallTalk, например. Никакой мне общий смысл в них не понятен.
(if (or (= n 0) (= n 1))
1
(+ (func1(- n 1)) (func1(- n 2)))))
Один из примеров функции на лиспе, скачан из загнивающей. Разве тебе не понятно, что там происходит? Прошелся разок, как машина по коду, и весь алгоритм как на ладони.
Это ты хорошо сказал, это зачёт.
А чем бес не шутит? Бывает всякое в нашей жизни. Иногда и люди, освоившие Лисп, крепко едут головой и в каждой книжке, даже по русскому языку видят лисп. Человек тонкий инструмент, на нем еще уметь надо играть.
(if (or (= n 0) (= n 1))
1
(+ (func1(- n 1)) (func1(- n 2)))))
Один из примеров функции на лиспе
Не, этот хелловордный пример не в счёт. Ты мне что-нибудь с замыканиями и лямбдами приведи, или лучше реализацию паттерн-матчинга на макросах.