Учить С++ сложно и трудно, а платят меньше
От: fromegg  
Дата: 28.12.11 20:46
Оценка: -4 :))) :)))
Вопрос, которй меня волнует уже года 3, а внятного ответа еще не находил или хотя бы аргументов )

Итак С++ — мощная низкоуровневая пушка с кучей возможностей, на этом звере написано почти все крутое и самое сложное )

Код на С++ быстрее и эффективнее остальных, "С++ дает программисту свободу выбора, даже если это даст ему возможность выбирать неправильно."(Вики)

В общем требует четкого понимания что ты делаешь
к примеру:

ты должен знать почему второй вариант быстрее первого
1)void printArray(vector<int>)
2)void printArray(const vector<int>&)

ты должен знать что быстрее for(...;++iterator или iterator ++)

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

в твоих руках мощный механизм, которым нужно управлять только с умом
.. и в связи с этим обучение С++ программиста стоит дороже и есть сложнее, тогда
почему же на фоне .NET/Java у С++ ниже зп ??? ну где справедливость )

Маленькая статистика — но все же она везде практические в таком порядке,
с++ девелоперы стоят на одной линии с php кодерами

junior intermediate senior
Developer — Java/J2EE $63,000 $86,000 $110,000
Developer — .Net (C#/VB.NET) $58,000 $78,000 $105,000
Developer — Visual Basic $57,000 $64,000 $75,000
Developer — C++ $54,000 $68,000 $85,000
с++ зарплаты обучение
Re: Учить С++ сложно и трудно, а платят меньше
От: _Obelisk_ Россия http://www.ibm.com
Дата: 28.12.11 20:53
Оценка:
Здравствуйте, fromegg, Вы писали:


F>Маленькая статистика — но все же она везде практические в таком порядке,

F>с++ девелоперы стоят на одной линии с php кодерами

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



Душа обязана трудиться! (с) Н.Заболоцкий.
Re: Учить С++ сложно и трудно, а платят меньше
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 28.12.11 20:55
Оценка: 1 (1)
Учить С++ сложно и трудно, следовательно при программируют на нём хуже.

F>ты должен знать что быстрее for(...;++iterator или iterator ++)


Без разницы.

F>ты должен понимать почему в цикле нельзя определять переменные, а должен их выносить на уровень выше


Для стековых POD типов нет разницы.
Ce n'est que pour vous dire ce que je vous dis.
Re: Учить С++ сложно и трудно, а платят меньше
От: 0x7be СССР  
Дата: 28.12.11 20:55
Оценка: 2 (2)
Здравствуйте, fromegg, Вы писали:

F>Вопрос, которй меня волнует уже года 3, а внятного ответа еще не находил или хотя бы аргументов )

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

F>Маленькая статистика — но все же она везде практические в таком порядке,

F>с++ девелоперы стоят на одной линии с php кодерами
"Невидимая рука рынка" (с)

Не претендую на истину, лишь выскажу предположение: многое из того, что раньше писалось на С++ стали писать на других языках =>
спрос на программистов С++ упал, а на программистов на этих "других языка" вырос.
Re: Учить С++ сложно и трудно, а платят меньше
От: minorlogic Украина  
Дата: 28.12.11 21:06
Оценка:
Здравствуйте, fromegg, Вы писали:


F>ты должен знать почему второй вариант быстрее первого

F>1)void printArray(vector<int>)
F>2)void printArray(const vector<int>&)

F>ты должен знать что быстрее for(...;++iterator или iterator ++)


Мой фейспалм Вы наткнулись на список заблуждений про С++ ?

....

F>почему же на фоне .NET/Java у С++ ниже зп ??? ну где справедливость )


1. Нет справедливости , это из сказок. Или справедливость есть , но она другая.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Учить С++ сложно и трудно, а платят меньше
От: fromegg  
Дата: 28.12.11 21:13
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

_O_>Здравствуйте, fromegg, Вы писали:



F>>Маленькая статистика — но все же она везде практические в таком порядке,

F>>с++ девелоперы стоят на одной линии с php кодерами

_O_>Важна не ценность С++ девелопера самого по себе, а то, за сколько продается софт, который он производит. Если на Java создаются решения, которые продаются за большие деньги, то и стоимость программистов будет повыше.



в голове только один образ

преподаватель в вузе:

Ребята мы не будем учить с++ и использовать следующие 4 семестра, зачем ломать себе мозг и платят то этим специалистам меньше чем другим,
осваивать будем к примеру питон и за 1 семестр, он прекрасен удобен и всемогущ
Re: Учить С++ сложно и трудно, а платят меньше
От: VovkaMorkovka  
Дата: 28.12.11 21:17
Оценка: 1 (1) +3
Здравствуйте, fromegg, Вы писали:

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

Кто всё это освоил, получает от 150 тысяч.
Те — же, кто прочитал две книжки и думает все, обламывается.
Это не Java, где основная сложность в изучении туевой хучи фреймворков.
Re: Учить С++ сложно и трудно, а платят меньше
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 28.12.11 22:07
Оценка: :)
Здравствуйте, fromegg, Вы писали:

F>ты должен знать почему второй вариант быстрее первого

F>1)void printArray(vector<int>)
F>2)void printArray(const vector<int>&)

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



#include <tchar.h>
#include <windows.h>

#include <iostream>
#include <vector>

template<typename T>
int f(int count, T v)
{
    int acc(0);
    for (size_t i(0), size(v.size()); i != size; ++i)
        for (int j(0); j != count; ++j)
            acc ^= v[i];
    return acc;
}

template<typename T>
LONGLONG time_f(size_t count)
{
    std::vector<int> v(10000);
    LARGE_INTEGER start, finish;
    ::QueryPerformanceCounter(&start);
    f<T>(count, v);
    ::QueryPerformanceCounter(&finish);
    return finish.QuadPart - start.QuadPart;
}

int _tmain(int argc, _TCHAR* argv[])
{
    for (int i(0); i != 16; ++i)
    {
        int iterCount(100);
        LONGLONG a(0), b(0);
        for (int j(0); j != iterCount; ++j)
        {
            a += time_f<std::vector<int> >(i);
            b += time_f<const std::vector<int> &>(i);
        }
        std::cout << i << ' ' << a/iterCount << ' ' << b/iterCount << '\n';
    }
    return 0;
}
Ce n'est que pour vous dire ce que je vous dis.
Re[2]: Учить С++ сложно и трудно, а платят меньше
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.11 22:47
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Здравствуйте, fromegg, Вы писали:


F>>ты должен знать почему второй вариант быстрее первого

F>>1)void printArray(vector<int>)
F>>2)void printArray(const vector<int>&)

DR>Просто из интереса, сколько раз надо обратиться к каждому элементу массива int, чтобы копирование стало дешевле косвенных обращений? Раз пять.


DR>


DR>
DR>int _tmain(int argc, _TCHAR* argv[])
DR>{
DR>    for (int i(0); i != 16; ++i)
DR>    {
DR>        int iterCount(100);
DR>        LONGLONG a(0), b(0);
DR>        for (int j(0); j != iterCount; ++j)
DR>        {
DR>            a += time_f<std::vector<int> >(i);
DR>            b += time_f<const std::vector<int> &>(i);
DR>        }
DR>        std::cout << i << ' ' << a/*/iterCount*/ << ' ' << b/*/iterCount*/ << '\n';
DR>    }
DR>    return 0;
DR>}
DR>

Что я делаю не так, кроме того что a и b не делю на iterCount?
0 3776 4
1 4548 7
2 4555 6
3 4431 5
4 4523 5
5 4471 9
6 4524 5
7 4632 7
8 3818 2
9 4449 2
10 4514 4
11 4364 7
12 3098 2
13 4524 3
14 3375 1
15 4413 4
Re[3]: Учить С++ сложно и трудно, а платят меньше
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 28.12.11 22:54
Оценка:
Здравствуйте, samius, Вы писали:

S>Что я делаю не так, кроме того что a и b не делю на iterCount?


Видимо, используешь более умный компилятор. Можно попробовать сделать acc глобальным или инициализировать v ненулевыми значениями.
Ce n'est que pour vous dire ce que je vous dis.
Re[4]: Учить С++ сложно и трудно, а платят меньше
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.11 23:38
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Здравствуйте, samius, Вы писали:


S>>Что я делаю не так, кроме того что a и b не делю на iterCount?


DR>Видимо, используешь более умный компилятор. Можно попробовать сделать acc глобальным или инициализировать v ненулевыми значениями.

да, с глобальным acc стало лучше
Еще изменил основной цикл в main
for (int i(0); i <= 1000; i += 100)


0 5018 1907
100 667136 668618
200 1337494 1335982
300 2007902 2003617
400 2666167 2666858
500 3337847 3337440
600 3968144 3966200
700 4627751 4638570
800 5312231 5322321
900 5959656 5966582
1000 6652584 6658937


400 обращений на каждый элемент таки сводят на нет выигрыш от передачи массива по ссылке.
Re: Учить С++ сложно и трудно, а платят меньше
От: мыщъх США http://nezumi-lab.org
Дата: 28.12.11 23:41
Оценка: 1 (1)
Здравствуйте, fromegg, Вы писали:

F>Вопрос, которй меня волнует уже года 3, а внятного ответа еще не находил или хотя бы аргументов )

F>Итак С++ — мощная низкоуровневая пушка с кучей возможностей, на этом звере написано почти все крутое и самое сложное )
это утверждение "россия — родина слонов". далеко не все крутое и сложное пишется на плюсах.

F>Код на С++ быстрее и эффективнее остальных, "С++ дает программисту свободу выбора,

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

F>В общем требует четкого понимания что ты делаешь

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

например,
a = [-1,0,1];
c = a;
del c[1];
print a

печатает:
-1, 1

а вот:
a = [-1,0,1];
c = a[:];
del c[1];
print a

печатает:
-1, 0, 1

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

F> ты должен понимать почему в цикле нельзя определять переменные, а должен их выносить на уровень выше

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

F>в твоих руках мощный механизм, которым нужно управлять только с умом

F>.. и в связи с этим обучение С++ программиста стоит дороже и есть сложнее, тогда
F>почему же на фоне .NET/Java у С++ ниже зп ??? ну где справедливость )
наверное потому, что пытаются управлять этим сложным инструментом без ума. где расположены переменные программиста не должно парить и в первую очередь следует оптимизировать программу на уровне алгоритмов и структур данных. вообще есть хорошая поговорка -- покажи мне свои структуры данных и я скажу кто ты.

F>Маленькая статистика — но все же она везде практические в таком порядке,

F>с++ девелоперы стоят на одной линии с php кодерами
а сколько получают пилоты истребителей? а их обучение обходится _намного_ дороже.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[2]: Учить С++ сложно и трудно, а платят меньше
От: мыщъх США http://nezumi-lab.org
Дата: 28.12.11 23:59
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Здравствуйте, fromegg, Вы писали:


0> Работодателю не важно, насколько крут инструмент, его интересует результат.

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

F>>Маленькая статистика — но все же она везде практические в таком порядке,

F>>с++ девелоперы стоят на одной линии с php кодерами
0>"Невидимая рука рынка" (с)
...или статистика неправильная. если брать php, то мы увидим, что карьерный рост и максимальная планка зарплаты очень ограничены. с одной стороны стена, с другой -- пропасть. а вот у си/си++/java программистов в этом плане возможностей намного больше.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[3]: Учить С++ сложно и трудно, а платят меньше
От: мыщъх США http://nezumi-lab.org
Дата: 29.12.11 00:10
Оценка:
Здравствуйте, fromegg, Вы писали:

F> Ребята мы не будем учить с++ и использовать следующие 4 семестра, зачем ломать себе мозг

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

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

или, например, антивирус. его быстродействие определяется не тем, где расположены переменные в цикле, а глубиной курений теории графов, конечных автоматов и прочей алгоритмизацией.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: Учить С++ сложно и трудно, а платят меньше
От: MescalitoPeyot Украина  
Дата: 29.12.11 04:13
Оценка: 3 (1)
Здравствуйте, fromegg, Вы писали:

F>Вопрос, которй меня волнует уже года 3, а внятного ответа еще не находил или хотя бы аргументов )


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

Java — это практически всегда (по крайней мере если смотреть на валовый продукт) корпоративный софт, всякое банковское ПО и прочий аутсорс. Более или менее однородная и нормально оплачиваемая отрасль.
На плюсах же достаточно большой объем занимают:
1. Геймдев — где по неизвестным науке доширак! доширак! доширак! причинам платят мало при том что народ еще и овертаймит регулярно.
2. Embedded — где, по-видимому, есть определенное количество старичков на помоечку! на помоечку! на помоечку!, которые не успевают апгрейдить себя/место работы/скиллы в быстро изменяющемся мире.


отсюда http://dou.ua/lenta/articles/salaries-developers-may-2011/
Re: Учить С++ сложно и трудно, а платят меньше
От: abibok  
Дата: 29.12.11 04:33
Оценка: +1 -1
Что такое "учить С++"? Вы что, текст стандарта наизусть заучиваете что ли? Что в С++ есть такого, что требовало бы больше месяца на изучение? Не парадигма ООП, не техники оптимизации, не архитектура ОС и WinAPI, не сторонние библиотеки, а именно сам язык С++.
Re: Учить С++ сложно и трудно, а платят меньше
От: abibok  
Дата: 29.12.11 04:48
Оценка:
F>Итак С++ — мощная низкоуровневая пушка с кучей возможностей, на этом звере написано почти все крутое и самое сложное )

Что, по вашему мнению, в С++ низкоуровнего и о какой куче возможностей, которых нет в других языках, идет речь?

F>Код на С++ быстрее и эффективнее остальных


Как вы понимаете "эффективнее" и чем это отличается от "быстрее"?

F>В общем требует четкого понимания что ты делаешь


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

F>ты должен знать почему второй вариант быстрее первого

F>1)void printArray(vector<int>)
F>2)void printArray(const vector<int>&)

Копирование занимает время. Это справедливо для любого языка и на первый взгляд не выглядит черной магией "невероятно, но один вариант почему-то быстрее другого, кааак они этого добились??"

F>ты должен знать что быстрее for(...;++iterator или iterator ++)


Вы удивитесь насколько у компилятора есть свое мнение по этому поводу.

F>ты должен понимать почему в цикле нельзя определять переменные, а должен их выносить на уровень выше


Любой современный компилятор сделает это за вас.

F>и еще кучи всяких особенностей


Приведенное выше — это особенности? И, видимо, наиболее сложные в плане изучения?

F>+ контроль использования памяти


Сделал new — сделай delete. Что в этом эзотерического, переводящего С++ в разряд чего-то элитарного?

F>почему же на фоне .NET/Java у С++ ниже зп ??? ну где справедливость )


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

В университетах нормальных стран не учат С++, там учат концепциям программирования. А потом дают домашнее задание "реализовать учебный проект на языке Х" и сам язык изучается как нечто фоновое и чисто утилитарное.
Re[3]: Учить С++ сложно и трудно, а платят меньше
От: 0x7be СССР  
Дата: 29.12.11 05:18
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>Здравствуйте, 0x7be, Вы писали:


0>>Здравствуйте, fromegg, Вы писали:


0>> Работодателю не важно, насколько крут инструмент, его интересует результат.

М>если "крутость" инструмента это "лучший результат за меньшее время", то работодателю это очень даже интересно. вот только си++ под это определение попадает с очень большими оговорками.
В том-то и дело, что тут под крутизной понимается нечто иное, чем "лучший результат за меньшее время".
Re: Учить С++ сложно и трудно, а платят меньше
От: placement_new  
Дата: 29.12.11 06:50
Оценка:
Здравствуйте, fromegg, Вы писали:

Некогда одна эпическая личность писала "умение героически выстрелить себе в ногу с помощью своего же инструмента, центися разве что у прыщавых сосок, но никак не работадателем".
Вот и все.
Re[3]: Учить С++ сложно и трудно, а платят меньше
От: _Obelisk_ Россия http://www.ibm.com
Дата: 29.12.11 06:53
Оценка: +2
Здравствуйте, fromegg, Вы писали:

F>преподаватель в вузе:


F>Ребята мы не будем учить с++ и использовать следующие 4 семестра, зачем ломать себе мозг и платят то этим специалистам меньше чем другим,

F>осваивать будем к примеру питон и за 1 семестр, он прекрасен удобен и всемогущ
F>

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



Душа обязана трудиться! (с) Н.Заболоцкий.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.