Russian Qt Forum
Ноябрь 23, 2024, 14:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3 4   Вниз
  Печать  
Автор Тема: C++ || C# || Python  (Прочитано 26162 раз)
Lagovas
Гость
« : Август 07, 2011, 03:41 »

Сразу оговорюсь, тема не для холиваров.
В общем я сейчас учусь в техническом университете, хочу стать в будущем программистом. Понравилось еще в школе, когда учили паскаль, т.е. стать им решил серьезно. В универе познакомился с прологом, с++, с# и питоном, и все это за один год. Каждый язык чем то интересен, но все же хочется как можно быстрее определится, с которым связаться серьезнее. Очень хочется решить для себя в каком направлении лучше плыть, что бы не прогадать, ну и конечно же составить собственное мнение. Конечная цель, это нормально зарабатывать программированием.
Так вот, хочу помочь в выборе. Тема не для холиваров. Прошу лишь высказать каждого свое мнение, лучше основанного на фактах, личных историях и тому подобного, по поводу данных языков. Интересно узнать какой для чего сейчас используется, приблизительное мнение о его будущем, применимости и развитии.
Сам лично пробовал их немного, пол года где то. Учили мы Visual C++ и C#, сам начал пробовать чистый С++ как месяц. Питон тоже пол года.

Теперь расскажу что я о них думаю. С++, только что читал по поводу переизбыточности этого языка, и частично согласен. Все же что бы на нем нормально программировать, нужно очень и очень много знать о языке, и не только. Сам язык настолько обширен, что его сложно изучать, слишком много нюансов. Так же, выучить язык недостаточно для написания программ. Желательно еще ознакомится с наиболее часто используемыми библиотеками. Честно говоря пробовал почитать исходники буста, я понял что это мраки, и что бы там чет понять, нужно пол года заниматься одними плюсами. В то же время поюзав Кьюте, стало легче на душе, не все так страшно, как казалось. Легко, и непринужденно.
В общем мое мнение о плюсах:
+Они производительны
+Позволяют многое контролировать
+Имеют набор интересных библиотек

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

Теперь о шарпе. По началу, когда начинали на нем писать, проскакивала мысль, что нельзя явно освободить ресурс. Да, есть там delete, но когда его юзаешь и пробуешь получить значение переменной, оно его тебе нормально дает. Да, есть GC->Collect(), но блин, если каждый раз его писать на каждом освобождении, не будет ли это сильно тормозить систему, какой бы не была крутой эта GC.
Хотя пишется на шарпе проще. Для меня это "проще" было тем, что тут для меня не было такой разности между указателем, ссылкой и обычной переменной. Тут практически все ссылка, и передается все по ней (кроме value типов). Т.е. не нужно парить себе мозг вариантами как передать переменную, юзать умный указатель и т.п. Еще Шарп нравился своей .Net библиотекой, которая более менее хорошо документирована, много что есть из коробки, так сказать. Хотя большое влияние сделала Студия с Visual Assist, они еще ускоряли работу. В С++ не чувствовалась та простота использования стандартной библиотеки в повседневности, чем в шарпе. Конечно есть буст и куте. Буст для меня это нечто страшноватое кажется, на первый взгляд, а кьюте конечно же наоборот.
Так как шарп создавался Микрософтом, то конечно же заточено много под него изначально. А это значит что из коробки есть возможность писать сайты (для серваков IIS, хотя вроде можно и не только для них), работа с базами данных (MSSQL). Это две самые заметные возможности шарпа из коробки для меня. С базами есть удобнейшая LINQ, та и не только с базами. Очень легко начать работать с массивами данных начинающему программеру, не нужно искать левые библиотеки, вникать как работают, пробовать. Здесь ознакомился с синтаксисом и поехал. Да, это может и не наиболее оптимальный код будет, но это вначале. Сначала попробовал, а дальше уже когда освоил первую ступень, учишься оптимизировать, улучшать и т.п.
В общем мое краткое мнение о нем:
+Быстрая обучаемость
+Обширная библиотека из коробки
+Изначальная возможность писать под веб и работа с БД
+Меньше нужно колупатить книг и вникать в нюансы на стадии обучения (да, я слегка ленив)
+ ASP.Net для веба

-Меньшая производительность
-Меньший контроль над памятью

Теперь о питоне. Когда я с ним начал знакомится, у меня первое мнение было - как он мне раньше не попадался? Нахрена разные там С# и плюсы, когда есть питон. Да, где нужна скорость пишите на своих плюсах, остальное на питоне. Ведь это так легко, легко читаемо и так далее. Мы когда писали лабы на нем, у нас было по 40-60 заданий, т.к. на нем все легко делается. Программы редко были больше 10 строчек из-за обширной библиотеки и нестрогой типизированности. В одной строке с обьектом можно поработать как со строкой, потом как с числом и в конечном итоге вернуть как строку, ведь все преобразования можно влепить в одну строчку и все будет вполне читаемо. Та и вроде все можно делать на питоне. Это не какой то узкоспециализированный язык типа пролога, а на нем можно и гуи, и веб, и настольные приложения. И кроссплатформенно изначально. Мы когда лабы писали, соревновались у кого код короче был, но и что бы по скорости не уступал. Так же нравится питон своей документацией. Ее легко читать, понимать и сразу пробовать. Я когда пишу программу и требуется неизвестная библиотека, я открываю интерпретатор, смотрю документацию по нужному методу или классу, и тут же его тестирую, пробую, пока не разберусь. Все что для этого надо, это импортировать модуль и пробуй на здоровье. Не надо создавать проект(шарп)\текстовый файл(плюсы), писать разные int main, подключать длл, прописывать хедеры и т.п., только что бы опробовать один метод. Да, конечно, всегда существует созданный файл\проект для тестирования. Но хедеры и длл никто не отменял. Это не трудно, но все же менее привлекательно.
Мое мнение о питоне:
+Отличнейшая библиотека с коробки на все случаи жизни
+Читаемость кода
+Простота написания
+Легче начать писать на языке новичку
+Хороший фреймворк для веба
+Изначальная кроссплатформенность

-Медлительный

По поводу других языков. Java не предлагать, ибо считаю что он не лучше с++ в производительности, практически на ровне с#, и уж точне не лучше в плане легкости написания Питона. Точно так же не предлагать руби и перл. Питон с ним имхо на ровне. Кто то лучше, кто то хуже в чем то, но имхо разница незначительная.

В общем к чему все это. Просто слегка стремно потратить много времени на С++, и в конечном итоге никому не нужно будет, и мало где применятся будет. Все это из-за не знания как все происходит в реальных проектах, что нужно на самом деле в командах, что наиболее часто используется, где и как. В общем, прошу высказать мнение и помочь на стать на путь истинный.

П.С. Такой пост пойдет в Песочницу на хабру ради инвайта?)
« Последнее редактирование: Август 07, 2011, 03:55 от Lagovas » Записан
asvil
Гость
« Ответ #1 : Август 07, 2011, 09:52 »

Посмотрите, пожалуйста, на парадигмы программирования для начала: функциональную и императивную.
После посмотрите на три лагеря языков: чистофукциональные, императивные, мультипарадигменные.
Все императивщину вы уже познали судя по сообщению.
Тогда перейдите к функциональщине. Данная парадигма перспективна легким распараллеливанием и поддерживаемостью программ. И это еще не все плюсы.
Рекомендую начать с clojure и прочтении о функциональном программировании: Введение в функциональное программирование ML, sicp. Clojure - лисп работающий на jvm, имеющий: очень удобную интеграцию со java кодом, встроенные средства для конкурентности, макропрограммирование.
Продолжить на выбор: erlang, haskell.
Закончить common lisp-ом, языком на которым зародились многие рюшечки современных языков.

P.S. repl в пайтоне даже и не сравнится с emacs-slime-swank.
Записан
Lagovas
Гость
« Ответ #2 : Август 07, 2011, 10:19 »

столько слов новых, конечно слышал про хаскель и ерланг... но все же ново. Я кстати упоминал, что язык должен позволять найти работы хорошую, что то я когда просматривал вакансии (живу в Киеве, Украина), чет такого вроде не видел. Разве в реальных приложениях часто используются хаскель, ерланг и тому подобное? Так ли оно востребовано и в каких сферах?
Записан
asvil
Гость
« Ответ #3 : Август 07, 2011, 12:12 »

Если вы интересуетесь посмотрите пожалуйста в success stories любого из языков.
Функциональные языки слабо прижились в десктоп гуи, в вебе им проще.
В частности erlang очень и очень красивый язык для серверных приложений, чрезвычайнейшая параллелизация с межпроцессной коммуникацией.
Востребован любой язык, особенно тот в котором мало программистов.
Clojure можно применять везде где ява.

Что касается вакансий, то скорее всего в киеве вы найдете 1-10 erlang мест.
Записан
Lagovas
Гость
« Ответ #4 : Август 07, 2011, 12:20 »

и все же хотелось бы услышать и по поводу языков названных мною, все же не хочется все время бросаться с одного языка на другой. Хочется сейчас выбрать более менее оптимальный, начать работать с ним, потом уже пробовать другие при потребности.
Записан
asvil
Гость
« Ответ #5 : Август 07, 2011, 12:24 »

Из того что вы назвали без разницы что выбирать. Просто иногда вместо find надо будет писать search.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Август 07, 2011, 13:07 »

раз очень понравился питон, можно попробовать перл/руби
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Lagovas
Гость
« Ответ #7 : Август 07, 2011, 14:58 »

Дык вопрос то не в том, какой еще язык поучить, наоборот, хочется не языки учить, а выбрать какой то один и работать с ним. Смысл пробовать перл\руби, если пробовал питон? Большая разница в них? Не думаю, врядли чет полезное из этого будет. Я задал вопрос, т.к. не знаю во что углубляться, в С++, на которых пишут высокопроизводительные приложения, для которых нужно хорошо знать СТЛ, шаблоны, ооп, управление памятью и еще отдельные полезные либы, которые если не хорошо документированные, то пиши пропало, ибо исходники читать жесть.
Или выбрать шарп, который чаще в реальных приложениях выбирают, т.к. на нем быстрее и дешевле пишется ПО, на котором легко работать с БД и так далее, но все таки медленнее плюсов (хотя хз, часто ли тормознутость в реальности проявляется, то и хотелось бы узнать).
Либо питон, на котором уважающий себя программист пишет придерживаясь общепринятым правилам типа PEP 8, вследствие чего легко читать документацию, чужой код, писать свой и так далее. Но он еще тормознутей шарпа, и тут уже реально будет это проявляться даже в сравнении с шарпом, но важно ли это в большинстве случаях среднестатистической работе? Часто ли требуется программер пишущий высокопроизводительный код, или чаще всего пишут обычную гуишку, которая чет там делает с бд и так далее, но редко  требуется выборка из многомилионных записей, обработка и т.п.
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #8 : Август 07, 2011, 17:26 »


Мне кажется, что программирование больше делится не по языкам, а по задачам (прикладное, системное, веб, эмбед ...).
И изучать стоит не один язык, а сферу применения.
И английский язык.
Записан
Lagovas
Гость
« Ответ #9 : Август 07, 2011, 17:34 »

Я это понимаю, потому и спрашивал, где используются эти языки и сфера их приминения. Я лишь начинающий программер, и хз как все в реале как таково. Потому попросил здесь помощь расчехлить плюсы-минусы и сферы приминение, ведь это самое важное. Из того что я могу предположить, с++ юзается в встроенных систем, вместе с С, но не знаю как он в системном программировании. Тут может уже и шарп или питон подходит для большинства задач и с++ здесь избыточен. В вебе более менее представляю шарп и питон. У первого асп.нет, у второго разные фреймворки. У обоих все удобно и успешно. Лишь не знаю их долю приминения, все же наверное на шарпе больше пишут, чем на питоне, но это может быть из-за относительно малого срока развития веб-дева на питоне, около 5 лет вроде развивается. Ведь интернет начинает расти большими темпами, а раньше такого не было, потому более менее все на ровне, кто первые запрыгнет, того и лошадь. Интересно узнать про прикладное и системное программирование. Что здесь используется, на что обращается внимание, что востребовано.
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #10 : Август 07, 2011, 17:59 »

Внимательно пересмотри фильм.
И раз, ты уже здесь, то С++, Python, Haskell.
Записан
Lagovas
Гость
« Ответ #11 : Август 07, 2011, 18:30 »

К чему он? Там кажись была тема, типа никогда не поздно учиться или что то в этом духе?
Посмотрел, ясно что на этих языках можно писать гуи с помощью кьюте, но к чему это? Это лишь гуи, а я в общем? Или на что это был намек?
« Последнее редактирование: Август 07, 2011, 18:33 от Lagovas » Записан
twp
Гость
« Ответ #12 : Август 08, 2011, 21:08 »

Конечно нужно ориентироваться на рынок труда, а то можно изучить какой-нибудь экзотический язык, а потом долго искать работу  Улыбающийся Вот когда-то на моей прошлой работе пришел один парень, который показал свою программу с 3D-сценой и она была написана на ассемблере!!! Шокированный И в итоге его не взяли просто потому что его знания не были нужны. И не известно, как долго он потом искал работу и нашел ли. В нашем городе вообще сложно найти работу  программистом, а с ассемблером и подавно. И вот у него спрашивали,  зачем ты изучал ассемблер? Ну он и ответил, что где-то прочитал, что ассемблер это очень круто! Да, ассемблер знать очень полезно, но на нем одном далеко не уедешь, тем более в наши дни. Так что желательно изначально правильно выбрать язык (точнее языки). Я бы советовал изучить один компилируемый язык (С++, Java или C#) и  по крайней мере один интерпретируемый, тот же питон, руби или JavaScript. Дальше можно еще что-либо освоить.  Как по мне, то лучше в начале изучить С++. Какая от этого выгода? Во-первых - можно писать также приложения на С. В низкоуровневом системном программировании С наиболее часто используемый язык. Во-вторых - если будет такая необходимость, можно запросто перелезть на ту же Java или C# - они синтаксисом похожи на С++ и проще. Ну и в третьих - можно программировать на Qt! Смеющийся Кстати на счет того что Qt это только GUI - откуда такая инфа? Может стоит глянуть сюда?
Записан
iroln
Гость
« Ответ #13 : Август 08, 2011, 23:01 »

Я с удовольствием уже 2 года пишу на Python. Специфика моей работы такова, что мне приходится писать не очень большие программы для научных и инженерных нужд, а там чаще нужно больше думать над математикой, алгоритмами и иметь возможность быстрой интерактивной проверки, визуализации и отладки. Динамические языки в этом плане подходят идеально. Не надо ждать, пока приложение скомпилируется, есть интерактивная консоль и т.д. В общем, одни удобства. Для Python есть библиотеки на все случаи жизни, это язык общего назначения, у него приятный синтаксис, не смотря на отступы. Улыбающийся Есть, конечно, и косяки, но они везде есть.

В общем, хочу сказать, что выбор языка, если не всецело, то во многом зависит от специфики работы и решаемых задач.

А тем временем я всё мечтаю освоить Lisp или Haskell, хочу убедиться, правду ли говорят об непревзойдённой чудодейственности "функциональщины", или брешут. Улыбающийся
Записан
Lagovas
Гость
« Ответ #14 : Август 12, 2011, 00:41 »

2iroln, вопрос к тебе. Друг скидывал ссылку, где результаты сравнения языков. Там выбираешь два языка, и показывается их соотношение на нескольких бенчмарках. Так питон почти у всех проигрывал. Правда ли он в деле такой медленный или нет? Используют ли его в научных целях, где нужно считать, или там все же юзают C++?
Записан
Страниц: [1] 2 3 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.