LINUX.ORG.RU

[C++?] Серьезный вопрос.


3

2

Просьба ответит серьезно, желательно с аргументами за или против.

Предистория:
Когда то давным давно (я тогда еще только закончил 9-ый класс) я увидел в газете объявление о наборе в летнюю группу по изучению классического программирования. В тот момент я был с компьютером на ты и "очень" хорошо в них разбирался (переустанавливал Windows каждый месяц, хаял Microsoft просто потому, что после моих настроек W приходилось постоянно переустанавливать). Группа по классическому программированию так и не набралась, но набралось 1 человек на Visual Basik for Applications. Я соглсился быть вторым и начались занятия.
Все, что мне там объясняли я схватывал быстро. Меня пригласили продолжить обучение в сентябре на курсе "моделирование".
Там уже был Pascal, который я тогда совсем не знал. Сам курс был очень разношорстный: мы изучали и использование мыши через прерывание, готовились к различным олимпиадам. Параллельно я изучил Pascal.
Потом был Delphi. К концу 10-го класса я уже неплохо владел приемами программирования и вовсю клепал бесполезные программулины. Потом поступил в универ на программиста. Там тоже был Delphi, и я особо не напрягаясь писал все лабы (к моменту поступления я уже был знаком с логикой указателей, самописные стеки и графы, etc).
На 2-ом курсе в гостях у знакомого я разобщался с человеком, который уже насколько лет работал в нерезиновой программистом. Он мне и открыл глаза на мир: "Delphi здох. Его уже похоронили и забыли. Сейчас необходимо знание C++, C#. Необходимо занание паттернов проектирование". Вобщем много чего он мне наговорил. Книжек умных насоветовал, подкинул MSVS 2008, кучу электронных книжек. Я изучил C# по книжке Шилдта. Читал "Идеальный кол" (автора уже не помню). Потом купил(!) себе книжку Шилдта про С++. Мне понравился язык. Тем более что мне казалось, что именно он и есть общепринятый стандарт. Наиболее удобный язык для программиста.

А недавно в соседней теме за упоминание это С++ меня чуть было не съели со всем чем можно. Так-то.

Собственно вопрос: Так стоит ли изучать дальше С++ (а я уже достаточно углубился в книжку Страуструпа, подробно изучая все подводные течения)? Какой язык стоит изучать? Какие из них более востребованны?

Спасибо всем, кто осилил это многобукаф.

★★★★★
Ответ на: комментарий от kemm

> 4.2

бугага. напиши моделирование климата на пейтоне. через 1000 лет может быть ты получишь погоду на завтра :)

> Хорошо, продолжим. Что именно там написано на C++?

бекэнд

Reset ★★★★★
()
Ответ на: комментарий от CL-USER

> пистон, лисп, Ц

Разумный минимум: питон и си (в таком порядке). На первом без геморроя можно написать практически всё, на втором ещё и быстро работающее ;)

mv ★★★★★
()
Ответ на: комментарий от Reset

> бугага. напиши моделирование климата на пейтоне. через 1000 лет может быть ты получишь погоду на завтра :)

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

mv ★★★★★
()
Ответ на: комментарий от anonymous

3. Для общего развития, «for fun». C++ не стоит изучать ОДНОЗНАЧНО.

Не, ну почему? Хотя бы чтобы код читать и понимать, почему его так отчаяно не советуют.

Ximen ★★★★
()
Ответ на: комментарий от Reset

> бугага. напиши моделирование климата на пейтоне. через 1000 лет может быть ты получишь погоду на завтра :)

Очередной 4.2. Не надоело?

> бекэнд

Круто. Один бэкенд на все гуглы, яндексы и прочее?

kemm
()
Ответ на: комментарий от kemm

> Очередной 4.2. Не надоело?

Ну не через 1000, а через 100. Так устроит ? Или все еще смысл не ясен?

> Круто. Один бэкенд на все гуглы, яндексы и прочее?

ты идиот или притворяешься?

Reset ★★★★★
()
Ответ на: комментарий от Reset

> Ну не через 1000, а через 100. Так устроит ? Или все еще смысл не ясен?

Какой там по счёту 4.2 уже? Я сбился... 8((

> ты идиот или притворяешься?

Я?! У Вас глянцевый монитор, штоле? 8))

Что за бэкенд, к чему бэкенд, какие именно задачи выполняет, почему именно на C++ написан? Что за мода -- ляпнуть умное слово с не менее умным видом и считать, что всё всем доказал?

kemm
()
Ответ на: комментарий от kemm

> Что за бэкенд, к чему бэкенд, какие именно задачи выполняет

Может тебе еще и ключи от квартиры где деньги лежат? Почитай что-нибудь об архитектуре современных веб-приложений.

Reset ★★★★★
()
Ответ на: комментарий от kemm

> Какой там по счёту 4.2 уже? Я сбился... 8((

опровержения будут или так и будем кудахтать про якобы 4.2 ?

Reset ★★★★★
()
Ответ на: комментарий от Ximen

> 3. Для общего развития, "for fun". C++ не стоит изучать ОДНОЗНАЧНО. Не, ну почему? Хотя бы чтобы код читать и понимать, почему его так отчаяно не советуют.

IMHO решение задачек из SICP или изучение ФП на базе Haskell куда более интересное и полезное занятие чем запоминание костылей С++. Шаблоны С++ - это вообще по ту сторону добра и зла ...

anonymous
()
Ответ на: комментарий от anonymous

IMHO решение задачек из SICP или изучение ФП на базе Haskell куда более интересное и полезное занятие чем запоминание костылей С++.

Безусловно. Но кресты всё-таки не такой мелкий язычок, чтобы его игнорировать. Хочешь, не хочешь, а пересекаться с ним всё равно придется. Так что хотя бы ознакомиться всяко необходимо.

Шаблоны С++ - это вообще по ту сторону добра и зла ...

Если глубоко не копать, то вполне можно пользовать.

Ximen ★★★★
()
Ответ на: комментарий от anonymous

Нормальный язык, главное не пытаться юзать неудачные его части, а лучше о них просто забыть, как о не существующей части языка, возможности позволяют. А ещё лучше учить сразу в связке с Qt, там как раз большая часть древнего ужаса и страха не юзается

Gorthauer ★★★★★
()
Ответ на: комментарий от Gorthauer

А ещё лучше учить сразу в связке с Qt

Вот, кстати, да. Qt сильно улучшает С++. Сделали бы сразу что ли язык такой Qt++.

Ximen ★★★★
()
Ответ на: комментарий от Reset

> опровержения будут или так и будем кудахтать про якобы 4.2 ?

Ты бред про 1000 лет озвучил -- ты и доказывай. И вылезай уже из курятника, да. Заодно монитор поменяй на неглянцевый.

kemm
()

C++ не нужен. Это мертывй язык. Учи Python и Ruby! Вот в них сила, брат!

Lone_Wolf
()
Ответ на: комментарий от kemm

Ты бред про 1000 лет озвучил — ты и доказывай. И вылезай уже из курятника, да. Заодно монитор поменяй на неглянцевый.

Да ладно вам, что-то вы совсем в непотребщину скатываетесь. А так всё хорошо начиналось...

А так да. Утверждение, что ниша С++ - числодробильня надо серьёзно обосновать.

Ximen ★★★★
()
Ответ на: комментарий от Reset

> ты бред про "числодробильню на любом языке" озвучил ты и доказывай

Э, нет. Всё началось с твоего утверждения, будто числодробилки -- ниша C++. Так что я подожду доказательства этого утверждения.

kemm
()
Ответ на: комментарий от anonymous

> Для забаненных в гугле

Ну и что это доказывает? Что в яндексе есть вакансия программиста на C++ и там зачем-то этот язык используют? Отлично. И что?

kemm
()
Ответ на: комментарий от Gorthauer

>главное не пытаться юзать неудачные его части

т. е. вы предлагаете перейти на "С с классами" a-la первое издание книжки Строуструпа? Тогда лучше сразу Smalltalk, Objective-C, или даже Java.

anonymous
()
Ответ на: комментарий от kemm

>Ну и что это доказывает? Что в яндексе есть вакансия программиста на C++ и там зачем-то этот язык используют? Отлично. И что?

Ты или очень толстый, или очень глупый.

>разработка интернет-сервисов и высоконагруженных приложений

о чем тебе говорит?

Возвращаясь к твоему вопросу

>И много там веб-сервисов на C++?

Слив защ^W^Wты ответ получил?

З.Ы. Я знаю, что сейчас будет возражение в стиле "ты мне количество назови, а не вакансию покажи". Это какбы внутренняя информация и делать выводы о технологиях компании зачастую можно только по ее вакансиях, так то! Удовлетворен?

anonymous
()
Ответ на: комментарий от kemm

1. openmp
2. mpi
3. templates (да, один и тот же алгоритм иногда надо запускать с
разными типами данных double, float, ...)
4. OO (в теории полудинамических систем есть generic алгоритмы, работающие с "черными ящиками", поэтому нужен полиморфизм)
5. отсутствие е*тни с аллокацией/освобождением памяти как в Си


этого для начала хватит?


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

Reset ★★★★★
()
Ответ на: комментарий от anonymous

> Ты или очень толстый, или очень глупый.

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

> о чем тебе говорит?

О том, что там зачем-то для каких-то высоконагруженных проектов используют C++. Возвращаясь к моему вопросу -- и что это доказывает? Рекомендую перед ответом чуть-чуть подумать.

> ты ответ получил?

> З.Ы. Я знаю, что сейчас будет возражение в стиле "ты мне количество назови, а не вакансию покажи". Это какбы внутренняя информация и делать выводы о технологиях компании зачастую можно только по ее вакансиях, так то! Удовлетворен?

Нет, естественно... Ответа-то нет. Считать кол-во "внутренней информацией" -- это либо паранойя, либо отсутствие данных у пишущего. Впрочем, дальше на этот вопрос можно не отвечать, так это просто моё празное любопытство. К изначальному вопросу отношения не имеет.

kemm
()

Изучать дальше стоит, если язык комфортен для тебя лично и подходит твоих задач. Без работы не останешься. Выкрики про legacy - ерунда.

mannaz
()
Ответ на: комментарий от Reset

> 1. openmp
> 2. mpi


Библиотеки - это не язык.

> 3. templates (да, один и тот же алгоритм иногда надо запускать с

разными типами данных double, float, ...)
> 4. OO (в теории полудинамических систем есть generic алгоритмы, работающие с "черными ящиками", поэтому нужен полиморфизм)


Оба пункта можно свести к одному: в C++ нет generic-функций, на которых удобно делать generic-алгоритмы.

> 5. отсутствие е*тни с аллокацией/освобождением памяти как в Си


Е..тня с памятью в крестах есть, ибо язык не-managed. RTTI и смартпойнтеры жизнь несколько упрощают, но зато в клинических случаях становятся кошмаром.

mv ★★★★★
()
Ответ на: комментарий от kemm

На самом деле, именно серверный софт сейчас писать на С++ может и не имеет смысла.
Именно потому что правильных ровноруких программеров на нем найти трудно.
Но вот сложный по контролам и визуализации софт пока пишеться на С++.
Не позволяют текущие библиотеки и фреймворки к другим языкам создавать нетормозные красивые и функциональные системы взаимодействия с конечным юзером.
Честно... достало уже видеть софт который по функционалу просто конфетка, но работать с ним - рвотный рефлекс, потому как интерфейс - сон LSD-шника.....
И да... работа с видео аудио, все равно пока C++.

Fastman
()
Ответ на: комментарий от kemm

>> Ты или очень толстый, или очень глупый.

>Интересно, почему хомячки, когда начинают в глубине души осознавать полное отсутствие у них аргументов, тут же начинают хамить?..

Потому что с троллями по-другому нельзя.

>О том, что там зачем-то для каких-то высоконагруженных проектов используют C++. Возвращаясь к моему вопросу -- и что это доказывает?

Доказывает, что там для каких-то высоконагруженных проектов используют C++. Ты хотел доказательств наличия веб-сервисов на плюсах. Это не оно?

>Считать кол-во "внутренней информацией"

Где я ее считал? Все свои выводы делал на основе двух вакансий. Дальнейшие разжовывания исключительно для предотвращения унылого троллинга-буквоедства.

anonymous
()
Ответ на: комментарий от thevery

>это значит лишь то, что какой-то из сервисов частично сделан на крестах

А кто-то заявлял, что шаблонизаторы для вывода html тоже пишут на плюсах? Естесственно, что на плюсах критические части.

anonymous
()
Ответ на: комментарий от kemm

для начала google://the anatomy of a large-scale hypertextual web search engine

Reset ★★★★★
()
Ответ на: комментарий от Reset

> 1. openmp

"An API for multi-platform shared-memory parallel programming in C/C++ and Fortran."

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

> 2. mpi

http://en.wikipedia.org/wiki/Message_Passing_Interface#Implementations

Опять ой?

> 3. templates (да, один и тот же алгоритм иногда надо запускать с разными типами данных double, float, ...)

Это вот прямо-таки уникальная возможность плюсов? Вы вот прямо-таки в этом уверены?

> 4. OO

C++ -- это вот прямо-таки единственный язык, поддерживающий ОО парадигму? Вы уверены?

> 5. отсутствие е*тни с аллокацией/освобождением памяти как в Си

Зато на столько же больше е*тни по сравнению с каким-нибудь языком с нормальным gc.

> этого для начала хватит?

Спасибо, хватило. Для доказательства обратного утверждения.

kemm
()
Ответ на: комментарий от mv

>> 5. отсутствие е*тни с аллокацией/освобождением памяти как в Си

>Е..тня с памятью в крестах есть, ибо язык не-managed. RTTI и смартпойнтеры жизнь несколько упрощают, но зато в клинических случаях становятся кошмаром.

В предыдущем посте С++ сравнивался с С. Работа с памятью в С++ легче, чем в С. Да, это позволяет отстрелить себе ногу, и? В чистом С это сделать гораздо проще имхо.

//Всегда ваш, C.O.

anonymous
()
Ответ на: комментарий от Fastman

И да... работа с видео аудио, все равно пока C++.

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

И да. Уже приводили примеры, где в этой области легко обходятся без плюсов.

Ximen ★★★★
()

имхо, никто не вправе тебе указывать, что изучать. и, я думаю, что попробовать C++, очень даже стоит.

AGUtilities ★★★
()
Ответ на: комментарий от Reset

> это всё не аргументы, ибо вменяемых примеров, например вот этого на альтернативных языках нет

У нас, по-видимому, разные представления о числодробилках. В вашем представлении - это написание умножений матриц на вектора, в моём - обычный численный инженерный или физический расчёт. Например, поперечного лучевого давления в активной камере.

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

mv ★★★★★
()
Ответ на: комментарий от anonymous

> Потому что с троллями по-другому нельзя.

Ты хотел написать, "потому что троллям по-другому нельзя"?

> Ты хотел доказательств наличия веб-сервисов на плюсах. Это не оно?

Я хотел не этого. Я ж не зря предлагал перед ответом подумать... Ещё раз: с чего вдруг высоконагруженный веб — ниша C++? Потому что в яндексе и гугле есть некоторое кол-во высоконагруженных сервисов на C++? За доказательство один только этот факт считаться не может.

> Где я ее считал?

Там в моём ответе цитата была.

> Все свои выводы делал на основе двух вакансий.

Q.E.D., в общем-то.

kemm
()
Ответ на: комментарий от Reset

> Ты заканчивай с бреднями про "прямо-таки единственный язык", а давай язык где есть всё и сразу.

Не-не-не. Ты давай, доказывай исходный посыл, что числодробилки -- ниша C++. Первая попытка доказательства была с треском провалена по всем пунктам. Продолжаем...

kemm
()
Ответ на: комментарий от Ximen

И это тоже, есть такая фигня.
Однако например практически 90% софта для оформления телевизионного эфира например,
и виртуальных 3D студий для телевидения написаны на C++.
И не поотму что привычка или исторически так. А по двум причинам:
1. Отсутствие инструментов для работы с видео/аудио к другим языкам.
2. Задержку больше пары кадров на выходном тракте тебе не простят :)
Однако это совсем не достоинство C++, а суровая реальность.

Fastman
()
Ответ на: комментарий от mv

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

Reset ★★★★★
()
Ответ на: комментарий от Reset

> а давай язык где есть всё и сразу.

Кстати, очень хорошая иллюстрация определённого типа мышления... Если я приведу, скажем, два языка, в сумме покрывающих это самое "всё" -- это ведь в рамках этого мышления не будет считаться правильным ответом, ведь так?

kemm
()
Ответ на: комментарий от kemm

Я не увидел контраргументов. Контраргументом будет считаться язык удовлетворяющий всем моим пунктам и работающий не медленее плюсов. А так получается пункту 1 удовлетворяет язык A, пункту 2 язык B ... херня какая-то получается.

Reset ★★★★★
()
Ответ на: комментарий от kemm

>> Потому что с троллями по-другому нельзя.

>Ты хотел написать, "потому что троллям по-другому нельзя"?

Вот, как и предыдущие твои посты в треде, аргументация свелась к стилю "сам дурак".

>> Ты хотел доказательств наличия веб-сервисов на плюсах. Это не оно?

>Я хотел не этого.

Ага. А это что?

>Веб-сервисы на плюсах? Аднака...

>И много там веб-сервисов на C++?

>с чего вдруг высоконагруженный веб — ниша C++? Потому что в яндексе и гугле есть некоторое кол-во высоконагруженных сервисов на C++? За доказательство один только этот факт считаться не может.

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

Алсо критерий нишы языка тоже в студию.

anonymous
()
Ответ на: комментарий от kemm

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

Reset ★★★★★
()
Ответ на: комментарий от Fastman

1. Отсутствие инструментов для работы с видео/аудио к другим языкам.

Не специалист я в этом, но верится с трудом...

2. Задержку больше пары кадров на выходном тракте тебе не простят :)

А сегфолт простят?

Ximen ★★★★
()

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

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

lester ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.