Чи варто вивчати C++?

Хотів би зайнятись вивченням саме плюсів, вже і книгу С. Прати пройшов і курси на GlobalLogic запримітив. Питання: які перспективи? А саме у Львові? Хто знає, порадьте ще також хорошу літературу. Буду вдячний за поради.

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn

Лучшие комментарии пропустить

Як на мене (але це тільки моє бачення), якщо не попрацювати з «сылками» в С++ та не освоїти всю красу «указателей» то навіть не зрозумієш всієї краси та простоти тієї ж самої java або того ж С#. Із знанням С++ легко освоювати всі інші С-подібні мови. а це і С#, Java, php та інші. Тому перспективи непогані. Механізми NET та JVM стануть зрозуміліші, а уже на скільки це допоможе в подальшому Вам залежить від Вас. Ще пораджу книгу Р.Лафорре С++

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Буду краток...
Так, варто.

Буду краток...
Так, варто.
fixed

Сорри за офтоп, тут спрашивали о книге по алгоритмам интеллектуального веба: www.manning.com/marmanis

Никогда не понимал спекуляции на «указателях» / «ручном выделении и освобождении памяти» и пр. в разных дискуссиях, а особенно во многих учебниках по Java. Что в этом плохого? Сам Ст. Прату читал с легкой эйфорией (чистый C, правда), что не скажешь об изучении какого-то «многослойного» фреймворка. Да, занимает время, часто приходится делать экскурс в Ассемблер для отладки, иногда забываешь освободить память — но подобное, это не выстрел в ногу, а поддержка себя в тонусе (отладчиков и профилировщиков полно для удобств). Швейцарский нож, а не язык :) «C с классами» говорит само за себя. Спрос маленький, но он есть (со всех языков/навыков можно снимать хороший профит, что уж говорить о C++.. не энтерпрайзом единым).

Сам планирую кресты детально изучить. В качестве «главных», выделил таких авторов: Липпман, Прата, Шилдт, Дейтел.

all: книжку Страуструпа кто-нибудь осилил?)

Никогда не понимал спекуляции на «указателях» / «ручном выделении и освобождении памяти» и пр. в разных дискуссиях, а особенно во многих учебниках по Java. Что в этом плохого?
Котлеты отдельно, мухи отдельно ©
Бизнес-логика должна быть как можно сильнее отделена от инфраструктурных вещей (частично отсюда и популярность ФП-подхода, например).

Это конечно грамотный подход. Я имел в виду то, что многие любят приводить это как аргумент, чтобы в итоге получилось — «ну его нафиг этот C с его заморочками». В итоге имеем, что C сложнее чем Java? Бред.
Спорная такая тема :)

Прочитал Страуструпа в свое время от корки до корки, фундаментальная штука. Но все-таки переключился со временем на C# - вакансий гораздо больше, да и эстетически мне больше нравится.

Раньше программы как писались?
Было 3 основных этапа:
— не компилируется
— компилируется, но не работает
— работает, но содержит ошибки, из-за чего периодически падает.

Но потом люди решили радикально повысить производительность разработчиков, придумали скриптовые ЯВ (Perl, Python, Ruby, прочие), в них остался только один этап «работает, но содержит ошибки, из-за чего периодически падает».
Таким простым способом повысили производительность в 3!!! раза! Так что если еще кто-то пытается втирать что мол С++ более производителен, то это неправда, он в 3 раза менее производителем чем любой из скриптовых ЯП.

Что-то мне это анекдот навеяло

— Сколько знаков в минуту вы можете печатать?
— Примерно 100
— А 150?
— Могу
— А 200 сможете?
— Могу, но, знаете, такая фигня получается!

Для PHP-шников это норма, зато много кода. :-)

Спочатку С, потім С++. Перед тим — асемблер. Після того — Хаскель

А перфокарты и машинные коды на магнитной пленке перед чем?

после машины тьюринга и частично рекурсивных функций

Запис на магнітну стрічку навчив мене, що таке Манчестерське кодування. Перфокарт не застав, зате ще через АЦПУ бавився в «Крокодила» років в 10

А перфокарты и машинные коды на магнитной пленке перед чем?
Машинные коды — это по большей части глупость (особенно если вспомнить что такое язык ассемблера). А вот
после машины тьюринга и частично рекурсивных функций
это надо для понимания.
К слову, программа нормального ВУЗа по «программерских» специальностях в общем такая:
1) паскаль — введение в программирование
2) ассемблер или как отдельный курс, или как часть какого-то системного программирования
3) Си или введение в программирование, или часть системного, или подготовка к ЦПП
4) Лисп скорее всего как часть какой-то дискретки или курса про компиляторы-или-типа-того
5) Прикладной язык — Джава/ЦПП/Ц№
.
Такой подход дает человеку понимание и базу для изучения всего остального. Другое дело что это занимает несколько лет.

Почему глупость, ведь важно понимать как это все работает на уровень ниже? Помимо машинных кодов нужно обязательно дойти до того чтобы вручную открывать закрывать p-n-p, n-p-n переходы на транзисторах, ставить пакеты на шину данных и шину адреса, считать переходные процессы на схемах, ведь без этого портрет тру-байтослесаря будет неполон.
Ну и венец — тыкать всем остальным, что мол «Вы не знаете Lisp, assembler, хаскель — вы г*вно, а я — карамелька творец, моцарт, байтослесарь»

Почему глупость, ведь важно понимать как это все работает на уровень ниже?
Потому что надо не только иметь мозг, а еще и уметь им пользоватсо. К слову, понимание того как работает железо имеет мало отношения к машинным кодам.
Ну и венец — тыкать всем остальным, что мол «Вы не знаете Lisp, assembler, хаскель — вы г*вно, а я
Мне больше нравитсо тыкать: «ты не понимаешь в чем разница объявления переменной в javascript через var и без» или dou.ua/...c/10525/#509775
.
Вы не знаете Lisp, assembler, хаскель — вы г*вно
Если ставить вопрос так и подходить к языку как к просто синтаксису, то пользы таки мало.
А если как к набору подходов/паттернов, то эта фраза выглядит уже скорее так «Ты все еще перекладываешь коллекцию А в коллекцию Б через простую внешнюю итерацию и не знаешь что такое map — ...»

Pascal? Вы серьезно? Вы часом не преподаете его в ВУЗе?
Поясните какая конкретная и ощутимая польза от этого барахла:

1) паскаль — введение в программирование
2) ассемблер или как отдельный курс, или как часть какого-то системного программирования
3) Си или введение в программирование, или часть системного, или подготовка к ЦПП
4) Лисп скорее всего как часть какой-то дискретки или курса про компиляторы-или-типа-того
чуваку, который пишет на Java или Ruby или Javascript?
Pascal? Вы серьезно? Вы часом не преподаете его в ВУЗе?
Не преподаю, но дочитать предложения могу в отличии от некоторых :)
Поясните какая конкретная и ощутимая польза от этого барахла:
...
чуваку, который пишет на Java или Ruby или Javascript?
Это про джаваскрипт:
ты не понимаешь в чем разница объявления переменной в javascript через var и без
А это про груви: dou.ua/...c/10525/#509775
.
Видимо хорошо что я не преподаю в ВУЗе, учитывая что приходится повторять некоторым все по 2 раза. :)

Съезжаете по-петросянски? «Лямбды зло» — достойный аргумент?
Повторяю вопрос:

Поясните какая конкретная и ощутимая польза от этого барахла:
1) паскаль — введение в программирование
2) ассемблер или как отдельный курс, или как часть какого-то системного программирования
3) Си или введение в программирование, или часть системного, или подготовка к ЦПП
4) Лисп скорее всего как часть какой-то дискретки или курса про компиляторы-или-типа-того
Я нигде не писал про Javascript, так что не придумывайте.
Я нигде не писал про Javascript, так что не придумывайте.
чуваку, который пишет на Java или Ruby или Javascript?
Хм? Вы и свои предложения до конца не дочитываете? :)
.
А если серьезно, то сходите по ссылке, почитайте что там написано и подумайте, что было бы если бы вы прилежно в свое время учили Ц/ЦПП (не только язык, но и все те низкоуровневые штуки которые к нему прилагаютсо, как правило).

Причем здесь мой топик к вашему комменту? Лучшая защита это нападение? Я у вас спрашиваю какой конкретно смысл для чувака, пишущего на ЯП высокого уровня вникать в байто-слесарьство, вы мне пишете: «если бы вы учили, то тогда что-то.....ого-го»,

Какая конкретно польза чуваку на ЯП высокого уровня знать Lisp, Assembler, C, C++, а также дискретку? Он бы потратил 5 лет жизни на то, чтобы узнать, что его Javascript компилится в 100500 машинных команд и байтов, ну шо дальше?

Попробую объяснить...

Поясните какая конкретная и ощутимая польза от этого барахла:
1) паскаль — введение в программирование
2) ассемблер или как отдельный курс, или как часть какого-то системного программирования
3) Си или введение в программирование, или часть системного, или подготовка к ЦПП
4) Лисп скорее всего как часть какой-то дискретки или курса про компиляторы-или-типа-того
1) Паскаль — один из простейших императивных языков созданый Виртом специально для обучения студентов программированию и с этой функцией справляется. Или станете утверждать, что базовые конструкции типа условий или циклов совершенно другие в JS? Это — первый курс.
2) Ассемблер учат для двух вещей: понимания как работает процессор(мы ж про инженеров говорим) и еще для кое-чего не совсем очевидного... Был у нас опциональный курсач по асму для самых красноглазых — написать простенькую систему управления магазином с гуйом и динамическим распределением памяти. Все, кто взялись — вылечились и теперь пишут на Java/Python/C#/e.t.c., регулярно питаются и крепко спят. Это — второй курс.
3) С — страшная штука для неокрепшего мозга с его вездесущими указателями, но его понимание дает возможность понимать и писать решительно все, что может быть написано императивно. Это — второй-третий курсы.
4) Функциональщина и компиляторы учатся раздельно на поздних курсах, до которых не каждый доучивается. Эти вещи для рядового кодера как правило имеют мало смысла.
Какая от всего этого польза если человек пошел клепать фронт-енд на JS за хорошие деньги? Никакой. Разве что он вытерпел хоть первый курс и понимает чем отличается map от list и совсем уж говнокод не пишет. Но чем старше курс, тем шире знания и уменя правильно выбирать и использовать инструментарий. Например использовать более прогрессивный Scala вместо Java;)
Сойдет за объяснение?

Я полагаю, что ТС хочет найти работу в ближайшем будущем, а не через 5-10 лет осваивания того, что с вероятностью 98% ему никогда не пригодится.

Сойдет за объяснение?
Сойдет за оправдание устаревшей программы обучения в ВУЗЕ.
Также можно добавить — не будет света, считай на алгоритмической линейке или пробивай перфокарты булавкой. Или вдруг Agile загнется, а мы тут знаем каскад.

Сюда можно добавить еще 20-30-40 ненужных предметов в ВУЗЕ. Если задаться целью, то можно придумать любое объяснение и даже написать кандидатскую на тему: «Как философия Гегеля влияет на сферического коня в вакууме».

Тем не менее если человек не использует эти знания в повседневности, они ему не нужны и даже вредны.

Вы когда ведете машину ведь не впрыскиваете и не поджигаете вручную бензин в каждый из цилиндров? Так как какой смысл чуваку пишущему на ЯП высокого уровня это знать? Он просто использует язык или VM для своих целей.

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

Сойдет за оправдание устаревшей программы обучения в ВУЗЕ.
Готовы предложить новую? Без сарказма. То, что программа устаревает за время обучения было понятно даже нашей преподше по социологии. Это очень серьезный вопрос: какие знания дать студенту, чтобы их КПД не стремился к 0?
Вы когда ведете машину ведь не впрыскиваете и не поджигаете вручную бензин в каждый из цилиндров?
А когда автомобиль ломается не едете на СТО и не рассказываете автослесарям какие они лохи, что потратили время на изучение устройства всего автомобиля, когда у всех из поломок бывает только потекший карбюратор, и вообще можно работать водилой и рубить гораздо больше бабла?
Мой итог и схож и диаметрален: если человек ищет работу, то пока не известно, с чем он столкнется после того, как найдет и справится ли. И не стоит навязывать другим свой пример, как единственный правильный и самый результативный.
Готовы предложить новую? Без сарказма.
Готов, ввести несколько направлений обучения программирования в техникумах с заточкой под конкретный язык. 1-1,5 года, 5-7 предметов, много практики и готов начинающий программиста. Так поступают в Индии. Вместо просиживания штанов в универе 5 лет с сомнительной перспективой трудоустройства.
Мой итог и схож и диаметрален: если человек ищет работу, то пока не известно, с чем он столкнется после того, как найдет и справится ли.
Я не пишу код «про запас», я использую его когда нужно решить проблему. Такой же подход предлагаю и здесь — решать проблемы по мере их поступления, ведь то, что предлагается, это не месяц-другой, это лет пять жизни потрачено неизвестно куда. Нужна работа — выучил азы и вперед. Мне кажется, что сидеть на шее у родителей еще 5 лет до достижения дзена как минимум некрасиво.
И не стоит навязывать другим свой пример, как единственный правильный и самый результативный.
Так вы и ваши коллеги по цеху грешите эти побольше моего.
Готов, ввести несколько направлений обучения программирования в техникумах с заточкой под конкретный язык. 1-1,5 года, 5-7 предметов, много практики и готов начинающий программиста.
В некотором роде так поступают и у нас. Существуют и ВПТУ и техникумы которые дают базовый набор и практику. Но речь шла об университетской программе. Или нашим программистам вышка в принципе не нужна?
Я не пишу код «про запас», я использую его когда нужно решить проблему.
И в итоге пять лет просиживания за партой растягиваются на пять лет «полевой» учебы без систематизации знаний и порой халатного дилетантсва. У обоих подходов есть свои +/-.
Так вы и ваши коллеги по цеху грешите эти побольше моего.
Трудно быть объективным при отстаивании противоположной точки зрения, ведь истина где-то посередине. Но вот не помню, чтобы писал о том, что только полноценное высшее, только С++, только хардкор. Если человек заинтересован — необходимо поддержать его интерес и предоставить необходимую информацию. А не рубить с плеча «учи Java, там бабло и быстро».
Сойдет за оправдание устаревшей программы обучения в ВУЗЕ.
ви з чим порівнюєте? з якою саме програмою вузу/напрямку?
як не дивно, з львівського політеху, КН/АСУ, того що справді застаріле і ніяким боком не потрібне було не більше 20%. і це не постійно специфічні проекти чи глибока наука — звичайний веб, сервіси, CRM, десктопні аплікухи.
цих 20% — це те що в перші 5 років роботи ніде не використовувалось, хоч підчас навчання була стійка думка що такого більше половини (дайте диплом, пару семестрів по плюсам і нам вистачить!.. ну ще можна джаву, якщо знаєте).
ви з чим порівнюєте? з якою саме програмою вузу/напрямку?
Направление Компьютерные науки любого вуза. АСУ — более узкое направление КН.

Во-первых глубокая наука типа ИИ, экспертных систем либо мощная прикладная типа CRM или ERP не дается достаточно глубоко, вы не сможете применять это на работе по конспекту вуза.

Во-вторых за счет распыления усилий по огромному количеству предметов (60-80 на 5-летней программе) на нормальном уровне не даются даже азы.

В-третьих в IT актуальная база навыков полностью обновляется за 3-4 года, т.е. то что вы выучили по CRM 5 лет назад и не использовали, это во-первых атрофировалось без использования, во-вторых — реалии уже поменялись, добавились облака, кластеры, web 2.0, социализация (лайкать чужие новости), SPA, а все это в корне меняет традиционный CRM.

не дается достаточно глубоко,
в тому і бонус вузівської програми, дається база, без привязки до реалізацій конкретного десятиліття.. а базові принципи зазвичай мінятимуться поодинокими візіонерами, що будуть йти всупереч загальновідомим знанням, а не по ним. відповідно при попаданні в компанію до останнього — там деталі і дізнаєтесь — що є нормальним.
Во-вторых за счет распыления усилий по огромному количеству предметов
... зявляється розуміння що це, і для чого — коли чуєш розповідь старших про потреби чи проблеми проекту, і _вже_ знаєш куда гуглити.
то что вы выучили по CRM 5 лет назад
правильна відповідь — нічого. був базовий обєкт — система масового обслуговування, про яку згадувалась куда вона накладається. як ви думаєте, її принципи в клауді все ще діють? а в вебі 2.0? а чим логічно відрізняється SPA від класичного сайту, крім перенесення одного з леєрів на кліента? (АКА як в десктопі ;) )
ну а соціалізацію, де все зводиться до скрипта в заголовку, і пари тегів для кнопки та дискусії — виносити це в технічну абстракцію, а не меркетингово-соціальну — досить смішно...
Сойдет за оправдание устаревшей программы обучения в ВУЗЕ.
Паскалю лет в несколько раз больше чем мне. Вдруг чувак решил пойти в ВУЗ и опа-опа — Паскаль устарел.
Ассемблер, может быть и не самый удобный инструмент, чтоб на нем писать, однако я не представляю, как без его знания можно отлавливать баги в компляторе и чужих бинарных модулях.
Какая конкретно польза чуваку на ЯП высокого уровня знать Lisp, Assembler, C, C++, а также дискретку?
щоб в один момент, після 3х років писання на святій джаві, побачивши в таску джаваскріпт — не кидатись з харакірі перед босом, а брати його і робити...
щоб в день коли джава вийде з мейнстріма, не звільнятись і іти в прибиральники, а швиденько підівчити основні концепти, і зіскочити на той же свіфт чи ще щось нове та модне.

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

та хоч брейнфак :)))
користь в тому що ти перестаєш сприймати те що маєш як святу корову, і маєш гнучкість до інструменту.
поки досвід на джаві/скалі/шарпі/обджектіві вартує більшого ніж перевчитись — користуєшся ним, як тільки стало вигідніше інше — ти і морально готовий перейти, і мозок достатньо гнучкий щоб це зробити.
і хай там буде перехід з 20ти операторів на 4, з строгої типізації на відсутню — це для тебе буде і лишатиметься всього лиш інструментом.

Ок. а java разработчик с количеством времени потраченным на изучение и практику раза в три меньшим чем на изучение

Lisp, Assembler, C, C++
 перескочить так же быстро на другой высокоуровневый язык не сможет?

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

все таки каждому формошлепу стоит потратить 5 лет свой жизни, что бы иметь запасной вариант,
це називається вища освіта.
витративши рік на самоосвіту по джаві, і забивши на офіційну освіту, перших років з 5, здаватиметься що ось вона, халява, нащо просиджувати парту, бабло і так сиплеться.. а далі народ який вчився чогось починає доганяти по зп і лейблам, а на 10ти вже й обганяє, по розумінню процесу, додаткових знаннях навколо джави, і все таке.
а найбільша проблема — ти навіть зповна не розумієш куда треба копати щоб їх догнати..

Разве речь об образовании? утверждение ’сможет с легкостью’ перескочить на задачу с другим языком применимо к выпускникам студентам в моем понимании звучит как полный бред.

Разве речь об образовании?
людина з юридичною освітою при подачі резюме на програміста прирівнюється до людини без вищої освіти.
людина без вищої технічної освіти в ІТ приречена лишатись на нижчих еволюційних щаблях і постійно лажати в складих абстрактних задачах (за вийнятком одиниць кому «було влом вчитись взагалі» чи «батьки запхали в медичний, а ночами сидів в фідо з адмінами»).
якщо брати людину з технічною освітою, то з 2-3 мови програмування вони і так за час навчання побачила, в компютерних науках — до 7ми.
утверждение ’сможет с легкостью’ перескочить на задачу с другим языком применимо к выпускникам
уважніше, по тексту була людина з бекграундом декількох мов (ака випускник) + 3 роки досвіду у «своїй» мові.

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

И я вообще первый раз слышу, что кто-то без знания перечисленных языков был вынужден уйти из профессии или был не в состоянии сделать задачу
це знання називаєть “вища технічна освіта”. її наявність включає хоч якісь знання багатьох мов. її відстутність зазвичай призводить або до барахтання на нижніх рівнях програмування, або втечі з нього (чи то в ПМство, чи то ще кудись дальше)

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

Обычно люди даже если и уходят из программирования
після мідла в ПМи — як думаєте, це від того що занадто добре програмували?
Какое барахтанье, что за глупости?
4-6 років досвіду в програмуванні, і бути все ще мідлом... не тому що зажали, а тому що більше наразі не тягне. неодинокі приклади :(
они не знают матан и не могут запрограммировать ракету, написать драйвер под видеокарту или изобрести новый ЯП?
а якщо вони банально туплять в побудові архітектури простого модуля? якщо перед тим робили 10 раз модуль х, і після декількох раз тикання носом роблять поправильному, а модуль у, ніби зовсім не те, а логічно не сильно відрізняється — вже наваяти не можуть?
знания высокоуровневых языков
ще раз, читайте уважно, йдеться про комплекс “вища технічна освіта”, в ідеалі КН/ПМ, де з різними мовами напару іде системний аналіз, підходи до проектування, моделювання, оцінювання вибраного підходу і вибір з декількох відомих.
після мідла в ПМи — як думаєте, це від того що занадто добре програмували?
4-6 років досвіду в програмуванні, і бути все ще мідлом... не тому що зажали, а тому що більше наразі не тягне. неодинокі приклади :(
а якщо вони банально туплять в побудові архітектури простого модуля? якщо перед тим робили 10 раз модуль х, і після декількох раз тикання носом роблять поправильному, а модуль у, ніби зовсім не те, а логічно не сильно відрізняється — вже наваяти не можуть?
кто бы мог подумать и все эти люди бы сразу стали ведущими программистами в 23 года, если бы у них была
“вища технічна освіта”

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

кто бы мог подумать и все эти люди бы сразу стали ведущими программистами, если бы у них была
“вища технічна освіта”
хмм ... а нічого, що освіта це не лише диплом, та хх пар що ти прослухав, а й гарний фільтр придатності?
людей, що можуть кодити(для себе!!!) >50%, але тих хто може це робити професійно, в складних продуктах — <5%
в нас з потоку на кафедрі в чесне ІТ пішло аж.. 10%. інші вже там зрозуміли що це не їхне, і втекли в продаж, рекламу, і в інше, простіше.
уврен что у половины из этих примеров в реальной жизни
це і є приклади з життя. і та, в половини вона є.

Да, мне эта печальная статистика знакома, как и сама ущербность такой «полезной функции», когда в профессии работает огромное количество талантливых самоучек, а набирают маркетологов и вместо того что бы обучать программистов только отсеивают неспособных.
Может быть если были бы перемены в модели ВО оно сыграло бы более полезную роль для профессии, чем этот постыдный пример. И действительно от него была бы польза в целом более ощутимая, чем банальная потеха ЧСВ разработчикам, которых по их мнению делают уникальным такое обраование.

вместо того что бы обучать программистов только отсеивают неспособных.
поки в нас професія приносить доходи суттево вище середнього — доти батьки будуть “запихати” до нас дітей, яким це і не цікаво і не сильно на це здатні — і власне фільтр є не менш важливою складовою освіти, як і саме навчання.

А Ви не задавались питанням — Чому ми вивчаємо історію із самого виникнення людства? Чому на біології розпочинаємо із найпростіших?

А чому у першому класі не дають основи математичної логіки, не вводять аксіоматику ZFC, не визначають натуральні числа у вигляді операцій з пустою множиною?

До біології є курс природознавства, де також вивчається життя.

Якщо брати будь яку галузь людської діяльності, то вона вивчається з середини. Ти вигризаєш певний обсяг знань, напрацьовуєш певну інтуїцію, а все потім починаєш його розширяти вглиб, вгору або вліво/вправо. Або взагалі кидаєш як непотріб.

тут в теме есть задача, нахождение простых чисел в матрицах из чисел. Человек написал на с++ парсер который считает матрицу 3×4 за 1000 секунд. Я написал на питоне похожий парсер, он одни матрицы строит (без поиска простых чисел) часами. Переписал его на С++ - все равно не меньше часа для матрицы 3×4. На джава я подозреваю это все будет занимать времени как на питоне. Это показывает что для некоторых задач программирования таки нужен с++, так как решения на языках высокого уровня считают ответ неоправданно долго.

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

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

Простейший пример: пузырьковая сортировка vs сортировка слиянием. Также есть куча алгоритмов поиска, балансировки деревьев и т.д. В матрицах наверняка есть тоже самое.

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

уж очень похожа на бесполезную олимпиадную.

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

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

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

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

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

Это в вас говорит опыт 6 языков программирования, выученных за 6 месяцев? И вы уже себя возомнили гуру? продолжайте в том же духе.

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

Забавно, приведите примеры таких задач.

Ядро SIP PBX. Нужно распараллеливать обработку сигналинга, маршрутизации, регистрации устройств, и т.д.

Ну так это узкоспециализированные задачи и далеко не распространенные.

А что Вы называете неузкоспециализированными широкораспространенными задачами?

Операции с базовыми коллекциями, 1-мерными массивами, связными списками, поиск, сортировка в этих структурах данных. Многие программисты неспособны использовать что-либо за исключением допустим Arrays.sort, т.к. считают что стандартная реализация — наше все.

А в чем задача-то состоит? Все подобные задачи и их решения были разобраны еще Кнутом, лет 30 назад. Это первый или второй курс универа.

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

опишите алгоритм здесь, я напишу на яве когда будет время. Переписка с питона на с++ ускорила процесс, но все равно в 1000 секунд я не вкладываюсь. минимум нада 100 секунд на одну матрицу и ее сдиг вправо. Распараллеливания задач у меня никакого нет — в одно ядро все считается.

Ок. Попробую. Поскольку сам алгоритм достаточно сложен для описания, начну с подготовительной теории.
Обозначения: X,Y — размеры матрицы, Q — колво полных (от 1 до 9) наборов в матрице (Q = [X*Y / 9]); R = (X*Y)%9 — колво цифр в неполной цепочке.
Итак,матрицу составляем следующим образом:
1) выбираем перестановку для первой полной цепочки цифр
1a) если Q>1: —//— для второй полной цепочки, и т.д.
2) если R>0: выбираем комбинацию цифр для неполной цепочки
2a) перебираем все варианты перестановки цифр для неполной цепочки.
3) матрицу заполняем последовательно цифрами из полученных цепочек
4) в цикле перебираем все возможные варианты для пп. 2а, 2, 1а, 1

Это общая идея, сейчас попробую вспомнить и описать алгоритм, который ее реализует

Нет, здесь я некорректно описал п.3. В нем перебираются все перестановки цифр неполной цепочки между элементами полн(ой/ых) цепочек для выбранных перестановок в пп. 1 и 2.

я делал так же, для матрицы 3×4 будет 12 позиций, это значит что 8 цифр войдут по 1 разу и 2 цифры по два раза, в итоге такая последовательность запишется [0820000000], что означает брать 2 каких то цифы по 2 раза (2 в позиции 2) и брать 8 цифр по одной (8ка в позиции 1). первая полученная комбинация для 10 возможных цифр будет вида 2211111111 (два раза 0, два раза 1, один раз 2, и т.д. что будет переведенно в 001123456789. Этими цифрами и заполняем матрицу. Простые числа ищутся понятно как. В цикле перебираем все комбинации для матрицы вида 2211111111 и переходим к матрице 2121111111 и по новой аж до вида 1111111122. Чего ж у меня так долго то считает ?

У меня аогоритм оказался очень замороченным, не могу пока однозначно описать.
А в твоих рассуждениях выше есть ошибка: повторятся будут три цифры. Пример последовательностей
1 1 2 2.3 3 4 5.6 7 8 9
1 1 2 2.3 3 4 5.6 7 9 8
1 1 2 2.3 3 4 5.6 8 7 9, ну и т.д.

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

три цифры не будут повторяться, потому что в рекурсии я прохожу по массиву доступных цифр типа [2,2,1,1,...1]. 2 в нулевой позиции означает что цифра ноль может использоваться 2а раза. 1ца во второй позиции( мы считаем с 0ля если что) означает что 2ка будет пользоваться только один раз. я выбираю цифры из доступных поочереди в рекурсии . например для массива доступных цифр [0,0,3,2] будут доступны 0 нулей, 0 единиц, три 2 и две 3 из них в рекурсии я строю матрицу.
итерации — если еще не достиг дна (не вся матрица заполненна) прохожу по массиву пока не найду что то >0, записываю индекс найденного в матрицу, уменьшаю найденное что то на 1 (так как я уже заюзал цифру ) и ухожу на следующую итерацию.
1ая итерация [0,0,3,2] , матрица стала [2,x,x,x,x] (нашел 3>0 в позиции 2), уменьшил количество доступных двоек и уходим на следующую итерацию с доступным списком цифр [0,0,2,2]
2 ит [0,0,2,2], матрица стала [2,2,x,x,x] [0,0,1,2]
3 ит [0,0,1,2], матрица стала [2,2,2,x,x], [0,0,0,2]
4 ит [0,0,0,2], матрица стала [2,2,2,3,x], [0,0,0,1]
5 ит [0,0,0,1], матрица стала [2,2,2,3,3], [0,0,0,0]
6 ит итерация [0,0,0,0] достигли макс глубины итерации, идем и ищем простые числа в сформированной матрице [2,2,2,3,3].
внизу листинг перебора на питоне, в питоне нет массивов поэтому используется append который просто добавляет в конце массива то что ему передано в качестве агрумента. ну и после убираем последний элемент массива операцией del matrix_list[-1]

def combine_digits(list_of_digits_rec, N_iteration, matrix_list):
    #coming build_list_of_digits = [2, 2, 1, 1, 1, 1, 1, 1, 1, 1]
    if N_iteration == 0:
    #expected matrix_list = [0,0,1,1,2,3,4,5,6,7,8,9]
        go_and_build_all_strings(matrix_list)
        return
    else:
        i = 0
        while i < 10 :
            if list_of_digits_rec[i]>0:
                matrix_list.append(i)
                list_of_digits_rec[i] -- 
                combine_digits (list_of_digits_rec, N_iteration - 1,matrix_list)
                list_of_digits_rec[i]++
                del matrix_list[-1]
                i ++
            else :
                i ++

Ноля нет, смотри внимательнее условие. Используются только цифры 1...9

2. Only the digits 1..9 are to be used.
офигеть, прохлопал ) ну в принципе алгоритм это не особо менят. Просто переборы поставить с позиции 1 а не с 0.

На вопрос «почему так медленно?» у меня пока есть только один ответ:

в питоне нет массивов

я скачал ваш код, посмотрел и решил проверить как оно работает. для матрицы 3×4 уже считает пол часа и ответа еще нет. Где же 1000 секунд ????? запускаю на вин7 32 бита из вижуал студио 2005. процессор core i5 2520M.

мб автор забыл упомянуть, что 1000 секунд достагалось на 128 ядерном сервере с 2 ТБ памяти?

Нет, сони вайо с интел коре 2 дуо. Могу сейчас посчитать на интел коре ай 7, если интересно. Могу выслать 32 и/или 64 битный экзешник — сам посчитаешь. Просто релиз надо компилить. OpenMP в дебаге отключен, поэтому не будет распараллеливания.

К памяти там вообще не критично, сейчас запустил — < 4М на пике

Релиз надо компилить.

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

Ок, шли на archie314 на жимейле дотком

ок, тока я не буду клин код делать, пришлю как есть с матрицей 3×4. Ваш код уже больше часа работает и пока без ответа. Интерестно оказалось что малое время исполнения достигается через параллелизм, ну и еще может за счет 64бит. Я на с++ обычно не пишу ничего, а под рукой с с++ была только студио 2005 и она лептопе с 32 битной виндовс.

Больше часа она может только в дебаге работать. 64 бита критично только на 64битных системах. Важно еще убедится, что твоя версия дает правильный результат. И желательно на всех матрицах. Но ничего, шли что есть, посмотрю, интересно.

Я создал топик на доу на эту тему, чтоб тут не засирать. Велкам туда, dou.ua/...ms/topic/10803

если Вы беретесь написать на джаве быстрее — я специально для Вас точно опишу алгоритм, по которому идет генерация матриц.
самому цікаво, тільки на шарпі. але можна одразу алгоритм всього?
цікаво, наскільки на шарпі буде відрізнятись швидкодія першого, дослівно перекладеного варіанту, і менш читаємого але оптимізованого...

Я создал топик на доу на эту тему, чтоб тут не засирать. Велкам туда, dou.ua/...ms/topic/10803 Там я в комментах сейчас выложу описание своего алгоритма.

Я свою программу пока шарить не могу, у меня оказалось нету обсчета простых чисел на с++. я когда писал на питоне то засекал время исполнения и смотрел какой модуль больше всего тормозит. оказалось что перебор матриц занимает больше всего времени и я решил переписать его на с++ чтобы посмотреть ускорит ли это процесс. Как оказалось секрет в том что я просто нажимал F5 и не менял Debug на Release, поэтому у меня все так долго на с++ работало. Счас все заработало быстро, перебор матрицы 3×4 в режиме Release кажись занял меньше 60 секунд, но это без поиска простых. Сегодня вечером я добавлю поиск простых чисел и вышлю код.

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

Странно, почему в этой теме еще никто не посоветовал тсу SICP?

подозреваю потому что это как «Капитал» Маркса в советское время, все ссылаются, но мало кто асилил.
Я тоже обе — ни асилил. Выжимок, конспектов, ИМХО, достаточно.

SICP — это учебник для стационарной формы обучения.
потраченное время на какие-нить рельсы, окупится куда быстрее в большинстве случаев, чем трата его на SICP. я о — самостоятельном изучении, вечерами, после работы.

Можно даже опрос затеять:
Проработавшие упражнения SICP от начала до конца:
кем, на какой должности, и какими инструментами вы сейчас разрабатываете ПО

Не какого объема у вас стала грудь опосля, а конкретно:
кем и чем работаете сейчас.

SICP вреден для карьеры программиста, т.к. после него так ломает тупо педалить код от забора до обеда на каком-нибудь blub language (а это именно та тренировка задницы, которая обеспечивает долгую и продуктивную карьеру программиста, особенно в аутсорсе), что ты либо делаешь что-то прикольное (недавно приходилось пилить интересный движок на Common Lisp, многие уходят в какой-нибудь хаскель или эрланг), либо идешь в бизнес, в менеждемент, потому что уж если измерять окупаемость времени/усилий, то там все равно выше.

ПС. SICP весь прорешал на схеме где-то на 90%.

так ломает тупо педалить код от забора до обеда на каком-нибудь blub language
Эх, Фаулера на вас нету;)
недавно приходилось пилить интересный движок на Common Lisp,
интересные движки и не на Common Lispе можно пилить :)
но, да, для него желательно SICP пройти
многие уходят в какой-нибудь хаскель или эрланг
понятно
«А я еду, а я еду, за туманом, ...»

Читали недавно очередные слезы хаскелиста, в переводе, на хабре? :)

спасибо за такой емкий ответ :) -

в какой-нибудь хаскель или эрланг
уж послали, так послали :D
либо идешь в бизнес, в менеждемент, потому что уж если измерять окупаемость времени/усилий, то там все равно выше.
думал что это отдельная профессия, причем требующая таких наклонностей, которые плохо совместимы с профессией программиста...
особенно интересно в данном контексте про SICP — он то каким боком к «идешь в бизнес», «в менеджмент»?
SICP весь прорешал на схеме где-то на 90%
Не, конечно, если он изучался во время учебы в MIT — то понятно.
но вот чтобы самостоятельно — для того чтобы потом уйти в бизнес...

Странный ответ у вас получился, как по мне :)

Ничего необычного — в силиконовке биздевов и продакт-менеджеров выросших из программистов полным полно.

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

ну и просто — родились они в США, или в детстве попали :)

так что я бы влияние SICP на «выросших из программистов» — считал нулевым.

что ты либо делаешь что-то прикольное (недавно приходилось пилить интересный движок на Common Lisp, многие уходят в какой-нибудь хаскель или эрланг)
Прикольное, но мертворожденное. Доведенных проектов до успешного продакшна на джаве в интересных областях (бигдата, аи, ml, search) в разы больше чем на лиспах, эрлангах и хаскелях.

от вночі прийшов з лінкедіна апдейт, ще один знайомий з яким працювали пребрався в Київ... ІМХО ще одне підтвердження що у Львові С++ нику нема чтого ловити.

можна ловити джуніорів, заспокійливе, і пиляти свій стартап на плюсах :)))

Ловити джунів треба швидше за Глобала.

якщо їм на відміну від глобала ще платити...

Для AAA игр С++ будет всегда восстребован. Но тогда прийдется угнать трактор

Может все пересядут все таки когда нибудь на какой нибудь раст

4А вот до недавнего времени все в Киеве были, юбисофт и крайтек там еще есть, ассасина говорят у нас делали.

Изучать обязательно стоит. Язык академический и даёт хорошую базу для старта. А вот сильно углубляться — не стоит. Перспективы трудоустройства в Украине, а тем более, во Львове достаточно туманны. Зато, имея базу в с/с++, можно быстро освоить более актуальную технологию.

Перспективы трудоустройства в Украине, а тем более, во Львове достаточно туманны.
Настолько туманны, что на этом сайте есть три вакансии во Львове — три сеньора, но тем не менее. В одной вилка ЗП 2,5 — 5к.
Где нужен сеньор скорее всего есть и джуны, кто ищет, тот всегда найдет.
три вакансии во Львове — три сеньора
скорее всего есть и джуны
Вот это и называется туманные перспективы трудоустройства, тем более, для начинающего.
три вакансии во Львове — три сеньора

вот-вот. при этом в Днепре 6 вакансий, в Одессе-6, в Харькове-9, в Киеве-23

Именно что туманные

Хм, а начинающий свой уровень повышать не думает? Если думает, то вот они перспективы. А если нет — пхп в помощь.
Одному человеку достаточно одной хорошей вакансии, плохих же вакансий на С++ еще поискать нужно.

Конечно думает, но уже в более востребованной технологии.
Можно обсуждать бесконечно, что-то типа:


ПХП г0вно, потому что у меня на С++ красивый код.
Джава отстой, у меня на С всё летает.
С медленное г0вно, я на асме пишу.
Асм фуфло, я юзаю перфокарты и машинные коды, я трушнее.
Но есть факты, популярнее перфокарты не становятся и шанс устроиться на работу «ничтожно мал» ©. Достаточно оглянуться вокруг, оценить рынок, чтобы понять востребованность технологии.

Да что там спорить, просто сравните предложение на этом сайте по джаве/пхп с тем, что Вы привели для С/С++.

Я тут неподалеку как раз сравнивал плюсы против джавы приблизительно 1 к 2 отношение. Не так то и много. Не нужно сразу переводить на асм и перфокарты, если так говорить то С++ уже четвертый десяток пошел, а его все еще используют, и используют не только там, где альтернатив нет.

Академічна мова програмування це Ada. C++, який виріс з коренів C, це більше практична розробка. Там спочатку додаюсь мождивості, а все потім обмірковують, що вийшло :)

Много Вы знаете ВУЗов, где основам программирования учат на Ada?

Я взагалі не знаю, чим зараз займаються ВУЗи. Як на мене, то в галузі IT вони виконують роль техникумів.

Чорт. За срачами я и не заметил, что ТС спрашивал литературу. Исправляюсь.

С чего стартовать, если нет вообще знаний не скажу, вероятно, сгодится что угодно.

После этого рекомендую хорошие легко читающиеся книги Мейерса:
«Эффективный C++»
«Более эффективный C++»
«Эффективный STL»

После них можно почитать Саттера:
«Сложные задачи C++»
«Новые сложные задачи C++».

Также необходимо прочитать что-нибудь по STL, уже не помню что лично я читал. Что-нибудь, где объясняется что такое алгоритмы, итераторы, контейнеры и т. д.

Конкретно для шаблонов стоит почитать Вандервуд, Джосаттис «Шаблоны C++». Есть еще Александреску, но мне он показался скучноватым. Для практики мне было интереснее в Boost поковыряться.

Параллельно со всем этим на досуге стоит почитать Страуструпа «Дизайн и эволюция C++» — объясняет, почему C++ именно такой какой он есть, помогает лучше понять язык.

Все зависит от того, чего вы хотите достичь и в какие сроки. В Java можно иметь 3к через 3 года. У меня 3,5к через 3,5 года, так что все возможно. Но язык не фонтан, в нем много гемора, наследованного из C++. Судя по коментам плюсовиков в треде на плюсах для того надо десять лет, оно вам надо? Потом переучитесь на JS будете пидалить под SPA и иметь те же деньги.

Есть смысл учить то, что будет на пике популярности завтра, а это гибриды типа Groovy или идеал — Scala. Scala — язык будущего.

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

По итогу в плюсах: денег меньше, гемора и усилий гораздо больше. В чем тогда изюм идти на плюсы? ради идеалов и спасения мира? Чтобы показывать всем быдлокодерам и виндузятникам фак как Торвальдс?

Не-не, нет изюма. Совсем нет. Пока вы быдлокодите — я спокоен за свое будущее.

Интересная предъява о быдлокодерстве, судите по себе?

Позвольте, но про три года — это же Ваши слова? Или в джаве всем сеньора дают через три года?

Только тем, кому 23.

Настоящему сеньору всегда 23(ТМ) ;)

Я нигде не писал про сеньйора, это у вас наверное голоса в голове, все же с 1987-го в отрасли.

То есть, Вы, методом исключения джун или миддл, который не пишет говнокод? Чтож, забавно

Капитан Очевидность?

Нет, просто ты как д’Артаньян на белом коне. В индустрии с 87 года, а не понимаешь что у твоих плюсов ограниченая ниша.

У меня сложилось впечатление, что ты пытаешься утверждать что у Джавы ниша неограниченная? Или просто продолжаешь капитанствовать?

Сейчас у джавы намного шире ниша чем у твоих любимых плюсов

В Украине? Возможно. А в мире — я уже предлагал сравнить кол-во сишников и джавистов в ведущих софтверных компаниях, типа МС, Эппл, Гугл, Интел и т.п.

А ты много знаешь людей из Украины которые уехали работать в МС\Эпл\Гугл\Интел ? И сколько среди них плюсовиков ?

Лично? Знаю пару человек. Еще десяток знаю, кто уехал в Genesis. Меня в МС звали два раза, отказался. Из них плюсовики — все.

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

Справедливости ради, мои знакомые С+±ники уехавшие в этот самый мелкософт пишут теперь в основнои на шарпе

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

«работа в майкрософт» — возможно. Но я там не работаю. И не работал.

А при чем тут крутость? я отвечал в первую очередь на

И сколько среди них плюсовиков ?

Был момент, когда мне тоже показалось, что на шарпе многие задачи решать проще. На сегодняшний день я убедился в ошибочности этого предположения. Когда сложность задачи превышает некий порог — начинаешь думать, что лучше бы на плюсах сразу зафигачил и не имел бы этого геморрою.

Макконел по-моему писал что програмист програмирует значительно быстрее и качественноее на том языке который знает :)

У меня с кафедры промэлектроники в одесском политехе что заканчивал, уехало два выпускника — оба элики и на чисто сишные железячные проекты в дженесис, там и застали времена поглощения СТМом (по крайней мере в Торонто в 2008 было так). Часто приписывают сишным вакансиям плюсовость, что не есть правильно. Надеюсь у вас цельный десяток знакомых уехал именно на плюсовые вакансии, а не на железячные.

На плюсовые. Я в Миратехе работал, мы аутсорсили Дженезис. Естественно, не железо.

Так вопрос же по Украине, и конкретно, по Львову.

Если поставить себе потолком Львов... то лучше вообще в банкиры идти.

На вопрос: «Стоит ли заниматься во Львове плюсами?» Вы привыкли отвечать:
«Нафиг тебе тот Львов, езжай в Америку!!»?

Заметьте, я никого не агитировал осваивать плюсы. Мне, навпример, это не выгодно (агитировать). Но я пытался (насколько могу) объективно дать представление о языке. Где кому жить — опять же, не моё дело. Мне, например, в Америке не понравилось.
Резюмируя, я бы сказал, что человек должен поставить себе какую-то глобальную цель, где и как он хотел бы жить и чем заниматься при этом, а потом подбирать способы достижения. Изучение С++ может быть, а может и не быть, одним из таких способов. В моем случае С++ стал именно тем способом, которым я осуществил мечту жить на Средиземном море.

Заметьте, я никого не агитировал осваивать плюсы.
Основополагающий ответ такой: смотря чем ты собираешься заниматься. Если твой потолок — формошлепство — джавы/пхп будет достаточно. Освободившееся время можно посвятить зеркалкам и велику. А если есть истинно программерское желание _владеть_ программированием — без плюсов никуда.
Мммм, ну ок 8)

И что не так? Я не вижу здесь агитации. Кому-то вполне комфортно быть ремесленником, кому-то — художником. И крутители отверток тоже нужны, куда ж без этого. В этом нет ничего зазорного. Более того, как я вижу, таких — большинство. И это, опять-таки — нормально. Не могут все быть Моцартами, кто-то должен и на полях вкалывать.

Пафосно то как. С++ это такое байтослесарьство. что некоторые девелоперы которые байтослесарят считают что они боги

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

Ааа, действительно проблема не в агитации, а в количестве ЧСВ 8)

Но как тогда объяснить, что даже те, кто могут быть, в Вашей терминологии Моцартами, предпочитают ими не быть и берут в руки отвёртки?
Может есть крутители отвёрток и те, кто эти отвёртки для них собирают? Как Вам такая аллегория?

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

У меня такое впечатление, что моё ЧСВ как-то сильно уязвляет Ваше собственное. Отчего бы это?

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

Вы действительно думаете что построение архитектур распределённых кластерных систем, работа с большими объёмами данных, огромным трафиком — это копание от звонка и не тяжкий труд? Считаете что Google, Facebook, Apple, Microsoft ошибаются, что не пишут всё на плюсах?
Вы, видать, слабо представляете себе что такое делать огромный продукт, выходящий за рамки одного приложения, большими командами. Плюсы сосут всегда, когда важна не скорость работы приложения, а скорость его разработки. И только недалёкий человек может с этим спорить. А с Моцартами Вы повеселили, конечно, так и представляю себе творца в дебагере, матерящего г0внокод коллеги.

Я думаю у коллеги просто последняя стадия заболеваний «плюсы — золотой молоток» и «вы все гвно, а я — карамелька».

Я тоже не всё пишу на плюсах. Кое что на шарпе.Скажите, доктор, я не безнадежен?

Вот поэтому я не хотел расшифровывать. Вы нихрена не поняли. Это было вполне предсказуемо

Вы ведете себя как 23 летний senior с ОР 2 года, словивший звездочку. Сравнивать себя с Моцартом это нужно обладать непомерным ЧСВ.

В каком месте я сравнил себя с Моцартом? Цитату, пожалуйста. Это Ваше уязвленное ЧСВ нашептывает, не иначе. Я такой же быдлокодер, как и Вы

Более того, как я вижу, таких — большинство. И это, опять-таки — нормально. Не могут все быть Моцартами, кто-то должен и на полях вкалывать.

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

. А в мире — я уже предлагал сравнить кол-во сишников и джавистов в ведущих софтверных компаниях, типа МС, Эппл, Гугл, Интел и т.п.
МС и эпл, это типа не джава шопы очевидно, и там на сишарпе и обжективси пишут наверняка немало. А вот по гуглу давай, сравнивай, сколько там джавистов а сколько цпп.

Не хочется ванговать, но ты, такими темпами, и жизнь прожить не успеешь, не говоря про ум нажить

Ну как минимум плюсы интересны. Писать на яве после плюсов — как будто прогуливаться надев смирительную рубашку. Замечу, к слову, что еще более простой Objective-C скучным не кажется, а наоборот мощным и лаконичным.

Як на мене, Jаva дуже аскетична мова. Я хочу колупатися викруткою у вусі, але вона не дає. Мені просто більше подобається C++, навіть чистий С. Гроші не так важливі.

Scala — язык будущего.
А как в скале выделить память в стеке?

Через 10 лет будет 10к?

Относительный понятия вроде «много», «мало», «популярный», «не популярный» и прочие здесь часто всплывали в контексте использования языков программирования и зарплат писателей на них. Один отличный преподаватель в ВУЗе доходчиво объяснил что инженеру оперировать такими понятиями не положено, все познается в сравнении конкретных цифр.
Сходил я только что в раздел «Вакансии» на ДОУ, немного цифр:
С++ - 50 вакансий, число без контекста не понятное совсем
Java — 94, больше чем С++, но уже не такой страшный абстрактный разрыв
C#(будем считать по .NET) — 111, у нас локальный лидер, тоже вдвое больше чем на плюсах
Phyton — 35, меньше плюсов
Ruby — 28, еще меньше
Php — 123, добавил для статистики, для красного словца «на 25% больше вакансий, чем по Java»
Android — 47, тут я задумался, что это может пересекаться с Java, но потом вспомнил про NDK, так что все не так однозначно.Еще можно мак приплести, там не обжектив и плюсы могут быть, тоже не все однозначно, эти цифры просто для наглядности.
И ДОУ в том же разделе говорит, что по статистике средняя ЗП у разработчиков на С++ составляет $2000 против $1900 на Java. У программистов на шарпе ЗП совпадает с плюсовиками, возможно все дело в букве С. Кто знает.

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

Лучше C#, там и web и gamedev и ентерпрайз и мобайл. Т.е. большой рынок труда, можно найти интересные задачи. Фактически, зная один язык можно освоить несколько стеков технологий и быть широким специалистом.

Лучше C#, там и web и gamedev и ентерпрайз и мобайл. Т.е. большой рынок труда, можно найти интересные задачи. Фактически, зная один язык можно освоить несколько стеков технологий и быть широким специалистом.
Это так теперь завлекают ничего не подозреающих джунов в мир формошлеперства?

Лучше работать формошлепом чем быть безработным.

Деньги не пахнут и все такое? А когда все формы нашлепают и это станет не модно и перестанет хорошо оплачиваться?

А когда все формы нашлепают
А когда весь код напишут — и программисты станут вообще не нужны?

Заводы по сжиганию фотографов перепрофилируются.

Вооот, и на этот завод нужны будут новые формы, для ввода фамилий новых сжигаемых (наверное с сишников начнут ;))

Там уже все есть, только вывеску поменять, это в конфигах.

Проясните насчет мобайла, разве там кроме Xamarin и Mono есть другие варианты для C#?
Ну и по геймдеву если шарп — то только юнити :)

А, ну да, популярность и востребованность этой платформы прямо таки зашкаливает.

Ты спрашивал про существование вариантов или про их популярность?

На ДОУ одна вакансия, вот уж где действительно туманная перспектива.

по геймдеву еще xna/monogame, порт cocos на с# и еще куча менее известных но весьма неплохих как delta engine, SunBurn и прочих что выдаст гугл при запросе c# game engine.

С XNA у Microsoft как то не очень понятно все, ворде бы сворачивают лавочку, а значит поддержки в дальнейшем не будет скорее всего. Да и другие движки мелковаты, кокос на с++ получше будет чем на шерпе.

для хорошей игры не обязательно нужен крупный движок. «Мелковатые» име.т свой спос и свою аудиторию. Вместо XNA используй monogame — будет профит. да и пока у людей есть XBox360 — XNA не умрет.
А так в будущем поддержка всего ныне существующего будет прекращена.Я просто пояснил какие сейчас я знаю альтернативы с использованием C# в геймдеве, а обсуждать что да как и что будет и для чего использоватьт — это тема другого топика и здесь неуместно. Вопрос то изначально про плюсы)

Я просто пояснил какие сейчас я знаю альтернативы с использованием C# в геймдеве
Согласен, а я просто хотел сказать что эти альтернативы не многочисленны :)

Если не хотите тратить жизнь на тупое формошлепство — учите. Только на C++ можно столкнуться с интересными задачами.

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

да вы что, я слов таких не знаю, не говоря уже о понимании что это и зачем это нужно) хотя не думаю что ТОЛЬКО на с++ попадаются интересные задачи .

Только на C++ можно столкнуться с интересными задачами.
— це ви про захоплюючі години із valgrind/gdb в пошуках причин чергового протікання пам’яті, дедлока або сегфолта?

Ну valgrind/gdb намного удобней поделок типа vs. Это с одной стороны. С другой же стороны в плюсах нет дурных фитюлек типа garbadge collector-а, которые пищат, кушают память и не работают.
И можно нескромный вопрос. Как вы собираетесь реализовать нормальную многопоточность без потенциальной возможности деделока? Ах да... Я забыл. Java. Каждый работает со своей копией. Да-да, производители серверов в восторге.

в плюсах нет дурных фитюлек типа garbadge collector-а,
— насправді, shared_ptr (частина стандарту мови!) реалізує reference counting, який є однією із форм garbage collection, яка лише дозволяє оптимізувати latency збірки, але загалом не дає ніяких детерміністичних гарантій.
Да-да, производители серверов в восторге.
— ну да, multicore CPUs та NUMA це все маркетинговий хайп, а майбутнє за розігнаними до 100500 ГГц суперпроцесорами із охолодженням на рідкому гелії.

Нормальна багатопотоковість це Erlang/Akka: актори і іммутабельність.

— насправді, shared_ptr (частина стандарту мови!) реалізує reference counting, який є однією із форм garbage collection, яка лише дозволяє оптимізувати latency збірки, але загалом не дає ніяких детерміністичних гарантій.

What??!!

Линус Торвальдс считает вас за г..но, если вы пишете на С++

К сожалению, Линус такой человек, он сначала считает тебя за говно, а только потом интересуется на чем ты пишешь.

Еще один саундтрек www.youtube.com/...h?v=XHosLhPEN3k

Саундтрек к дискуссии www.youtube.com/...h?v=wSpavPGSlQc
П.С. Сорри, если баян;)

старый-старый баян, но TF2 best game ever )

Играл в TF1, TF2 пропер исключительно своим фансервисом;)

Ты переформулируй вопрос: есть ли хоть один программер, который пожалел о том, что изучил/освоил С++. За себя сразу отвечу — ни секунды не жалею. Возможно, войти в профессию сейчас проще с других языков, я не знаю. Я входил в 1987 году с ассемблера вообще. Потом освоение С дало рывок в производительности, потом С++ — еще один рывок.

Я входил в 1987 году с ассемблера вообще. Потом освоение С дало рывок в производительности, потом С++ — еще один рывок
А вот тут как раз есть основополагающий вопрос:
Нужно ли учить технологии в порядке их возникновения (машинные коды ->асм->С->C+±>java) или хватит выучить «вершину».

Павел, в то время компов для отладки не было. Первый свой микропроцессор отлаживал в машинных кодах с осциллографом, а года через два появилась первая "микро«-ЭВМ, Электроника −60, там пошел уже ассемблер. Ну а с появлением первой персоналки мы начали баловаться на борландовском Турбо С. Как видите «вершину» ухватить там не получалось

Я про сегодняшний день говорю :)

1987 году с ассемблера вообще.
а зачем цитируешь 87 год?
сегодняшний день
Все зависит от задач, для видеобработки мне хватает вершины, т.е. С++. Для драйверов используют и ассемблер. Ну а джаву зачем ты влепил на верх, я не знаю.

Просто в треде смешивают системное и прикладное программирование. Для второго ниша у C++ действительно довольно узкая: ИМХО геймдев (и то доля сокращается благодаря Unity и т.п.), обработка сигналов (в том числе аудио/видео) и кросс-платформенные десктопные приложения на Qt

А с системным программированием другая беда — его далеко не так охотно аутсорсят

Мой ответ — «вершины» не хватит.
Лучше видеть во всем базовые принципы, чем Java (подставить любое другой ЯП высокого уровня).

Основополагающий ответ такой: смотря чем ты собираешься заниматься. Если твой потолок — формошлепство — джавы/пхп будет достаточно. Освободившееся время можно посвятить зеркалкам и велику. А если есть истинно программерское желание _владеть_ программированием — без плюсов никуда.

От формошлепства можно получать свой кайф и достигать в нем невиданных вершин;)

А без машинных кодов? А без знания железа? А без знаний квантовой физики? А черт, квантовую физику вообще никто не знает наверняка.

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

Без машинных кодов — легко. О железе нужно хотя бы общее представление

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

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

Большинство алгоритов давно придумано
ru.wikipedia.org/wiki/Алгоритм
Да, конечно, большинство «программистов» реально являются трансляторами продукт манагера (т.е. свои алгоритмы не разрабатывают). Но те, кому повезло, таки придумывают.

Ну а насчет универсальности — вы знаете хоть одну универсальную вещь, которая была бы лучше специализированных?

Да, конечно, большинство «программистов» реально являются трансляторами продукт манагера (т.е. свои алгоритмы не разрабатывают).

Возможно, Вы как-то по-особенному понимаете термин «алгоритм». Как по мне — определение, является ли данное число простым — это алгоритм. Есть алгоритмы сортировки, поиска, упорядочивания, распределния памяти, и т.п. А парсинг XML — это, например, не алгоритм.
В своей работе мне изредка таки приходится изобретать свои алгоритмы, но это редко. А вот всяческие парсинги и реализации протоколов — на каждом шагу.

Ну а насчет универсальности — вы знаете хоть одну универсальную вещь, которая была бы лучше специализированных?

Это вообще мимо. std::map, например, достаточно универсален. Но есть и std::hash_map, если надо. Так что и специализированные алгоритмы разработаны и реализованы достаточно обширно.

Возможно, Вы как-то по-особенному понимаете термин «алгоритм».
Статью на вики читали? Поверьте, не я автор :)
В своей работе мне изредка таки приходится изобретать свои алгоритмы, но это редко. А вот всяческие парсинги и реализации протоколов — на каждом шагу.
В переводе на нормальный язык, вам изредка приходится разрабатывать свои алгоритмы, большую часть времени вы реализовываете чужие.

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

В понимании Вики любую программу (кроме ИИ) можно назвать алгоритмом. В этом смысле, да, я тоже разрабатываю алгоритмы.

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

Ну если назвать описание протокола алгоритмом, то да. Надеюсь, это потешило Ваше ЧСВ.

Отлично, наконец-то мы сошлись в терминологии.
Остался вопрос — чем универсальное лучше специализированного?

Ничем не лучше. Иногда — хуже. Но зачастую вполне хватает универсального. Пример std::map я уже приводил. Строчить своё мап под каждый тип ключа смысла не имеет в подавляющем большинстве случаев, тк стандартный мап будет, как минимум, не хуже.

А, я перечитал и понял к чему Вы спросили про универсальность. Это Вы из-за того, что я плюсы назвал наиболее универсальным выбором? Так тут другого рода универсальность. Напишите, например, на си-шарпе сервис, который компилится под винду и распберри пай. Получится? А я этим занимаюсь на плюсах без малейших проблем.

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

Raspberry PI service application. Все слова ключевые для желающих рассказать мне про мощь и вездесучность джавы.

круто. уели.
«отсутствие альтернатив» != универсальность.
это монополия, только и всего.
напишите код под браузеры. на С++. например, под IE5 и последний хром. Чтоб блокировал поля формы после нажатия на соответствующий submit и препятствовал повторной отправке.

Я устал объяснять отличия и прелести процесса разработки автомобиля от его отверточной сборки.

отдохните и попробуйте завтра.

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

)) Вы серьёзно в это верите?

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

А ты стал? Чё меряться будем?

Если твой потолок — формошлепство — джавы/пхп будет достаточно
-
это поистине «шедевр».

Зарплатой? Виллами на Кипре? Количеством продаж в мире? Выбирай любое. Предлагай свое. Мой профайл видно, не? Про тебя же, педро, мне пока ничего не известно, а гуглить ломы.

У меня больше, поэтому и под псевдонимом, чтоб таких как ты не «снесло» от зависти.

Да-да, с андроида на энтерпрайз, а то ролс заправлять не хватает. Мне гуглить лень, но я не тупой. Завидовать такому злобному 23-х летнему сеньору мне как-то даже неуместно.

Да, мы, 23-х летние сеньоры, такие.

Мне гуглить лень, но я не тупой.
- да ладно.

Ну вот как-то не принятно с доу посылать найух, но ты допросишься.

истинно программерское желание _владеть_ программированием
Можна ли увидеть ваше владение програмированием на гитхабе?

Нет. Я разрабатываю коммерческий не-опенсорс продукт. По контракту не имею права. Продукт можно увидеть, есть бесплатная версия.
Что можно увидеть: в 2010 году участвовал в интелловском конкурсе многопоточного программирования. Занял два вторых места. archie314, код доступен для скачивания.
software.intel.com/...winning-entries
software.intel.com/...winning-entries

>>Apprentice Level
>>Second Place Winner: archie314
>>Prime Array

а точнее что за задача была?

Охм, они потерли условия задач... а я так сходу не вспомню. Разбор сорсов вспомнить также не сильно помог. Что то типа подсчитать кол-во простых чисел, которые получаются в результате суммирования горизонталей/вертикалей/диагоналей матрицы MxN для всех возможных перестановок и выдать варианты с наибольшим их кол-вом.
Завтра в офисе поищу на серваке, мож таки найду точно сформулированное условие.

А, вот, запустил и вспомнил :)
Даны размеры матрицы M x N. Заполняем всеми возможными комбинациями из цифр 1..9 и подсчитываем все простые числа, составленные из цифр по горизонтали, вертикали, диагонали и обратной диагонали любой длины с любого места. Выдаем вариант(ы) с наибольшим кол-вом простых чисел ну и сами числа тоже. Побеждает быстрейший :)

условие не понятно :(
как мы заполняем матрицу, что за «все возможные комбинации из цифр 1..9»?
можно на примере заполнения матрицы 3×4?
числа составляются из цифр при помощи сумирования или конкатенации(да, для решения это не существенно)?
«прямая и обратная диагональ» для числа в позиции (2;1) это как? (2;1) + (1;2) — обратная, а (2;1) + (3;2) + (4;3) — это прямая?

можно на примере заполнения матрицы 3×4?

Вариантов заполнения такой матрицы — 5,029,516,800
Правильных ответов для нее — 3.

Maximum number of primes: 38

----- 0 -----
2 4 6 7
8 3 1 1
5 3 7 9

Primes: 2 7 3 5 3 7 67 83 31 11 53 37 79 43 61 17 71 19 23 41 61 83 37 19 17 53 31 71 467 311 379 433 617 719 419 317 2467 8311
----- 1 -----
8 4 6 7
2 3 1 1
5 3 7 9

Primes: 7 2 3 5 3 7 67 23 31 11 53 37 79 43 61 17 71 19 83 41 61 23 37 19 17 53 31 71 467 311 379 433 617 719 419 317 8467 2311
----- 2 -----
5 6 8 3
2 7 1 9
4 3 1 7

Primes: 5 3 2 7 3 7 83 71 19 43 31 17 67 73 11 97 61 89 23 71 17 13 47 31 19 683 271 719 431 317 673 811 397 571 617 313 5683 2719

числа составляются из цифр при помощи сумирования или конкатенации

конкатенации.

«прямая и обратная диагональ»

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

задорная задача.
ограничений по памяти — никаких?
интересно еще, как вы отбросили(если отбросили) при генерации матриц повороты текущей матрицы(оптимизация в 4 раза).

Ограничений по памяти и ЯП не было.

как вы отбросили(если отбросили) при генерации матриц повороты

Я не отбросил. Не догадался. Поэтому второе место

не догадался что матрицы будут повторяться ??? афигеть )))

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

окей.
а как у вас было?
мой наивный вариант:
1)решетом Эратосфена генерим список простых чисел от 1 до 10^(min(M,N)) — 1.
2)генерим очередную матрицу.
3)генерируем список с конкатенированными числами.
3а) для оптимизации — генерим максимально длинную строку в текущем положении(то есть, берем сразу весь второй столбец) и генерим её подстроки и реверс её подстрок.
4) упорядочиваем список сгенерированных чисел(можно уникализировать на этом этапе, но это ничего не даст)
5) находим пересечение с предрассчитанным решетом Эратосфена — метод деления пополам для упорядоченных массивов даст нормальную скорость. отбрасывать дубликаты можно и здесь.
6) считаем количество. сравниваем с текущим победителем(другой матрицей с уже подсчитанным количеством простых чисел), запоминаем, если больше.
7) после матрицы, состоящей из всех "9"ок, можно говорить ответ.

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

Убрать дублирование матриц при поворотах можна формированием правой половины или нижней половины матрицы используя цифры 0-5
не прокатит. там же не просто перестановка элементов — они потом конкатенируются
9 8 1 2
7 6 3 4
и
9 1 8 2
7 3 6 4
дают сильно различные наборы: например, 981 из первой отсутствует во второй, а 91 — есть только во второй.

в вашем случае
9 8 1 2
никогда не получит строки
2 1 8 9 потому что цифры 8 и 9 отсутствуют справа как класс.

я бы залепил функцию проверки чисел на простоту

А можно попобробнее с этого места?

ну во первых чтобы оно не заканчивается на 0 на 2 на 4 на 6 на 5 на 8, осталось 1,3,7 и 9
потом можна сложить по быстрому все цифры что бы узнать делится ли оно на 3. потом что бы число не входило в уже найденные простые числа, после этого стандартная процедура перебора простых чисел до N/2 через i*2+1. последнюю операцию я так понимаю можна параллелить поделив N на количество процессов.

Проверка на четность — очевидно. Насчет пятерки — согласен. А вот N%3 будет быстрее, чем суммировать цифры а потом опять-таки на три делить.

перебора простых чисел до N/2

до sqrt(N), вообще-то.

ну %3 это я и сам понял, только испралять поздно. перебор до корня — учту. Счас запилил перебор чисел на питоне. до 100к занимает 19 сек, до лимона пока не вернулась прога. что с параллелием ?

что с параллелием ?

Не понял вопроса

И параллелить проще и выгодней генерацию и обсчет матриц

7) после матрицы, состоящей из всех "9"ок, можно говорить ответ.

Там было какое-то условие насчет повторяемости цифр. К сожалению, точно не вспомню. Все девятки по этому условию были невозможны.

1)решетом Эратосфена генерим список простых чисел

Макс размер по условию был 10×10. Столько простых чисел Вы будете генерить неоправданно долго, да и их поиск (пересечение?) заметно усложнится.

В целом, у Вас много интересных идей. Осталось придумать как это красиво распараллелить (время выполнения засекалось на 64-х ядерной машине)

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

Макс размер по условию был 10×10
то есть, от 1 до 10 значных чисел? уверен, не долго.
Столько простых чисел Вы будете генерить неоправданно долго
та ну, тестировать числа на простоту — это гарантированно sqrt(X) / 2 делений на каждое число из каждого варианты матриц. Поиск для этого одного числа в массиве — log2(<длина списка простых чисел от 1 до Х>). А генерация списка на фоне генерации матрицы вообще теряется.

вот бы еще дубликаты матриц обходить :(

В целом, у Вас много интересных идей.
спасибо. расскажете, если получится ускорить ваше прошлое решение?
это гарантированно sqrt(X) / 2

Не совсем так. Существуют еще тесты на простоту.
Я же генерил от 10000 до 80000 простых чисел (в зависимости от заданной макс длины), поэтому большая часть проверок (коротких чисел существенно больше на неквадратных матрицах, например) происходила поиском в таблице. Поиск еще тоже можно было бы оптимизировать, но я ограничился применением SSE для того, чтобы выполнять четыре сравнения за раз. Числа до 227 вообще за две-три команды сравнения давали гарантированый ответ.

вот бы еще дубликаты матриц обходить :(

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

расскажете, если получится ускорить ваше прошлое решение?

Хмм... Задумался, что давно не брал я в руки шашек :)) Если возьму — расскажу :)

Плюсуюсь к просьбе посмотреть условие повторяемости в коде — это может сильно сократить перебор и повлиять на скорость решения.

Ох вы ленивые, там же вверху были ссылки. Вот конкретно ссылка на файл software.intel.com/...4_2nd_Place.zip

спойлерить себе не охота было. Эх, буду читать одним глазом.

Мне на почту оно упало в развернутом виде (линк тоже не работает). Так что вот текст:

Problem Description: Write a threaded code that finds an example of a prime array that has the maximum number of primes hidden within it for a given array size. The following three restrictions for constructing arrays and counting primes must be observed:
1. Multiple digit prime numbers can only be constructed by reading consecutive numbers from top to bottom (vertical) or left to right (horizontal and diagonal). In the 2×2 prime array example given above, this would disqualify 31, 37, and 97 from being counted in the total. The number 73 is counted since it is read diagonally from left to right.
2. Only the digits 1..9 are to be used.
3. The total number of instances of a given digit within an array can be no more than one greater than the number of times any other digit is included. For the 2×2 case, a digit cannot appear more than once. In a 3×3 case, the following example is not considered a legitimate instance since the ’1′ digit appears twice, which is two more times than ’8′ appears (zero times).
| 1 1 3 |
| 7 5 4 |
| 9 2 6 |
Besides finding one example with the maximum number of primes that can be found contained in the array, a count of the number of other array configurations that also have the same number of primes must be computed.
Input: Two numbers will be given on the command line of the application. These will correspond to the number of rows and columns, respectively, of the array to be constructed. The range of values for both row and column values will be 1 to 10, inclusive.
Output: Output will be to stdout and must include one example of an array of the given size that contains the maximum number of hidden primes, the number of primes found in the array, a list of the primes that can be found within the printed array, and the number of total array configurations that have this maximum number of primes.
Output Example (from input ’3 3′):
Example of the 3×3 case
8 2 3
4 5 7
6 1 9
20 primes are hidden in the array
{2 3 5 7 23 61 19 41 59 53 17 37 79 823 457 619 251 379 859 653 }
1 total array configurations share this maximum number of primes
Timing: The total time for execution of the application will be used for scoring. (For most accurate timing results, submission codes would include timing code to measure and print this time to stdout, otherwise an external stopwatch will be used.)

8 часов уже пишу на питоне, матрицу деребанит любого размера, простые числа выискивает любой длинны, осталось добиться что бы формировать матрицы по условиям. 2а часа пытаюсь формировать эту матрицу путем полного перебора — уже и рекурсию пробовал на строки и рекурсию на прогон строк — не идет )))) завтра продолжу. Оптимизировать поиск простых чисел используя уже найденные простые числа не вышло, иногда число 61 появляется раньше числа 31 и естественно проганять деление 31 на найденные ранее числа не выходит. поэтому остался только перебор N*2+1 и отсеивание.

Как ты там выше говорил?

не догадался что матрицы будут повторяться ??? афигеть )))

Вот тебе и карты в руки. По условиям интеловского конкурса — неделя времени

я закончил программку на питоне, можна меряться скоростями. Оптимизировать как оказалось нада не поиск простых чисел — там все просто, а перебор матриц что бы они удовлетворяли необходимому условию. сколько времени у вас общитывает 3*4 и 5*5 ?

Мою скомпилить сможешь? Скомпили и сравни

На Intel Core 2 Duo

Horizontal size: 4
Vertical size: 3
Number of possible matrices:
5029516800.000000

Found: 3 results in 1035.199314 seconds
Maximum number of primes: 38

----- 0 -----
2 4 6 7
8 3 1 1
5 3 7 9

Primes: 2 7 3 5 3 7 67 83 31 11 53 37 79 43 61 17 71 19 23 41 61 83 37 19 17 53 31 71 467 311 379 433 617 719 419 317 2467 8311
----- 1 -----
8 4 6 7
2 3 1 1
5 3 7 9

Primes: 7 2 3 5 3 7 67 23 31 11 53 37 79 43 61 17 71 19 83 41 61 23 37 19 17 53 31 71 467 311 379 433 617 719 419 317 8467 2311
----- 2 -----
5 6 8 3
2 7 1 9
4 3 1 7

Primes: 5 3 2 7 3 7 83 71 19 43 31 17 67 73 11 97 61 89 23 71 17 13 47 31 19 683 271 719 431 317 673 811 397 571 617 313 5683 2719

вообщем я отстаю. Вначале я запилил полный перебор матриц 3×4, каждая матрица проверятеся на то что цифры в ней повторяются как по условию задачи (разница в количестве цифр не больше 1). Если цифры повторяются как нада, то матрица идет на поиск простых чисел. Нада сказать что матрицы работали плохо — я не осилил их рекурсивное заполнение всеми цифрами поочереди. Поэтому я отказался от матриц и заменил их одним большим массивом (для 3×4 массив будет из 12 позиций). Массив я смог запилить с рекурсией и у меня пошел перебор всех цифр от 0 и 999999...двенадцать девяток в массиве. Оказалось что перебрать массив на 12 позиций всеми цифрами занимает дофига времени особенно раздражали ситуации когда массив доходил до вида 0111ххххххх Так как для 12 цифр в матрице единица не может повторять 3 раза, то все последующие матрицы аж до 0112хххххх — это все бесполезный перебор который занимает часы. Я сделал оптимизацию — поиск повторяющихся цифр если они повторяются больше дозволенного и увеличение крайней правой цифры на 1. Даже с таким оптимизирование матрица 3×4 считалась десятками минут и я ниразу не дождался полного пересчета. Сравнив с вашим ответом в 10 минут я решил все нафиг переписать и создал две рекурсивные процедуры , первая создает возможные комбинаци цифр в матрице например (1,1,1,1,1,1,1,1,2,2) означает что в матрице будет 1 ноль, 1 единица, 1 двойка, 1 тройка.....2 восьмерки 2 девятки. В рекурсии двоечки переезжают в правою сторону таким образом, в конце концов последняя комбинация это 2 нуля, 2е единицы и остальные цифры по одной. Все матрицы созданные их этого набора цифр будут 100% подходить под условия из задачи. Вторая процедура формирует матрицы из предложенных цифр и рекурсивно проганяет все комбинации с таким набором цифр. В итоге я больше не проверяю матрицы на соответсвие условиям задачи, все мои матрицы подходят. Я только расставляю цифры во все возможные комбинации и считаю количество простых чисел. Даже с таким видом оптимизации (правда может это усложнение), пересчет всех матриц займет часы. Возможно если бы я написал это все на С++ то оно бы заработало быстрее чем на питоне, но у меня под рукой только питон. Вообщем я сдаюсь и признаю что вы гуру.))))

Да, почему-то не нажимается. Можно копипастить в адресную строку — так работает.

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

Давайте посчитаем, за 7 лет существования гитхаба `

опытные ныне программисты
` не законтрибутили ни одну из опенсорс библиотеку которую использовали, ни сделали вклад в опенсорс сообщество. Не хотел писать но ... таким опытным програмистам как раз только по уровню ресурс хабра.

Вклад в опен-сорс сообщество — ИМХО показатель уровня альтруизма и, возможно, желания «показать себя», и не более того. К тому же, лет 10-12 назад, по себе помню, такой шумихи вокруг опен сорса попросту не было. Все это движение, в основном, тогда крутилось вокруг Линукса / GNU, и «варились» в нем люди с соответствующими интересами в программировании.

Java это не вершина, это болото. Хаскель, может быть.

Споры о преимуществах одного из языков — разновидность споров об золотом молотке или серебряной пуле.
У тру инженеров все — инструменты и все — существует под конкретную задачу.

С++ незаменим там где нужна высокая производительность или есть требования по объему памяти — OS, Embedded, графика и т п.
Например, интерфейсы к торговым платформам на Java/С# не пишут.
С другой стороны — писать прикладные приложения с о 100 формами и 1000 отчетами на С++ - явное расточительство.

Знакомые С++ ники не плачут и уверенно смотрят в завтрашний день.
Добавлю, что С++ников любит в Украине Samsung и реаллокейтит в Корею особо отличившихся.

Нужно определиться — какие задачи нравятся именно Вам. Сайтостроение, приложения для мобилок, прикладное программирование (автоматизация бизнес процессов) или нечто системное/математическое.
Исходя из этого — выбирать набор языков/технологий для изучения.
Попутно лучше изучать теорию, на которой все базируется — OOP, паттерны и т. п.
Фаулер с Хантом и Макконелом — лучшие друзья любого программиста.

Деньги, интерес и уважение есть везде, основной критерий — не устать от профессии, это плохо сказывается на карьере и производительности.

П.С. Вчерась видел вакансию, где требовалось знание C# и С++ в одном флаконе на достаточно высоком уровне. Есть и такой спрос;)

С++ незаменим там где нужна высокая производительность или есть требования по объему памяти — OS, Embedded, графика и т п.
высокую производительсть можно достигнуть много на чем, главное уметь и с обратной стороны если не уметь, то и на с++ не получится высокая производительность, а что касается памяти, не вижу особой разницы очистить руками память сразу или сборщик мусора соберет через пару секунд, если устройство особо памяти не имеет, то да, нопод такое наверное мало на чем писать вообще можно
Например, интерфейсы к торговым платформам на Java/С# не пишут.
уверяю тебя что пишут, знаю не понаслышке
уверяю тебя что пишут, знаю не понаслышке
Первый индексировщик Гугл был написан на Java + Python и че?
И на Excel VB пишут, и работает, и задачи решает. Смотря какие критерии нужны.
не вижу особой разницы очистить руками память сразу или сборщик мусора соберет через пару секунд
Сразу минус в карму на собеседовании;)

Минус в том, что момент очистки памяти сборщиком мусора конкретного объекта зависит от многих факторов, следовательно — практически непредсказуем.
Unmanaged ресурсы лучше освобождать явно, также особенности работы сборщика мусора нужно учитывать при решении проблем с памятью и производительностью.
П.С. Я прошел ваше собеседование, берете на работу?;)

Зачем же тогда эти подлые люди придумали сборщики мусора и пихают их во все современные ЯП?

подлые люди придумали сборщики мусора и пихают
Подлые люди высвобождали временные ресурсы автоматизаторам ООО Вектор для проникновения в суть бухгалтерской проводки.

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

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

— Прикладникам в основном необходимо считать бизнес логику, а не ресурсы.
Ресурсы — купите новый сервер, он дешевле чем зарплата разработчиков. Отличный подход для своей задачи.
— Подход, описанный в нетленном баяне «Мне не хватало байта» также хорош для своей задачи.
— Говнокодить — отличный подход для прототипирования.
и т. п.

Есть задача с критериями — выбираем средства под нее.
А в спорах из серии «чем теплое лучше мягкого» пусть участвуют пусть те, кто не видит разницы между ними.

П.С. Дык берете, или еще десяток вопросов?;)

Гранд мерси, зайду на днях;)

Минус в том, что момент очистки памяти сборщиком мусора конкретного объекта зависит от многих факторов, следовательно — практически непредсказуем.
Unmanaged ресурсы лучше освобождать явно, также особенности работы сборщика мусора нужно учитывать при решении проблем с памятью и производительностью.
не нужно отождествлять финализацию объекта с освобождением памяти
не вижу особой разницы очистить руками память сразу или сборщик мусора соберет через пару секунд
Разберитесь со своими терминами, тогда поговорим, а то понимаешь бардак в расположении(тм)

руками это на тех языках где сборщик мусора не предусмотрен по умолчанию, например с++, а там где сборщик мусора, это язык в котором он предусмотрен, например c#, да бардак есть :) но чет понадеялся что это будет понятно

Бардака стало больше. Несколько наводящих вопросов
— А сборщик мусора сам очищает память?
— И финализатор не вызывает?
— В каком методе должны освобождаться unmanaged resources?
— Можно ли в C# напрямую вызвать финализатор?

ну вот так я и знал, сча отвечу и бардака станет еще больше, как и вопросов
1) неправильный вопрос, но ты ждешь на него ответ «нет»
2) вызывает
3) Dispose(bool)
4) нельзя

Ура! Не все так плохо, как мне казалось. К тому же в споре родилась некоторая истина.
Но пришлось завдавать наводящие вопросы, ибо лишняя горячность, спешка и апломб мешали понять вашу мысль.
Жму мужественную руку, всего хорошего;)

Если быть точным, то
2. сборщик мусора не всегда вызывает финализатор, даже если он у объекта есть
3. спорно, подходит для случая, когда срок жизни неуправляемого ресурса совпадает со сроком жизни управляемого объекта, но это не всегда так.
4. финализатор напрямую вызвать можно.

2. вопрос стоит вызывает ли сборщик мусора финализатор
3. один класс — одна задача, вот у класса, который содержит неуправляемый ресурс задача создать беспроблемное пользование этим ресурсом, нет ресурса — задача не имеет смысла и класс больше не нужен
4. «напрямую» — это через точечку у экземпляра класса?

2. Да, это следующий уровень, SuppressFinalize.
3. Ничто не мешает вызвать Dispose руками задолго до окончания времени жизни управляемого объекта
4. Reflection? Я угадал?;)

Минус в том, что момент очистки памяти сборщиком мусора конкретного объекта зависит от многих факторов, следовательно — практически непредсказуем.
А нафига программисту вообще парится когда там запускается сборщик мусора?

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

Ахаха, а если подвисает на пару милисекунд только?

Дык светлейшие гуру и не рекомендуют париться до вознкновения highload и связанных с ним проблем.

А какие именно проблемы у джавки с GC на хайлоаде?

Я лично придерживаюсь принципа — если что-то существует, то есть и проблемы и границы его использования.
А на ваш вопрос(ибо сам не в состоянии) отвечает гугл, например вот так:
blog.mgm-tp.com/...lection-tuning

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

В некоторых условиях нездоровая тяга становится здоровой. В большинстве случаев можно полагаться на встроенный сборщик, не забывая о неуправляемых ресурсах. Но знать — нужно, иначе вырождение в карго культ вместо инженерной работы.
«Оптимизаторов», использующих побайтовый сдвиг вместо деления на 2 в прикладном ПО я сам не перевариваю;)

«Оптимизаторов», использующих побайтовый сдвиг вместо деления на 2 в прикладном ПО я сам не перевариваю;)

Это с асма идет. Там idiv ecx совсем не то же самое что sar eax, 1
Просто привычка, я думаю.

Не только с асма, древние компиляторы с C/C++ тоже не всегда умели оптимизировать целочисленное деление на степени двойки. Ну а дальше, как говорится, «мотоцикл продал, а привычка осталась»

Сразу минус в карму на собеседовании;)
за использование сборщика мусора?)

За невидение разницы.

не вижу особой разницы очистить руками память сразу или сборщик мусора соберет
фрагментация памяти? — не, не слышал
placement new? — what
_alloca? — wtf
через пару секунд
92 миллисекунды...
www.dtpptz.ru/...y-21112011.html

Как С++ помогает бороться с фрагментацией памяти?

Язык предоставляет инструменты для сведения к минимуму данного явления, если это ботлнек вашего проекта. Под виндой custom allocators + VirtualAlloc творят чудеса )

Ну и комплимент от Шеф-Повара
erdani.com/...cuj-2005-12.pdf
loki-lib.cvs.sourceforge.net/...j.h?view=markup

Мне вот что-то кажется что «custom allocators» не имеют отношению к ЯП.

Мне вот что-то кажется что «custom allocators» не имеют отношению к ЯП.
это в какой-то другой вселенной
у плюсов всё тип-топ )
template <class T> class allocator; template < class T, class Alloc = allocator<T> > class vector;
www.cplusplus.com/...mory/allocator

Дайте-ка я угадаю, мне этот самый аллокатор нужно будет еще реализовывать?

в 99% используют стандартный, но если фрагментация памяти душит проект или есть другие специфические требования, то да, надо реализовывать самому.
Но большинство кейзов уже есть или в бусте или в локи или на стекоферфлоу.

In the standard default allocator, the block of storage is allocated using ::operator new one or more times, and throws bad_alloc if it cannot allocate the total amount of storage requested.
Т.е. используем оператор new. Если я правильно помню, то new это обертка над malloc(), а malloc() использует аллокатор из libc, в котором вполне себе можно столкнуться с проблемой фрагментации памяти, когда память вроде и есть, а найти блок нужного размера не получается.

Окей, рассмотрим Ваш вариант кастом аллокатора для си-шарпа, например.

Мне вот что-то кажется что «custom allocators» не имеют отношению к ЯП.

Раз не имеют — реализуйте.

Я прочитал свое сообщение, на которые вы ответили и написал свою реплику. Если вы думаете что вставив цитату моего сообщения, мне все стало понятно и очевидно, то вы ошибаетесь.

Давай-те я воспроизведу последовательность событий, как ее вижу я.
1. Мы обсуждали вопрос фрагментации памяти.
2. Эту проблему предложили решить создав отдельный аллокатор.
3. Я намекнул что отдельно написанный аллокатор не имеет прямого отношения к ЯП.
4. Вы вспомнили про C#.
5. Я задал вопрос вам вопрос про принадлежность С# к вопросу обсуждения.

Я не совсем понимаю причем здесь C# и почему я должен на нем что-то реализовывать?

Если аллокатор не имеет отношения к ЯП, как Вы утверждаете, то отсюда логично следует, что аллокатор можно реализовать на, как минимум, большинстве ЯП. Я же утверждаю, что аллокатор невозможно реализовать на языках, которые не предоставляют возможности динамически отводить произвольный объем памяти. Что-то не так?

В случае С++ аллокатор не имеет отношения к ЯП (мы же в этой теме про С++?). В случае С# он является частью языка.

Это спорный вопрос, является ли STL частью языка. Если мы считаем, что неймспейс System.* является частью C#, то и STL можно считать частью С++ с той же аргументацией.

Я не совсем правильно выразился. Я имел в виду что custom allocator не имеет отношения к С++. Встроенный аллокатор, скорее является частью языка, чем нет.

И да, operator new — это тоже аллокатор. Является частью языка. Его можно перегрузить, например. Чего нельзя сделать в C#.

Насколько я знаю, new реализуется через libc, следовательно, является частью языка условно.

Ещё раз: в плюсах позволяется перегрузка (overload) оператора new. Как он реализуется — вообще out of scope. Мы же не обсуждаем как реализуется тот же new в С#? А почему? Только потому, что Вы не знаете как он там реализуется, а про С++ Вы думаете, что знаете. Не так ли?

Мы же не обсуждаем как реализуется тот же new в С#? А почему?
а мне кажется потому что это прописная истина, о которой упоминается в книжках по шарпу перед описанием как работает сборщик мусора

В плюсах это еще более конкретно описано — исходный код. И что?

а то что ты ведешь агрессивную беседу и почему-то считаешь что Михаил нифига не знает как что работает, а сам несешь чепуху

Пропустим про агрессивность. Пропустим что я там про кого считаю. А теперь по существу: что именно я не так сказал, что позволяет Вам бездоказательно заявлять «сам несешь чепуху»?

Так он действительно не знает. По крайней смысла фразы «new можно перегрузить» однозначно не понял и упорствует со своим malloc’ом.

Ок, перегрузили new, и что дальше? Нужно писать свою реализацию, как своя реализация поможет бороться с фрагментацией памяти? И зачем писать свою реализацию, если этого можно не делать?

выделяеш под каждый запрос куски одинакового размера — и никакой тебе фрагментации

как своя реализация поможет бороться с фрагментацией памяти?

Есть варианты. И их много. Один из них я уже выше описал. Есть еще вариант, предложенный Александреску, для небольших объектов (которые и дают наибольший вклад в фрагментацию) иметь свои отдельные кучи. Не буду вдаваться в детали. Если можно не делать — то и не делают. А вот если нужно сделать — то это решаемо. И довольно быстро. Тем более что в опен-сорсе полно готовых решений.

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

Язык предоставляет инструменты для сведения к минимуму данного явления, если это ботлнек вашего проекта. Под виндой custom allocators + VirtualAlloc творят чудеса )
Лол, а джава программисты вообще ни о чем таком не знают, все отлично работает и скрыто под капотом

ну некоторые думают что хлебные булки растут в супермаркетах. каждому своё.

Да, ты прав, кто-то может просто фокусироваться на решении практической задачи, а кому то приходится иметь секс с кастом алокаторами.

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

Как это относится к тому что мне не обязательно знать ни о том ни о другом что бы писать производительный и надежный софт?

Как это относится к тому что мне не обязательно знать
Примерно так же, как отверточная сборка относится к дизайну.

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

После этого камента ассемблер-программисты смотрят на Вас с изумлением.

Я так не думаю. Я и сам ассемблер знаю и использую при необходимости. В приведенной аналогии ассемблер — это доводка напильником там, где токарный станок с ЧПУ не имеет возможности добраться.

Ну это в Вашей реальности доводка. А в реальности людей, которые пишут в узких нишах на асме, С++ - это отвёрточная сборка надизайненых в АСМе частей.

Дорогой, я в этом бизнесе с 1987 года. Вот тогда да, С это было примерно как ты описал. Сейчас даже боюсь представить, где такой подход может использоваться. Учитывая то, что современные компайлеры генерят настолько оптимальный код, что улучшить его руками практически невозможно. Я, например, использую асм только когда нужно задействовать MMX или SSE.

Лол, чувак, прекращай тыкать незнакомым людям, посыпая уменьшительно-ласкательными, мы с тобой водку не пили.

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

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

какое место в выдаче гугла аббревиатуры твоих технологий.

Боюсь, тут я Вас слегка обошел. Для контроля наберите в гугле SIP PBX и посмотрите место выдачи 3CX.

Меня больше пугает отсутсвие вклада в опенсорс

Пусть Вас это не пугает. Из опенсорса я юзал только resiprocate, и некоторый вклад в него внес, хоть и незначительный.

Можно глянуть на Ваш код в гитхабе?

Я смотрю Вы даже не вчитываетесь в то, что Вам пишут:

не тем, сколько времени ты пишешь и какое место в выдаче гугла
О чём вообще можно вести беседу?

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

Он дает возможность управлять аллокацией вручную, когда это необходимо или же отдать все на откуп умным указателям (или даже GC), если такой необходимости нет. В этом его преимущество перед «безуказательными» языками со сборщиком мусора, где GC не спрашивая тебя фризит приложение, когда ему удобно.

управлять аллокацией вручную
Это как?

Можно выделять объекты и коллекции:
— в куче, как обычно
— на стеке
— в собственном пуле
— в шаренной или мапленой памяти
Конструировать с помощью:
— кастомного аллокатора
— перегруженного new
— placement new
— функций-конструкторов
Управлять временем жизни:
— интрузивными умными указателями
— внешними умными указателями
— оба верхних могут быть с атомарными и не атомарными счетчиками
— простыми умными указателями без счетчиков (как auto_ptr)
— просто иерархией без счетчиков (аналогично Qt)
— объекты могут просто дропаться вместе с пулом
— а могут и корректно с деструктором убиваться (аналоги Cleanup Stack в Symbian и AutoReleasePool в iOS)
— кто-то даже GC пишет для C++ хотя это, мягко говоря, не сильно распространено

и т. д. и т. п.

Притом необязательно использовать все это в одном проекте. Можно работать без закидонов, а извращаться тогда и только тогда когда это необходимо. Одно из основных правил по которому конструировался C++ «Не используешь — не платишь»

Объясните, пожалуйста, на примере.
Вот мы очень много раз выделяли и освобождали память. В итоге у нас появилось куча «дырок», т.е. как бы память есть, а найти блок нужного размера не получается, что делать в этом случае?

Ну, например, хип с перемещаемыми блоками. Т.е. отведение памяти выдает хендл, чтобы получить доступ — хендл лочится и возвращает указатель. Когда хендл нелоченый — менеджер хипа может перемещать его блок, убирая тем самым дырки. В плюсах это можно так завернуть, что мало чем будет отличаться от обычной работы с указателями

Т.е. опять же, нужно взять и что-то дописать, в самом языке такого нет.

Или поискать готовое.

По крайней мере, в плюсах есть возможность «взять и дописать» практически все что угодно. В большинстве других языков такой возможности тупо нет.

Ну, собственно, на нас это уже кто-то сделал, в результате чего появился условный C#. Сомневаюсь что простой смертный, вот так, с бухты-барахты, напишет лучше. А по популярности условный си-шарпов, люди не пишут свое, а берут готовое, где это уже интегрировано в язык.

По популярности люди, в основном, занимаются формошлепством. А я — системный программист. Это сейчас непопулярно, да.

Как это непопулярно?
Тут администрация ДОУ усиленно ищет колумниста для ежемесячного обзора новостей из мира С++.
Так что есть работа для гуру;)

Для обзора новостей вовсе не обязательно быть гуру. И я не слежу за новостями, мне хватает сложившегося энвайрнмента.

Да, гуру не читают новости, они их создают(тм)
Значится, должен найтись С++ евангелист, что ли;)

Дровишки были от Валентины Донченко, предлагали делать подобное
— dou.ua/.../Java дайджест
— dou.ua/...ntend дайджест
— dou.ua/...Scala дайджест
и просили если сам не в силах, то поискать могущежелающих по C++, C#, PHP, QA.

Для абстрактных объектов с абстрактными моделями выделения/освобождения не напишет. Однако когда имеем дело с конкретными сценариями использования — тут можно соптимизировать.
Ну, например, можно выделять объекты в пуле, а потом дропать его целиком, если позволяет ситуация.
Или сделать кучу/кучи без поддержки многопоточности и, соответственно, без лока, которой может ощутимо замедлить ее работу при интенсивной работе с памятью в многопоточной среде, создавать/разрушать объекты в конкретных тредах или в выделенное время или пачками под одним локом.
И т. п.

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

фрагментация памяти? — не, не слышал
placement new? — what
_alloca? — wtf
пишу на шарпе, там нормальный сборщик мусора, а не одно название

А на распберри пай какая версия дот нета пойдет, не подскажешь?

Ой, я вас прошу, на малинке дот нета только из-за того, что мелкомягким это не особо надо. Технически, я проблем не вижу, джава есть и работает.

Я под нее за месяц написал SIP proxy. Держит порядка 5-8 звонков одновременно. Звуковой траффик в две стороны. Готовы утверждать, что это возможно сделать на джаве?

Если у вас все так классно работает, чего вы такой злой?

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

Еще немаловажно, чтоб спрос на подобное был.

Не было бы спроса — я б не делал.

Был у меня лет надцать директор.
Так с ним где нужно и не нужно и деление на два побайтовым сдвигом применяли и WinApi во весь рост и кастомный полнотекстовой поиск.
Причем это был не гугл а обычное в общем-то прикладное ПО для определенных бизнес-задач..
UI был волшебным, но вот базу данных товарищ выбрал локальную.
А конкурент — серверную. И писал не качественнее, но быстрее. Это преимущество.оказалось практически решающим.
Это я к тому, что все подходы хороши под свои задачи;)

Олдскульный директор, да.
Насчет скорости разработки — мы за восемь лет существования проекта с нуля выпустили десяток мейджор релизов. Наш ближайший конкурент, Астерикс, .... а ладно, не буду саморекламироваться. Тем не менее, не знаю ни одной IP PBX, где ядро написано не на С/С++

У вас своя ниша и там верно все, о чем вы говорите, спеорить нет никакого желания;)

Справедливости ради замечу, что это не единственная ниша. Фактически, всё системное программирование — это С/С++

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

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

mono працює. Повільно, щоправда, але працює. Відповідає .NET 4.5. Один і той же бінарник запускається і на RPi, і на ПК з Win8.1

pi@raspberrypi ~ $ mono --version
Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-7)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       normal
        Notifications: epoll
        Architecture:  armel,vfp+hard
        Disabled:      none
        Misc:          softdebug
        LLVM:          supported, not enabled.
        GC:            sgen

Это полезно знать, спасибо за информацию. Однако, для сип-прокси все равно не применимо — нету пока нормального производительного сип стека под дотнет.

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

а Кнут сказал что следует сначала написать программу, а потом оптимизировать

Это все гуру говорят. Но они еще имеют знания о границах применения данного подхода;)

Поподробнее, пожалуйста. Нет, серьезно, что там такого крутого накрутили уже?

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

а вообще он создан не для того чтобы проблемы создавать, а чтобы решать, вот такое вот капитанство :)

Не увидел где тут ответ на вопрос чем этот заявленный «нормальный сборщик мусора, а не одно название» лучше чем, скажем, сборщик в Java

ви за 6 хвилин встигли це прочитати, чи лише картинки і заголовки переглянути?
а знайти аналогічний опис по джаві і його теж прочитати, порівнюючи?
звичайно що в самодостатній платформі, на сайті для розробників під неї не будуть в кожному реченні кричати «а от епл лохи, в них цієї кнопки нема», а описуєть те що є в себе без привязки

Зачем оно мне надо, детально разбираться в вашем сборщике? Я никогда не писал на C# и не планирую. В тоже время если вы берете на себя смелость утверждать, что у вас в C# какой-то особенный сборщик мусора, лучше чем у остальных, имейте смелость черкануть несколько слов в защиту этого утверждения либо признать, что сказали это чисто для красного словца.

Зачем оно мне надо, детально разбираться в вашем сборщике?
не ваші слова? :
Поподробнее, пожалуйста.
если вы берете на себя смелость утверждать, что у вас в C# какой-то особенный сборщик мусора,
цитату в студію. мого авторства, якщо ви мені відповідаєте ;)
имейте смелость черкануть несколько слов в защиту
еффективний механізм, детально описаний. достатньо детально щоб ви могли при потребі і собі його використати, пиляючи наступний велосипед на плюсах.
а что касается памяти, не вижу особой разницы очистить руками память сразу или сборщик мусора соберет через пару секунд,

Мова програмування С, на віміну від Java, дозволяє працювати з пам’ятю. Наприклад, нам треба мати довідник з граматики шведської мови. Припустимо, що при аналізі шведського тексту треба більше 9000+ разів звертатися до нього, тобто зберінати цю інформацію у базі даних не є ефективний шлях. Якщо брати C/C++, то нема великої проблеми сгенерувати один раз файл, потім просто прочитати його у пам’ять. fread, декілька reinterpret_cast, і практично усі STL алгорітми готові до використання. Прочитати 1Gb данних це долі секунди. Також не є проблемою перегенерувати файл даних у іншому процесі наразі необхідності, та підмінити його.

По-моему, выбор проектов будет намного интереснее))) Сама до этого была в AMD, где писали на C++, когда проект закрыли, народ(плюсовики) поуходил в такие проекты: Palm (LG), Automotive(Mercedes, Ford), Gamedev, «Умный дом», драйвера для клауд серверов. И это только то, что я знаю. Так что иди учи джаву, там конечно же один проект интересней другого — формошлепство, формошлепство или же формошлепство с аццки непонятной бизнес логикой.

Эпичный тред, в котором столкнулись формошлёпы и красноглазы, доказывая своё превосходство...

тему про «где искать девушек» мы явно не догоним

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

так вот она была быстрее всех остальных
пруф? инфа 146%
писанных на с++
Кармак плачет

к чему этот детсадовский троллинг? пруф, инфа, анализ днк ...

понятно же, что она была быстрее среди подобных писанных такими же «глупыми» и «несмышлеными».

к чему этот детсадовский троллинг? пруф, инфа, анализ днк ...
тогда, зачем пост который ничего в себе не несёт, не доказывает и как следствие не отвечает на вопрос ТС.

я правильно понимаю, что вы являетесь абсолютной мерой всего во вселенной?

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

Исходя из этого

когда я еще был глупый и несмышленый
писанных такими же «глупыми» и «несмышлеными»
советуете
да какая разница какой язык? учите теорию
Ну и где здесь что-то ценное для ТС?

www.youtube.com/...h?v=SDnnAxTKXQo

На питання про перспективи розробки на С++ можу привести оцей ресурс:
www.fulcrumweb.com.ua/training
Один з основних проектів — розробка ПЗ для апаратів ультразвукової діагностики. На сайті цієї харківської компанії вказано, що постійно відкрита вакансія — талановитий програміст С++.

Вакансия на сайте одной харьковской конторы — это успех!

Тут дискримінують С++. Тільки згадай її і мовні расисти одразу накинуться. Жартую
Вчи те, до чого душа прагне і не слухай нікого
П.С. виходить і мене не слухай

C++ має нижчу популярність ніж Джави, відповідно і середня ЗП трохи нижча (можете дивитися статистику ДОУ). Але людина яка працює на С++, як на мене, легше освоює інші суміжні сфери. Тобто там, де окрім плюсів треба ще щось, джава чи шарп, плюсовик це освоїть. А от навпаки — далеко не завжди вийде.
Не знаю як на джуніорах, але з певним досвідом пропозиції постійно поступають. Проблем з пошуком робочого місця, мабуть, не буде.

Питання: які перспективи?
Открой список программ у себя на компьютере и посмотри: на чем написан браузер, медиа-плеер, почтовый клиент, набор офисных программ, игры? Сама ОС в конце-концов.
Мне, как человеку курируещему С++ джунов понятны их перспективы.
Но вот чего не понять, так это желание пойти “зарабатывать”, а после выдавать подобные нытик-топики: dou.ua/...ums/topic/10525
ТС, спроси себя, хочешь ли ты присоединиться к армии формошлепов-энтерпрайзников или писать вещи такие как Unity(сам двиг, а не игры на нем; есть вакансия у Сиклума), ААА-игры(4A Games, Ubisoft, Vostok Games в Киеве и пишут на C++), Automotive(Одесский Luxoft, мы всегда ищем таланты). Ответом на этот вопрос и будет ответ на “стоит ли учить?”.
Хто знає, порадьте ще також хорошу літературу
Лучшая книга для новичков как по мне — “Как программировать на С++” Дейтелов.
А саме у Львові?
Не стоит привязываться к городу. Мир велик и полон перспектив.

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

на чем написан браузер, медиа-плеер, почтовый клиент, набор офисных программ, игры? Сама ОС в конце-концов.
Ок, супер, и что из этого есть в Украине?

По С++ в Украине из «большого» геймдева тут как раз назвали

4A Games, Ubisoft, Vostok Games
От себя что приходит на ум: Gameloft в Харькове, Crytek и Persha Studia(Wargaming) в Киеве
И еще огромное количество команд поменьше которые делают казуалки и мобильные игры. Там интересы С++ защищает опенсорсный Cocos-2Dx ну и самописные движки.

Т.е. С++ у нас представлен только гейм-девом?

Есть в Днепропетровске ISD, делают софт для медицинского оборудования. Я не HR и гуглить мне лениво, пишу что помню. Уверен, если поискать найдется достаточное количество вакансий.

Также есть ApriorIT они тоже пишут на С/C++

Собственно я про это и говорю, назвать 10 компаний где пишут на С++ затруднительно. Интересно почему?

Лично мне затруднительно назвать 10 компаний пишущих хоть на С++, хоть на джаве, хоть на шарпе.

dou.ua/...ms/topic/10490
Bloomberg, Microsoft, GM, ...
заходите на glassdoor і дивитесь список :)
P.S. Якщо Ви вирішили програмити на C++, то доведеться емігрувати в США, ЄС...

С++ в геймдеве и С++ в automotive это немного разный С++
Нет, я перешел как раз из геймдева в automotive, та же алгоритмическая база, то же асинхронное программирование, те же высокие требования к производительности.
Нужна теоретическая база, сам факт знания С++ не будет решающим
При равной теор. базе у кандидатов знание языка становится решающим. Хотя бывает что при слабой теор. базе могут взять человека с очень хорошим знанием языка.
нам дали один проект на плюсах, значит плюс это круто
???
Ок, супер, и что из этого есть в Украине?
Браузер, медиа-плеер и ОС(хотя это Pure C) — automotive и security software.
Набор офисных программ — доводилось писать офисный софт для юристов по обработке документации.
Почтовый сервер — в чистом виде не встречал, но работа с SMTP, POP3 и IMAP бывала пожалуй в карьере любого программиста.
Игры — тут вроде как всё ясно.
И отвечу на вопрос ниже:
назвать 10 компаний где пишут на С++ затруднительно. Интересно почему?
В порядке таймлайна только те компании, в которых работал или собеседовался на плюсы:
Litera, Fast Forward, Mistic Games, Atompark, Wargaming, GlobalLogic, Ubisoft, Epam, Luxoft, Lohika, Ciklum.
Вроде трудностей не вызывает. Может не у тех спрашиваете?

Я с вами в принципе согласен, но компании Epam, Luxoft, Lohika, Ciklum имеют исчезающе мало вакансий по С++ (по сравнению с C# и Java), ГлобалЛоджик это скорее суппорт. Я не хочу сказать что вакансий нет, но, имхо, популярность С++ спадает. Если лет 10-15 назад на С++ писалось тупо все, то сейчас это совсем не так.

Открой список программ у себя на компьютере и посмотри: на чем написан браузер, медиа-плеер, почтовый клиент, набор офисных программ, игры?
(facepalm)
Жаль, что приходится это объяснять в 2014 г., но мир не ограничен десктопом

Так объясни же, не томи. А то мужики автомобильные head unit’ы на базе Cortex’ов колбасят, распределенный компилятор навигационных баз данных под супер-компьютер пилят, всё это тестят и автоматизируют, да так чтобы доступ через веб-морду ко всему был и ни о чём кроме десктопа не слыхали.
Особенно хотелось бы почитать про любые электронные программируемые устройства, которые не содержат программ написанных на С/С++.

на чем написан браузер, медиа-плеер, почтовый клиент, набор офисных программ, игры? Сама ОС в конце-концов.

И много таких вакансий?
или писать вещи такие как Unity(сам двиг, а не игры на нем; есть вакансия у Сиклума), ААА-игры(4A Games, Ubisoft, Vostok Games в Киеве и пишут на C++),
В большинстве мест, где «интересная работа» требуется вкалывать за еду с овертаймами.
выдавать подобные нытик-топики: dou.ua/forums/topic/10525
ТС, спроси себя, хочешь ли ты присоединиться к армии формошлепов-энтерпрайзников
Никогда не понимал подобного. Какая разница, что делать на работе восемь часов, да хоть монитор дерьмом обмазывать, если заказчик хочет!

>>> да хоть монитор дерьмом обмазывать, если заказчик хочет!
Навык падает.

Без навыков бабла потом не платят.

Так нужно учить дома, в спокойной обстановке.

А где взять время на зеркалку и велик?

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

Может быть.
Ваш метод смена места работы я уже взял на вооружение, нужно попробавать и этот.

Если вам предложат мыть туалеты с зарплатой на 100$ больше вашей вы пойдете? А если предложат походить с флагом и автоматом в Домбабве за +1000$, согласитесь?

туалети — ні, соррі, проект не цікавий, а от зранку в 5й з мітлою по кварталу пройтись, а потім весь день вільний — звичайно :))
з флагом і автоматом — там проект короткотерміновий, не цікаво ... ще й момент що для кожного персонально він набагато короткотемніновіший ніж в загальному... ну і моральна перекваліфікація — неа, не цікаво!

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

4A Games, Ubisoft, Vostok Games в Киеве и пишут на C++)
? или писали что-то «великое»? Не бывает идеальных инструментов, для каждой задачи нужно выбирать свой, в топике про Java я адресую к тому, что Java во многих местах используется не по назначению.

Да, писал, особенно запомнился первый чекаут на 300000 файлов. По началу от масштабов захватывает дух, но очевидная вещь, что решающий фактор для любой программы — человеческий(а вероятность присутствия говнокодера в огромном проекте равна 1) быстро сбивает спесь. Особенно, если брать в учет теорию разбитых окон...

Не бывает идеальных инструментов, для каждой задачи нужно выбирать свой
Да, но!
1. Инструменты не появляются из неоткуда. Порой в арсенале нет искомого или подходящего инструмента, то приходится создавать новый используя некий мета-инструмент. И такой инструмент для актуальных ныне ОС ввиду ABI совместимости только один — С. Его потомоки-франкенштейны с обратной совместимостью могут частично(а то и серьезно) упростить задачу, поэтому заслуживают внимания. Если конечно не хотите ждать пока кто-то этот инструмент создаст за вас или просто лень.
2. Изначальный вопрос стоял так: учить или не учить? И тут встаёт проблема курицы и яйца: в Украине мало вакансий на С++ потому что нет достаточной массы высококлассных девов для решения задач такого уровня. Ну а крутых девов нет т.к. «бесперспективняк».
Очень не хочется чтобы так и продолжалось и дальше. Ведь из-за этого будем на догоняющих позициях, как технологически так и материально.
потому что нет достаточной массы высококлассных девов

Замечу — _уже_ нет. А ведь была. И еще не так давно. Впрочем, это мировая тендеция, за исключением Штатов, возможно.

И тут встаёт проблема курицы и яйца: в Украине мало вакансий на С++ потому что нет достаточной массы высококлассных девов для решения задач такого уровня. Ну а крутых девов нет т.к. «бесперспективняк».
Очень не хочется чтобы так и продолжалось и дальше.

Хочется-не хочется, а ИМХО эта проблема у нас только усугубляется со временем.

Есть ещё один ньюанс — продажи. В аутсорс банально идёт меньше проектов на плюсах чем на мейстримных технологиях. И не каждая компания способна привлекать такие проекты.

Соответственно меньше спрос на внутреннем рынке на С++ников, и меньше пряников для них.

И я сомневаюсь, что этот круг возможно разорвать.

Ведь из-за этого будем на догоняющих позициях, как технологически так и материально.

Это удел провинции.

Это удел провинции.

Я склонен относить эту проблему к «убитости» образования. Это, похоже, общемировая проблема, но в успешных странах пока еще значительно выше процент молодежи понимающей зачем нужно качественное образование.

ты наверно смотришь уж слишком далеко в прошлое...

Дякую всім за відгуки. Що ж, порадьте тоді літературу по джаві чи що... По плюсах база вже досить непогана думаю. Дивився книгу Хорстмана-Корнела — що скажете?

не пройшло і пів дня, як помінялась точка зору із С++ на ДЖАВА, цікаво скільки часу пройде, коли прибіжуть шарпісти, пехепісти, пітонщики і рубісти втирати, що їх напрямок набагато краще і будуть по 150 прикладів наводити в погану сторону джава, готові до змін ?))

ну я ж не пів життя все таки вчив ті плюси) вони мені подобаються, але як треба то перейду на джаву, бо де не читаю, майже всюди відраджують від плюсів в сторону джави( тим більше на старті не важко перейти, а ніж після кількох років вивчення повністю переорієнтовуватися.

Ппц, мені теж плюси подобаються. І на жабу чи шарп не збираюсь переходити, пробував — відчув що не моє. Пізніше напишу більше, зара йду читати плюсосрач

А от мені здається, що множини «джавісти», «шарпісти», «пехепісти», «пітонщики», «рубісти» і т.д., я маю на увазі ті, хто

прибіжать і будуть втирати, що їх напрямок набагато краще і будуть по 150 прикладів наводити
і множина «професійні програмісти» дуже обмежено (якщо взагалі) перетинаються. Мене завжди дивувало наскільки іноді деструктивною може бути неприязнь людини до змін і її небажання пізнавати нове. Навіть не розумію звідки це береться.
Мене завжди дивувало наскільки іноді деструктивною може бути неприязнь людини до змін і її небажання пізнавати нове.
мені страшно представити, з чого ви таке собі в голову вбили, людина повинна собі на ближні 3-4 роки якщо не більше, вибрати мову і вивчати її, фреймворки і бібліотеки привзязані до неї, робити собі хороший бекграунд, а не братись за кожну мову, що в результаті ні в одної не досягне професіоналізму і буде макароннічати на ліво і на право і казати, що я вмію на 100500 мов писати хелло ворлд і кричати, битись в груди — я пізнав всі ази програмування.
що я вмію на 100500 мов писати
это про меня ))) за последние 6ть месяцев пебрал яву, перл, питон, javascipt и до этого еще знал С++ и пхп. Ява в принципе нормальный язык — ничего сложного на первых порах, но дальше пошли спринги и хибернейты — и я не осилил чтение книг. Перл прикольный язык, питон легко учится (до стадии джанго), жаваскрипт — тоже прост. Основная проблема — мне негде применять полученные знания кроме как пилить какой то свой проект, а свой проект у меня уже есть — он пхп написан и все улучшения там реализуются на пхп с небольшими вставками javascript. в итоге я решил вернуться к пхп, пройтись по фрейморкам и разработать еще какой то вебсайтик — толи социальную сеть, толи сайт знакомств. В итоге вместо того что бы за полгода прокачать жаву на хороший уровень, я растратил силы на все понимногу. Не повторяйте такой фигни.
людина повинна
Схаменіться, людина нікому нічого не повинна :) What about «just for fun»?
цікаво скільки часу пройде, коли прибіжуть шарпісти,
чого ж, хай вчить джаву, нам буде спокійніше :))

по джаві можна почати з шілда, такий початковий рівень, а далі еккель — філософія java

если в общем: ответ «с ходу» — не стоит.
если по деталям:
1) С++ может рубить крутое бабло — но нужно большой опыт + большое бабло для С++ это чаще linux. знаю человека которому еще 2 года назад предлагали 5k за Linux Kernel development в Киеве.
2) Прокачаться за короткий период (2-3-4 года) можно, но нужно участвовать СРАЗУ в DEVELOPMENT проектах а не на Баг Фиксе или саппорте. Для junior C++ сразу попасть в dev — скорее всего проблематично. Собеседовал хлопцев — 3-4 года опыта у них — очень неплохие — в том числе прокачаны и теоретически. но их единицы. если вы не пахарь и не фанат С++ - не стоит пытаться повторить их «подвиг».
3) С++ experience очень полезен для будущей карьеры если вы будете писать даже на Java, .Net, Python или что-то еще. очень полезен. но задайте себе вопрос — готовы ли вы «потратить» 4 года довольно упорного труда, чтобы потом использовать С++ в качестве опыта. Проще сразу идти в Java — там гораздо больше денег и проще все и надежнее.
4) если приоритет — деньги (а для большинства приоритет в работе — деньги, а не какая -то там эфимерная «любовь к с++» ) - идите в Java.

5k за Linux Kernel development
А что за компания предлагала?
С++ это чаще linux
Если low-level linux, то это чаще всего чистый Си, без плюсов. Если какой-то корпоративный софт на линуксе, то там скорее джава будет.

Хорошая кампания предлагала )))
да там был low level + kernel С++/С + drivers.
Парниша тоже мощный спец. Было за что и было кому предлагать.

Мдя, драйвера на плюсах писать это несколько необычно, видимо за это 5к и давали.

под QNX драйвера на плюсах пишут.

Не думаю что «Linux Kernel development» подразумевает написание драйверов под QNX

писал на си, но это полдела, а там его надо еще отладить.... а потом мелкомягким на подпись послать

ну так они на си и пишутся

C++ != C, а уж говорить про «Linux Kernel development» на С++ - это запредельно :) И смею вас заверить, что уровень знания языка в «Linux Kernel development» — дело чуть не десятое.

Для новичка как раз очень полезно посидеть на багфиксе, чтобы проникнуться языком, чтоб перед глазами прошло много готовых решений. Читать много чужого КАЧЕСТВЕННОГО кода — это прекрасная практика. Т.ч. если поддерживаемый код качественный, багфикс — это идеальный вариант для джуна. Если новичка сразу кидать в разработку — это прямая дорожка к корявому коду и неверным решениям. И корявость потом будет, пожалуй, сложно «извести».

а если приоритет не только деньги, а еще и желание писать на современном ЯП, который выполняет за тебя рутинные операции и ты можешь спокойно сосредоточиться на архитектуре решения?

тогда только Haskell

Ну тогда UML, блоксхемы и джуны в качестве транслятора.

В андроид разработке например часто применяют JNI,а там С/C++ правда плюсы очень урезанные. Без STL например

Воу-воу, полегче, есть там STL. Ещё и несколько реализаций. Там обычный GCC, со всеми его возможностями, только под ARM.

Ох уж эти многоуверенные Java адепты

Джава адепт давно не смотрил в актуальную доку на андроид? Последний NDK позволяет мне выбрать между:
system -> Use the default minimal system C++ runtime library.
gabi++_static -> Use the GAbi++ runtime as a static library.
gabi++_shared -> Use the GAbi++ runtime as a shared library.
stlport_static -> Use the STLport runtime as a static library.
stlport_shared -> Use the STLport runtime as a shared library.
gnustl_static -> Use the GNU STL as a static library.
gnustl_shared -> Use the GNU STL as a shared library.
c++_static -> Use the LLVM libc++ as a static library.
c++_shared -> Use the LLVM libc++ as a shared library
и кучкой версий компиляторов — gcc 4.6, 4.8, clang

+1
А до того как Google соизволил сделать нормальный С++ с исключениями и STL в NDK вполне себе обходились самосборным gcc/libstdc++ с патчами для их идиотского bionic’а.

Не стоит, требования высокие, а работы мало

Якщо є бажання виїхати за кордон — вивчайте.
www.freelancer.com/...-Programming/1

What is the average salary of a c++ programmer.
I’ve seen folks coming out of college making $25k-$35k. Mid-level going from $30k-$65k, and upper level going from $65k-$150k.

перспективи так собі, а саме у Львові — вообще ніяк.

Отой самий Глобал і є єдиний у Львові кому потрібні С++... і то швидше Сішники ніш плюсовики.

Є ще пару дрібних фірм, є по проєкту на Софтсерві і ЕПАМі, але всі вони бігають за сіньйорами, початківців треба тільки Глобалу.

Кажу це як людина з огляду на роки досвіду — вообще работа є, хорошу — фіг знайдеш.

перспективи так собі, а саме у Львові — вообще ніяк.

Отой самий Глобал і є єдиний у Львові кому потрібні С++... і то швидше Сішники ніш плюсовики.

Є ще пару дрібних фірм, є по проєкту на Софтсерві і ЕПАМі, але всі вони бігають за сіньйорами, початківців треба тільки Глобалу.

Кажу це з огляду на роки досвіду — вообще работа є, хорошу — фіг знайдеш.

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

Правильно, пусть они вообще без работы сидят.

Че токо глобал? У нас вот стажера на С++ наняли.
Ибо у синьоров рейты высокие;)

для стажеров — только Глобал. У них одних достаточно и проектов и ресурсов что бы самим учить. Для «взрослых» девелоперов есть ещё пару проектов в других конторах, но это скорее единичные случаи.

Сам искал неспешно аж 2 года работу, не то что б вообще не нашел, оферы были — хороших не было, конечно может это я балованный. У кучи знакомых похожая ситуация.

Перспективы в Украине — плохие.

С++ применяется в больших, известных продуктах. Которые обычно разрабатываются — не в Украине, и на аутсорс — обычно не отдаются.

например таких — как ваш веб-браузер :)

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

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

Идея часто звучит. Предлагаю обсудить.
Как это должно выглядеть?
1. пойти в issue tracker, выбрать рандомно багу и начать дебажить, не представляя себе даже структуру проекта.
2. читать(листать) код, и, когда решишь, что понимаешь, где в проекте файлы парсера HTML, а где — рендерер, идти в ишью трекер и брать какую-нить «Security: base tag can be used XSS.».
3. читать баги по порядку, в надежде наткнуться на что-то простое или хотя бы понятное. кинуться дебажить наугад.

лично вы какой-то путь видите, как новичку в проекте и программировании дебажить нетривиальные баги?

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

По слухам хромиум собирается 6 часов на средней девелоперской машине, но новичка может оттолкнуть заполнение всяких СLA, многие отсеиваются на данном этапе

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

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

Мне это не интересно, поэтому не занимаюсь таким.

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

Ну путь то есть, другое дело что это не для каждого.

путь которым могут пройти только 0,0000001% — не путь.

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

С++ (особенно «голый») — то как матан. Реально нужен единицам, но не плохо тренирует мозги. Да и для души — «прострелить себе ногу» указателем и искать потом где — это весьма весело.

P.S. Кстати, из-за этой особенности, сишники отличаются от обычных прогеров как математик от бухгалтера. Так что если хочется легкой карьеры — лучше делать ставку на другой ЯП.

Якщо він реально треба одиницям, то на чому краще писать ті ж іграшки?

Ну а сколько человек из 100к наших программистов задействованы в геймдеве? Особенно сишном.

Ну може їх не так багато, як пхпшників або жавістів, але «одиницями» язик не повертаєтсья назвивать. Така характеристика, імхо більше ерланг/хацкель програмерам підходить.

А як там з швидкодією та споживанням пам’яті в порівнянням з сі/плюсами?

Хуже, но это не мешает создавать отличные игры.

Здебільшого вистачає. Якщо не ААА чи мего стратегія на 1000 юнітів у кадрі.
Програми на С++ самі по собі не стають швидкими та оптимізованми.

Питання на засипку. На чім написаний юніті? Не шукайте відповідь, С++

І шо? :)
Писати іграшки та двигуни — дві великі різниці. Є один такий юніті, на якому є мільйон іграшок, які, в свою чергу написані на C#, JS, або Boo. І, звісно, воно там в середині працює дуже складно і розумно на низькому рівні, але так можно і до асемблера дійти у будь-якій задачі.

Ви гру пишети на двіжку, а не на конкретній мові. С#, жабаскрипт просто для написання скриптів гри. В таких двіжках я крайенджін скрипти на луні пишуться, в анріалі на власно розробленому юскріпт здається, але двигуни на плюсах

Двигуни на плюсах вже написані. Щоб ними користуватися не треба бути гуру С++, у цьому і є їх перевага. Одна команда робить двигун на С++, а ще сотня користується ним із скриптовими мовами.

отвечу вопросом на вопрос
а на чем пишут игрушки, например при использование Unity3d?

Ммммм, у С11/14 є смарт поінтери, і при птавильному підході в вас не буде зброї щоб вистрілити собі в ногу

Є ще Boost, там багато чого смачно було і до С11.

І багато чого з буста переходить в новий стандарт

Хз, тоді питання чому не цікаво?

А чем оно от джавы отличается?

И из-за провалов в производительности становится непонятно нахера этот С++ нужен тогда flyingfrogblog.blogspot.com/...lower-than.html

Так там поінтер з буста, в стандарті можливо цю проблему вирішили. Хоча чим вищий рівень абстракції, тим менша продуктивність

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

В тысячи! Всё в кеш, всё!

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

Только несосущего ГЦ под цпп в природе не обнаружено, а с пулами нужно себе иметь мозг с тем какие размеры устанавливать на разные пулы что бы разионально использовать память. А на джавке программист просто садится и пишет код сконцентрировавшись на задаче. ЦПП это язык для извращенцев и очень узких ниш (вроде обработки изображений), смирись с этим.

От блин, а пацаны-то и не знали... взяли да и написали 3CX PBX на плюсах... а там десятки тредов и прочий малтитаскинг с ресурс шарингом. Если б знали — не написали бы, конечно.

Ресурс шаринг возможен только на Java EE. Ну сам посуди, куда ни плюнь в проекты на С++ (или особенно на голомо С) — все какие-то мобилки, железки — часто с одним ядром, оперативы мало — хотя есть, конечно, и сервера. А Java EE? Монстры с кучей оперативы, кучей процессоров, ядер. Отчего этого? Ну явно ж потому что ресурс шаринг хорошо работает.

Ну как-то так... И, главное, есть люди которые в это верят. Верят в преимущества ГК перед лочеными смарт-указателями в малтитаскинге... Я хренею, дорогая редакция. У нас тут пару человек давно уже топчется по граблям синхронизации в си-шарпе.

. Верят в преимущества ГК перед лочеными смарт-указателями в малтитаскинге...
Если эти преимущества очевидны, почему бы не верить, если ты не религиозный фанатик конечно

Они очевидны тем, кто никогда не писал на шарпе чего-то серьезнее хелло-волд с кнопкой. Я же конкретно потоптался на шарповских граблях синхронизации и ГК. Проблемы-то я порешал. А осадок остался.

Может в шарпе все и через ж, ибо МС, на джаве все уже давно вылизано.

Может уже и в дот нете вылизано. Что не отменяет осадка.

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

Ну так я всегда считал, что мне ехать. Если Вам — шашечки, то красиво ж жить не запретишь.

Ну вот если ехать, выбрал бы джаву, а так имеешь секс с кастомалокаторами и блокировками в умных указателях.

У меня в соседнем проекте товарищ имеет секс с реализацией SIP-стека под джаву (PJSIP). Вот это — сэкс! Эпический. Я лучше указатели полочу. Тем более что это не так уж часто и сложно как кажется. При грамотном подходе к малтитредингу.

Это сейчас так модно считать всех тупее себя? Возми pjsip и поработай с ним на джаве. Когда устанешь — найди другой сип-стек для джавы.

А какой ты ожидал ответ на свое столь детальное описаниe трудностей жизни твоего анонимного колеги?

Любой, кроме надменного

Да ладно. Когда я последний раз смотрел сравнивая C# и Java, во втором было какое-то страшное убожество вместо шаблонов, ноль функциональщины, отсутствие объектов передающихся по значению (не знаю как оно в C# называется) и даже элементарного with.
По-моему, единственная фича Java отсутствие привязки к винде и некроссплатформенному .NET.

Это все вкусовщина, и конечно же не имеет никакого отношения к обсуждаемому управлению памяти

Я же конкретно потоптался на шарповских граблях синхронизации и ГК.
факти в студію.. пердеж в калюжу то прікольно, але користі з нього 0

Например, такой факт. Анменеджед объект внутри менеджед. Последней операцией менеджед метода вызывается анменеджед метод. И, не дожидаясь завершения его выполнения, ГК выдергивает из под жопы табуретку (освобождает менеджед объект).

те що ви описуєте можливо в якомусь такому семплі:
{ (new X()).DoJobAsync(); }
поперше, якщо обєкт ще шуршить — він або має десь зберігатись (референс — найкраща відмазка від ГК), або синхронно шуршати, не вертаючи контроля
подруге, завжди маючи такі збочені зовнішні обєкти, що щось почали і не признаються що завершили — кидати їх в спільну чергу завершення, і на фіналізуванні передавати туда з вашого обєкту, без зовнішнього доступу до них.
і все, проблеми немає за 5 хв думання, без приводу роками про неї згадувати...

Последней операцией менеджед метода
це часом не про фіналізатор? там так і є, жорстко обмежений час виконання, все що треба було викликати з анменеджед обєкта — треба було робити до цього.

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

ну так і на вінфоні, вам після натиснення на «назад» даються секунди, щоб зберегти все що треба. в цілях перфомансу, і щоб програма не зависала на годинку..
результат — порівняйте спеки по живучості для htc one m8 на андроіді та вінфоні, при ідентичній батарейці :)
а найцікавіше в цьому те, що в доках по обом є згадка про обмеження.
якщо їх почитати — все знаєш, а якщо «я ж С++ знаю — розберусь» — то можна і понатикатись на веселі моменти :)

У нас тут пару человек давно уже топчется по граблям синхронизации в си-шарпе.
а можна — детальніше ? :))
Монстры с кучей оперативы, кучей процессоров, ядер. Отчего этого? Ну явно ж потому что ресурс шаринг хорошо работает.
От того что они обрабатывают сотни тысячь кью пи эс. А под сотни кью пи эс у меня джава на digital ocean на дроплете с одним гигом вполне справляется для пет проекта
От блин, а пацаны-то и не знали... взяли да и написали 3CX PBX на плюсах... а там десятки тредов и прочий малтитаскинг с ресурс шарингом. Если б знали — не написали бы, конечно.
А с чего ты взял что если бы писали на джавке, получилось бы хуже?

А тебе известна хотя бы одна реализация IP PBX на джаве? А почему так, не догадываешься?

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

Оригинальная точка зрения. Попробуте при случае сравнить кол-во цпп-извращенцев и джавистов хотя бы в пятерке ведущих софтверных фирм типа MS, Apple, Google, Intel, Adobe. Результат Вас обескуражит, уверен.

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

Мне пофигу, на самом деле. Мне язык подходит, местами шарп пользую, где удобно. За 8 лет выпустили десяток релизов. С нуля до тройки мировых поднялись. Без джавы почти.

Набери в гугле sip pbx, третья строчка — это мы. Вот такая микрониша. А в какой нише ты работаешь? Ну это так, чтоб иметь представление о судьях

Набери в гугле sip pbx, третья строчка — это мы. Вот такая микрониша.
У тебя странное представление о том что такое ниша. Что-то я вас здесь не вижу: www.nojitter.com/...os-doing-better
А в какой нише ты работаешь? Ну это так, чтоб иметь представление о судьях
Какая разница, я призываю тебя не преклонятся перед титулами а ценить силу аргументов

С каких пор сиська выпускает софтверные PBX? А так да, их фоны к нашему РВХ продаются на ура. Железа мы пока не делаем.

Какая разница, я призываю тебя не преклонятся перед титулами

Когда нет титула остается только блистать силой притянутых за уши аргументов.

С каких пор сиська выпускает софтверные PBX? А так да, их фоны к нашему РВХ продаются на ура. Железа мы пока не делаем.
Сиська продает в том числе комплексные решения, их ниша выраженная в деньгах видна на графике, а твоей микрониши нет.
Когда нет титула остается только блистать силой притянутых за уши аргументов.
Ну по поводу «нет» и «притянутой за уши» — чисто эпитеты без какой либо аргументации. Другими словами — досужий треп.
Ну по поводу «нет» и «притянутой за уши» — чисто эпитеты без какой либо аргументации

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

Позволь, но ведь ты не дал мне почвы для аргументации. К нише железных РВХ мы действительно не относимся
Но вы находитесь в прямой конкуренции с ними, и клиенты выбирают между вашими решениями и железными.
а свой титул ты так и не объявил (ну не клирик же, в самом деле), так что довольствуйся досужим трепом. А какой ты рассчитывал получить комментарий?
Коментарий по теме был бы какие именно особенности джава платформы не позволяют построить на ее базе pbx решение.
Но вы находитесь в прямой конкуренции с ними
Мы конкурируем с Астериск. Который беспатный опенсорс. Успешно конкурируем.
Коментарий по теме был бы какие именно особенности джава платформы не позволяют построить на ее базе pbx решение.

Моя ставка — производительность. Но я не претендую. Просто факты говорят сами за себя.

Мы конкурируем с Астериск. Который беспатный опенсорс. Успешно конкурируем.
Это ерунда, если бы исчезли циски и прочие провайдеры пбкс инфраструктуры все бы ломанулись к вам, потому что вы конкуренты, только сосете лапу.
Моя ставка — производительность.
Голословный высос из пальца. Ты же сам писал что старый уже и жабу и конкуренцию с молодыми не осиливаешь

перші два — 3cx, потім вікіпедія і тема на форумі скайпу...
ви — вікіпедія?
якщо ні — можна назву прямим текстом ? :))

Значит, в Вашей выдаче — перші два. Можно было в профайл заглянуть просто и не разводить флуд.

Кстати, какие исходные коды open source проектов на C++ посоветуете поизучать? Какие наиболее подходят для новичков?

Хз, сам щось подібне шукаю. У boost’і мож поритись, можливо ваше доповнення згодом потрапить в стандартну бібліотеку, ще в сорцах Qt можна багато чого дізнатись, SFML aka SDL + oop)

C++ изучать не нужно, как не нужно учить ассемблер. Это язык системного программирования, которое на Украине практически не востребовано.

Мой пост ниже, который я написал за 4 часа до того, как вы написали свой.

Системне програмування — це сішка.

Якщо цікавить ембедед — варто, якщо цікавить геймдев — варто, якщо цікавить наука та її прикладне застосування( наприклад криптографія, розпізнавання образів та тому подібне ) - варто, якщо тобі 18-20, ти вчишся програмувати і тобі цікавий С++ - варто. Відповідно, якщо підпадаєш під одну з цих категорій, то раджу вивчити спочатку чисту мову, потім вже розвиватись в сторону якогоїсь технології( Qt наприклад ). Як на мене, абсолютно не принципово як і по чому вчити, головне — практичне застосування, виконання самостійно задач і т.д.
Коли відчуєш, що вже більш — менш знаєш, заходь на сайти з вакансіями, обирай, що зацікавило, дивись які ще технології потрібні для вакансії, вчи, тренуйся і буде успіх.

Нужно выбирать область, а уже потом только язык программрования. Если вам вдруг понравится писать под web, то С++ тут никаким боком не поможет. Так что сначала нужно определить чем хочешь заниматься, а уже потом смотреть какие языки там используются.

Если вам вдруг понравится писать под web, то С++ тут никаким боком не поможет.
code.google.com/p/ffead-cpp
))

«Starred by 79 users» — з такими перспективами на роботу краще застрелитись :)))

да я в курсе, за пределами украинского аутсорса спроса на С/С++ более чем достаточно. Начиная от ИоТ с мангустом и заканчивая ЕЕ. Просто тролю жабоедов )))

А на нем что нибудь посложнее хелловорлда написали?

если вы хотите войти в отрасль — учите что-то попроще. Java в мейснтриме. Obj-C или Php

С++ огромный и сложный язык. Начать писать на нем можно. Начать писать на нем хоть сколько-то хорошо — нужно очень много лет. Оно вам надо?

я бы в вашем списке php на ruby заменил. Хороший язык, быстро изучается.

Ну тогда Ruby лучше заменить на Python — язык ещё проще и изучается ещё быстрее :-)

не-а. наоборот, Ruby в топку.

на нем ничего нет кроме Rails.
получился ЯП одного классного фреймворка. Классного, но — одного.

а вот на PHP 5.3> идет бешенное развитие фреймворков.
а уж когда взлетит LLVM компилятор, или HHVM, или Hack...

не, на лет пять у Rails еще жизнь будет. потом еще пять-десять — легаси код чинить :)

И только у трех ЯП «вечность» впереди:
C, Java и PHP.

в пхп бешенное развитие фреймворков идет начиная с PEAR и PHP 3.x ;)

Чето я не припоминаю фреймворков во времена PHP 3.x

вы наверное их не использовали. как пример pear.php.net

Каким образом менеджер расширений и репозиторий расширений в одном флаконе относится к фреймворкам? rvm в руби — тоже фреймворк?

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

PEAR is a framework and distribution system for reusable PHP components. pear.php.net

фреймворк — для чего?

в русском варианте:
PEAR — это аббревиатура от «PHP Extension and Application Repository» (Репозиторий приложений и модулей PHP). pear.php.net/.../about.pear.php

и при чем тут фреймворки для разработки WEB приложений, типа Rails которые стали обильно появляться на PHP после выхода 5ой версии?

Первые 2 предложения из вашей ссылки как раз подтверждают мои слова:

In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software. A software framework is a universal, reusable software platform to develop software applications, products and solutions.

Стоп. Заглянул в профиль. iOS. Там понятия про фреймворки немного другие. В любом случае сравивать rails и pear нельзя. Разные это вещи.

вы сами читали то эту ссылку?
английского не хватает понять о чем список в Examples?

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

PEAR is a framework and distribution system for reusable PHP components.
Ruby on Rails, often simply referred to as Rails, is an open source web application framework written in Ruby.
Вы путаете тёплое с мягким, сравнивая пир и рельсы.

я увидел что именно с 5.3
сужу по появлению новых, с подчеркнутым авторами — используем всю круть 5.3!
«требуется версия не ниже 5.3!»

или, старых, но переписанных с использованием 5.3

как показалось, 5.3 произвел некую революцию в мире PHP, как выход Java 1.5 в мире Java

ну а то что я прочел недавно, о PHP 7 (да, да, есть уже планы на 7ую, хотя 6ая еще не вышла), то это будет вообще — другой инструмент, с сохранением совместимости.
и очень даже мощный и современный.

ну а то что хаотичное развитие PHP (только недавно вышел первый черновик спецификации ЯП PHP! обходился пых без формальной спеки по языку все годы!!) привело к неряшливости системного окружения, — дело такое.

У рубі є вінрарний Sinatra, який надихнув купу фреймворків в інших мовах.

C, Java и PHP.
+ javascript, c# та python
У рубі є вінрарний Sinatra
та там чимало є. то й що з того?
якщо крім рельс — ніхто того не знає.

та ж Sinatra — хто чув про цей фреймворк?

або про Spark серед джавістів — багато чули?
а з тих хто чув — користувались?

який надихнув купу фреймворків в інших мовах.
о, а скільки надихнув Smalltalk!

ми про що балакаємо — про епітафію на надгробнику?

для Ruby ще зарано, ще поживе :)

+ javascript, c# та python
ні. це вже «вічність / 2»

javascript — я не знаю що буде з Dart.
по друге — з самим HTML. та з отим DOM деревом.
хоча згоден, 4им можна поставити.
JS 6 Harmony кажуть — буде гарним оновленням.

С# - MS. Без них — не виживе. Проект Mono — то тільки тому що є CLR .NET від MS

python — Go, Ceylon, Rust, ...

а от C, Java и PHP — «вічні». конкурентів, враховуючи тенденції — нема.

С# - MS. Без них — не виживе.
Ну, по-перше, є Unity. По-друге, MS відправила шарпи у вільне плавання, навіть стандартизувавши їх у ECMA. Натомість, якщо мені не підводить пам’ять, жава копроративно прив’язана до оракла. Навіть з гуглом судилась за API (rangeCheck, ага). В будь-якому випадку сумніваюсь, що обидві компанії загнуться в майбутньому.
python — Go, Ceylon, Rust, ...
Нє. Суть пітону в тому, що він проста як дошка динамічно типізована скриптова мова з багатим функціоналом, величезним ком’юніті, легасі кодом, а також тонами ліб та фреймворків. Цейлон — це жаваподібне шось, раст страшніший за плюси. Го — це скоріше заміна плюсам/жаві.
та ж Sinatra — хто чув про цей фреймворк?
Ну, го/цейлон/раст зараз взагалі люта екзотика, а Ви їх в альтернативи пітону :-)
Ну, по-перше, є Unity.
не знаю наскільки він поширений, та про його альтернативи у області геймдеву.
По-друге, MS відправила шарпи у вільне плавання, навіть стандартизувавши їх у ECMA.
це нічого не значить, стандарт ECMA. У PHP навіть спеки на мову донедавна не було.
Ну, го/цейлон/раст зараз взагалі люта екзотика, а Ви їх в альтернативи пітону :-)
ключове слово — зараз.
про зараз нема чого балакати, йдете на сайти з статистикою та читаєте.

я висловив свою думку. можливо хибну. але те що мені пишуть у відповідь, вказує на те що взагалі не зрозуміли про що я написав, або на вкрай низьку обізнаність у питанні.

не знаю наскільки він поширений, та про його альтернативи у області геймдеву.
Очень распространен. Хедлайнер мейнстрима, так сказать. И вакансий весьма хватает:
jooble.ua/...tg-all/kw-unity
не знаю наскільки він поширений, та про його альтернативи у області геймдеву.
Поширений, альтернативи великі. В Києві вакансій багацько, я аж сам здивувався.
про зараз нема чого балакати, йдете на сайти з статистикою та читаєте.
Так ці мови ніде окрім сотих позицій на сайтах зі статистикою та спеціалізованих форумів для гіків не згадуються і не згадувались :-(
Якби той же го за рік на TIOBE увійшов в TOP-20 — зовсім інша річ.
Натомість, пітон як сидів всюду в топах, так і сидить. З своїми ком’юніті та кодом, який треба підтримувать.
Натомість, пітон як сидів всюду в топах, так і сидить.
тобто ви вважаєте що я сліпий, і тому дали мені цю інфу? ;)

я бы убрал яву и поменял ее на python

у python нет самостоятельной ценности.
уникальных фич.

а недостатков перед джавой, как на уровне ЯП, так и на реализации — много.
вернее — свойств. которые низя убрать, и чтобы остался — python.
поэтому — он джаве не был, и никогда не будет конкрурентом.
дай боже ему самому не скатиться в замену bash скриптов :)
PHP ему как, удалось потеснить?
да что там PHP, берем одну единственную CMS — Wordpress. Кто с ней всем питоном и руби потягается в массовости и разнообразности применений?

но, конечно можете убрать Java, ее, как и PHP кто только не убирал в последние 10 лет.
как и какие только авторитеты не пророчили скорую смерть им, джаве и пыху.

жава живет потому что на ней все девелопят из-за того что програмистов дофига и стоимость ресурсов не высока. и конечно я забыл про то что жава исполняется везде с помощью своей жвм. Ныне проблема скорости разработки очень высока — бизнес требования могут меняться каждый месяц и на сцену должны выйти высокоуровневые языки типа питона с готовыми модулями.

девелопят из-за того что програмистов дофига
посмотрите сайты вакансий.
стоимость ресурсов не высока
посмотрите уровень зарплат.
Ныне проблема скорости разработки очень высока
не придумывайте на лету.

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

бизнес требования могут меняться каждый месяц
это проблема решается стопицот способами БЕЗ написания и строчки кода.
и на сцену должны выйти высокоуровневые языки типа питона с готовыми модулями.
Java — высокоуровневый ЯП. а уж для бизнеса — нигде столько не написано как на планете Java.

вы просто плохо осведомлены, если даже беретесь сравнивать астероидик python с газовым гигантом — Java
а уж по аргументам судя — начинающий программист?

Если на планете Java не хватает Java то используют Scala или Groovy.
Про Clojure не скажу. думается шибко нишевой.

тут уже гдето была дискуссия почему корпорейт пишут на джава — стабильность, много девелоперов, хороший саппорт. Я знаю как пишут на джава от лица ПМ, каждый change request — это минимум 2а месяца пока он попадет в продакшн. Если фича посложнее и она не в роадмапе то можна ждать и 4-6 месяцев. 2а месяца стает очень длинным сроком для бизнеса, поэтому многие уже не просто смотрять в сторону вебдева а и уходят от больших монстров написанных на джава в сторону php, python.

2а месяца стает очень длинным сроком для бизнеса
зависит от размера бизнеса.

например в нашей компании клиент такого размера что живет — кварталами. ему плюс минус 2 месяца — ролей не играет.

от размера бизнеса все зависит.

поэтому вечны — Java и PHP

Python теоретически может между ними втиснуться.
а практически — там где хватает PHP, а тем более бурно развивающегося — никакой выгоды Python не даст.
а там где Java — тоже.

В итоге, как понял, Python массово используется для создания glue сервисов в облаках.

поэтому многие уже не просто смотрять в сторону вебдева а и уходят от больших монстров написанных на джава в сторону php, python.
как понимаю цифр про эти «многие» у вас нет :)

рекомендую все же погуглить насчет статистики по разработке по для бизнеса.
в том числе и подумать — а откуда у таких контор как SAP AG такие обороты?
кому нужно их ПО по таким ценам? почему бы — не написать быстро и дешево — свое?

да шо тут думать, ява сейчас практически одна сидит в интерпрайсе. Но, я видел уже 2а проекта когда кастомер сказал — я хочу видеть «это» и что бы оно еще и умело вот так делать и делали для кастомера все на пхп+майскл за месяц -два-три по агиле. Для стандартной ентерпрайз разработки на яве только сбор требований занял бы месяц.

и делали для кастомера все на пхп+майскл за месяц -два-три по агиле.
ну так я ж и сказал — пых вечен :)

ну до тех пор пока обмен с интерфейсной частью происходит на основе текстового протокола.
неважно, html там бегает, json, или еще какой yaml, xml.

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

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

почему на свете столько программистов на Java? ведь написано уже стоооолько библиотек...

ручками с нуля приходится писать — всегда.
пока не предвидится чтобы можно было обойтись — «переиспользуемыми модулями»

итого, когда возникает такая необходимость — какая разница — пых или питон?

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

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

причем в мире джавы с этим наааамного лучше чем в мире питона.

Если на пхп чего-то нет, значит вы плохо гуглили :)
А вообще, реиспользуемый код — это характеристика программиста, а не ЯП

Безперечно, найбільше на пігашпі $$$$$$$ які нервують

Боитесь, что быстродействие зависит от курса доллара?

Курс долара тут ні до чого. А перед змінною класти $ надоїдає, хоча ті хто довго на нім пишуть привикають напевно

А ; в конце строки ставить не напрягает? А вот в асме не нужно было...

А давайте ещё {} обсудим или отступы в питоне

Стосовно газового гіганта — на нім не може бути життя, так що жава приречена)))

але є одне але

Since 2008, Python has consistently ranked in the top eight most popular programming languages as measured by the TIOBE Programming Community Index.[15] It is the third most popular language whose grammatical syntax is not predominantly based on C, e.g. C++, C#, Objective-C, Java. Python does borrow heavily, however, from the expression and statement syntax of C, making it easier for C programmers to transition between languages.

An empirical study found scripting languages (such as Python) more productive than conventional languages (such as C and Java) for a programming problem involving string manipulation and search in a dictionary. Memory consumption was often “better than Java and not much worse than C or C++”.[85]

Large organizations that make use of Python include Google,[86] Yahoo!,[87] CERN,[88] NASA,[89] and some smaller ones like ILM,[90] and ITA.[91]
Python has also seen extensive use in the information security industry, including in exploit development.

en.wikipedia.org/...mming_language

нужно понимать что означает индекс Tiobe.

учитывая методику их ранжирования:

сто пицот миллионов скриптов вытолкнут ЯП вверх быстрее, чем тысячи больших приложений.

Python не конкурент Java — на нем пишут ДРУГОЙ вид ПО.

more productive than conventional languages
обсуждалось в «Горький вкус Java»

и даже затронуто случайно в теме Junior PHP с чего начать

на данный момент по выразительности ЯП, конкурентом мог бы быть Ruby.
Но, интерпретатор много хуже по эффективности работы. Опять же, потому что в ЯП Ruby есть вещи, для которых сложно сделать эффективный интерпретатор. Насколько читал, Гвидо в отличие от Matz’а — больше думал наперед — «а как эту красотеть в ЯП — интерпретировать?»

Matz правда недавно обещал что скоро и от GIL избавится, и вообще будет настоящая многопоточность, и встроенная модель акторов, а-ля Erlang, Akka, ...
посмотрим... будет ли — востребовано :)

у python нет самостоятельной ценности.
уникальных фич.
лол :)

Что «лол :)» и что «QA Automation Engineer»? Извините, но я вас не понимаю :)

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

лол :)
?

Это его первое сообщение в теме.
Вы не замечаете вообще, с кем спорите?

то есть я обязан следить за тем кто первый в теме, а первый этот не обязан прочесть вначале что в теме говорилось?

Вы не замечаете вообще, с кем спорите?
а вы не заметили что я не спорил? а утверждал, и вкратце осветил критерии которыми пользуюсь?

но ваша правда — я не слежу с кем спорю. а отвечаю на посты которые мне приходят.
интернет большой, всех не упомнишь. запоминаю только тех кто — запомнился. чем-то ценным. важным. более умным чем мое. например ЖЖные ники многих функциональщиков помню специально не напрягаясь.
«лол :)», и ваш пост — пуст. в нем не информации ни мысли.

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

Конечно нет :) Я пишу «лол» исключительно потому, что ваша фраза, мной процитированная, вопиюще противоречит действительности, и от того она забавная.

А вот ваше ЧСВ вам сильно мешает быть объективным, это уж хотите верьте — хотите нет :)

вопиюще противоречит действительности, и от того она забавная.
да, я так понял.

оно всегда так, чем меньше знаешь, тем больше вопиющего «действительности» говорят более опытные.

А вот ваше ЧСВ вам сильно мешает быть объективным,
вам мешает, вы и разбирайтесь с «моим ЧСВ»
мне мой опыт и искренний интерес к языкам программирования и вообще «к судьбам программирования» не мешает.
уж хотите верьте — хотите нет :)
верю, верю. очередной пустопорожний пост вопиюще убедителен.

статистика их применения — где?

названия писать — ума много не надо.

Веб-фреймворк Django используется в
таких крупных и известных сайтах, как
Instagram[5] , Disqus[6] , Mozilla[7] , The
Washington Times , Pinterest и др.
Wiki
І ще багато де

І ще багато де
це самий переконливий аргумент :)
Веб-фреймворк Django
так, непоганий фреймворк.
але Rails — як на мене — краще.
Instagram[5] , Disqus[6] , Mozilla[7] , The
Washington Times, ..., ...,
чому ви впевнені що я це ігнорую?

якщо лише сайтах — то діскасс та мозіллу можна сміливо викидати, перший бачать лише через їх джаваскріптову апішку, вбудовану в чужі сайти, а інший — заходять при першій інсталяції, а далі все через автоапдейт...
по популярності — це як згадувати про міський сайт кривого рогу...
інші — та, зовсім інша історія

а шо это? а хто это?

можно диаграммку, сколько процентов сайтов на нем крутится?

ну хотя бы — в мире Ruby.

www.indeed.com/...ils, Sinatra&l=

От поясніть з відки такий вивід що с++ важкий? Я розумію що в універі його вчать не так як треба, але все ж таки? Код на жабі і шарпі виглядає смітником, там все на купу і оголошення класу/функції і їх реалізація

а кто сказал что важкий ? просто на с++ решаются некоторые задачи и не всем людям такие задачи интерестны.

вот скажите, сколько строк с++ кода вы написали, чтобы понять что с++ это порыв свежего бриза, по сравнения с затхлыми java/c# ?

Пару тисяч, їх виявилося достатньо для розуміння що він не такий страшний як його мальють, а от для лжави і шарпа вистачило пару сотень щоб зрозуміти що вони не якісь не такі красиві. Я не кажу що вони важкі.

попробуйте написать на с++ миллион строк — прочувствуйте всю глубину.

Постараюсь) можливо тоді він перестане подобатись, але після такої кількості будь яка МП надоїсть.
П.С. а скільки ви рядків написали на плюсах? І в чім причина нелюбові до плюсів, на чім зараз пишите?

Ну я написал. Мож даже больше. И шо? Шо такое страшное я должен был заметить?

Ты бы в профайл посмотрел для начала, что ли, Глава формошлепов.

Хоспади, дык красота кода только от программиста зависит. (если говорить не о брейнфаке, конечно)

Код на жабі і шарпі виглядає смітником, там все на купу і оголошення класу/функції і їх реалізація
Не знаю как в джаве, но в шарпе есть ключевое слово partial — позволяет разнести класс по разным файлам. А вот в плюсах ИМХО код действительно выглядит мусоркой, когда используются шаблоны и нужно всю реализацию писать в хедере.

эээ если хочется разбить класс на разные файлы, то может стоит разбить класс на разные классы?

А если хочется побыдлокодить и написать в одном классе и UI, и бизнес логику? :) Это я к тому, что не всегда же использовать MVVM, MVC и т.д., а подход «всё в одном» бывает вполне уместным.

В любом случае, разбивать файл, вместо того, чтоб структурировать логику — это глупейшее занятие.

Ну и файлик на несколько килострок — это writeonly

Это вы меня спрашиваете? :)

Допустим, класс реализует 2 интерфейса. Чем плохо разнести это на 2 cs-файла по 500 строк, чем в один файл на 1000?

Если такое разделение не навредит читаемости, то стоит разделить класс на два.

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

Зачем усложнять логику, создавать еще одну сущность?
Разделив классы вы упростите логику, повысив уровень абстракции.
Ну а вообще, сам факт того, что вам хочется разнести класс на два файла говорит о том, что части слабо связаны.

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

в с++ є ключове слово export, яке об’явили застарілим але все ж ним можна користуватися.

але краще не треба.
бо жоден компілятор його ніколи і не реалізовував

ключевое слово partial — позволяет

разбить одну мусорку на две.

Те кому мешает реализация шаблонов в хидерах выделяют их в отдельные специальные хидеры. Погрепайте *.ipp файлы в бусте для примера.

Код на жабі і шарпі виглядає смітником, там все на купу і оголошення класу/функції і їх реалізація
/facepalm
а от для лжави і шарпа вистачило пару сотень щоб
... нічого не зрозуміти :)))

почитайте про інтерфейси, наслідування, базові скласи (в тому числі абстрактні), і де і коли це все треба — а де ні :))
а ще в ідеалі можна запустити студію(є і халявна), подивитись наскільки зручно по коду переходити і бачити що і де є.

а після того всього — велике побажання, лишайтесь на плюсах, нам спокійніше буде :)))

Як на мене (але це тільки моє бачення), якщо не попрацювати з «сылками» в С++ та не освоїти всю красу «указателей» то навіть не зрозумієш всієї краси та простоти тієї ж самої java або того ж С#. Із знанням С++ легко освоювати всі інші С-подібні мови. а це і С#, Java, php та інші. Тому перспективи непогані. Механізми NET та JVM стануть зрозуміліші, а уже на скільки це допоможе в подальшому Вам залежить від Вас. Ще пораджу книгу Р.Лафорре С++

В чім проблема з ссилками в указателями? Люди зараз 2014 рік, а не той час коли ви примусово вчили його в універі і вам казали що плюси страшні, ви прочитали книжку по жабі і додіезу в якій йшлося що ця мова позбавлена всіх страшилок з світу с++ і прийнялись казати що він страшний? Я 2 роки просто для фану, досвіду, майб.роботи по вечорам пишу на плюсах і мені не страшно, навіть радісно.
П.С. чим страшніша брехнятим більше в неї вірять

Я 2 роки просто для фану, досвіду, майб.роботи по вечорам пишу на плюсах і мені не страшно, навіть радісно.
Шикарно, человек сетует за “плюсы”, хотя сам на них пишет в свободное от работы время.

А в чім проблема? Так можливо є не бачив корпоративні проекти і те які вони круті або страшні, але це не причина щоб не програмувати на плюсах. Чи я не правий?

в домашніх проектах для фану ви робите те що виходить. якщо щось не виходить — забиваєте, чи робите щось подібне, але не зовсім те...
а в корпоративних — є вимога, і її треба зробити, саме з тими інструментами що у вас є.
поки ви з таким не стикались — вважайте самої мови і не бачили, а лише рекламні проспекти про неї...

У меня есть корпоративные проекты и на шарпе, и на плюсах. Плюсы мне поддерживать легче и быстрее. Что я делаю не так?

може проблема в тому що ви одне з двох краще знаєте і розумієте як це все працює?
взагалі ставити діагнози по фотокартці, і тим більше просити це — не дуже добрий знак ;)

Ключевая фраза: «Як на мене».

а ще таке питання до автора — чому саме c++??? є ж такі чудові мови як java та c#, ну і не тільки.

Ну по-перше, тому, що в універі з наступного року практично все плюси. По-друге, радили — багато хто зі знайомих казав, що треба знати плюси, якщо кудись влаштовуватись, ну і побачив курси від GlobalLogic і мене це наштовхнуло на думку, що зараз такі спеціалісти затребувані. По-третє, от я зараз вже місяці півтори вивчаю, мені реально подобається і не хочеться ваших джав і шарпів=)

аналогічно думав за С++, писав лаби, курсаки, потім пожалів, що стільки часу на нього витратив, даю тобі 200 % гарантію, через 1-2 роки якщо не скорше ти це зрозумієш, і навіть якби мені зарплату давали на 50 % більше, тільки щоб писати на С++, я б з великою радістю відмовився і писав би далі на джава.

Цікаво дізнатись чому пожаліли?

Правильно, в кожногосвої вподобання. Подобається -вчи

от я зараз вже місяці півтори вивчаю, мені реально подобається і не хочеться ваших джав і шарпів=)
мені одному здається, що це класичний психологічний прийом — «я от це чув, а про інше — лише назви... переконайте мене що воно краще, і я не туда почав копати!»

с точки зрения поиска работы С++ очень нишевый язык. Так сказать не мейнстрим. Проекты на которых он все еще пользуется — это риалтайм вставки в банковских трейдинг системах или низкоуровневые драйвера для железа и эмбеддед. Написать на С++ приложение «в одно лицо» — довольно долгий и упорный труд. Но как развитие можна потом перейти в Objective-C который хорошо востребован для маков.

Ні. Плюси використовуються на критичних по швидкодії проектах. Наприклад, гейдев або усіляка алгоритміка типу computer vision. Фігасє не мейнстрім.

Но как развитие можна потом перейти в Objective-C который хорошо востребован для маков
Objc та плюси ріднить по суті лише «типу зворотня» сумісність з C. І objc з часом замінить няшка Swift.

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

Як на мене навпаки, ObjC легше: він не настільки роздутий, як плюси.

я видел курс по изучению С++ и курс по изучению Обжекта. Курс С++ начинатется с переменных, циклов, условий и т.д. потом идет переход на ООП и заканчивается он перезагрузками и полиформизмом. Курс по обжекту с третей лекции врубает MVC и поехали писать гонки на космических кораблях. поэтому для обжекта базовый с++ уже должен быть.

Якщо курс для новачків з третьої лекції врубає в MVC — це значить, що проблема не в мові, а авторі. Нічого не заважає написать суперзакручений туторіал по пітону, де з першої лекції — лямбди, замикання та генератори. Але це не робить пітон складною мовою.
Алсо, всі книжки по ObjC що я бачив, мали стандартну структуру.

стендфордский курс лежит в эплсторе или на ютьюбе.

Меньше читайте за обедом савецкие газеты ))) то бишь, рейтинги ДОУ. ;)
spectrum.ieee.org/...1/5/1/20/1/100

ну на рахунок плюсів було б добре прочитати, а точніше вникнути у «Р. Лафоре — Объектно-ориентированное программирование в С++». З неї починав колись, дуже доступно написана і чітко викладений матеріал.

Согласен!
У Стивена Прата много воды, которая к тому же еще и сбивает столку, уводит от основной мысли,
во общем засоряет поток информации ненужными вещами, повторенями, тем самым препятствуя усвоению более полезных знаний.
Тот же Липпман читается легче.
Лучше вообще освоить основы на чем то более лаконичном — Г. Шилдт, а детали изучать в процессе практики, экспериментируя.

Кстати, какие исходные коды посоветуете поизучать? Какие наиболее подходят для новичков?

справа в тому, що я вже дочитав Прату, а це 1250 сторінок і знову перечитувати щось для новачків не охота. Радили Майерса «55 порад», от думаю почати його.

Герб Саттер, Андрей Александреску «Стандарты программирования на С++»
И начать что-то писать. Срочно. Мелкое. Для себя. Но практика, практика, практика...

Плюсую к Саттеру и Александреску. Несмотря на то, что я уже более 20 лет в плюсах — прочел с интересом и не без пользы. И практика, да. Тоже плюсую.

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

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

не, его не было, а нада было повыдергивать кое какую инфу из логов. и сколько занимает написание тетериса на с++ ?

Чтобы написать или чтобы с языком разобраться? Написать с нуля нормальный спец может и за пару дней на накатанных инструментах. Перед новичком станет сразу проблема графики, которая для С++ не имеет никаких стандартов (разве что Qt довольно близок к этому для настольных приложений).
Главная проблема С++ сейчас в скудности стандартных библиотек. Хотя решения есть для всех прикладных областей, перед начинающим сразу станет проблема поиска, сравнения, изучения инструментов. Тогда как для других языков, библиотеки не нужно искать за три девять земель.

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

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

на пхп можна, и на питоне можна. на обжект-с можна.