Да! (Засучивая рукава) Кто-то тут ещё не согласен с тем, что самые эффективные программы можно написать ТОЛЬКО в машинных кодах (ну в крайнем случае на ассемблере, хотя и это уже профанация) ... а ?hogzie wrote: Язык требует больше дисциплины и понимания основ. Поэтому учите основы, ребята...
Как технарю из России стать программером в США за 150К
-
- Уже с Приветом
- Posts: 2555
- Joined: 26 Sep 2002 15:45
- Location: North-East of NA
Re: Как технарю из России стать программером в США за 150К
-
- Уже с Приветом
- Posts: 1166
- Joined: 13 Jul 2010 18:13
- Location: Bay Area
Re: Как технарю из России стать программером в США за 150К
Все при том. Суть одна. По определению сделать что-то более эффективным на уровне выше невозможно. В лучшем (и частном) случае можно сделать одинаково эффективно. Но не более того. Ходить по кругу не буду.crypto5 wrote:Я нигде не писал про "memory manager более продвинутый", я дискутировал на тему одной фичи: реализации отдельных куч для каждого потока, которая судя по графикам tcmalloc и jemalloc дает хорошие бенефиты в многопоточных нагруженных приложениях, поэтому все тирады по поводу андроида, умных указателей, сборщика мусора и т.д. тут не причем.
-
- Уже с Приветом
- Posts: 1166
- Joined: 13 Jul 2010 18:13
- Location: Bay Area
Re: Как технарю из России стать программером в США за 150К
Никто не против. И основы в виде архикектуры CPU и GPU (желательно) тоже никто не отменял. Если уж взялся за ремесло, копай до конца. За ассемблер можно в лоб получить. Это святое.Abappy wrote:Да! (Засучивая рукава) Кто-то тут ещё не согласен с тем, что самые эффективные программы можно написать ТОЛЬКО в машинных кодах (ну в крайнем случае на ассемблере, хотя и это уже профанация) ... а ?hogzie wrote: Язык требует больше дисциплины и понимания основ. Поэтому учите основы, ребята...

-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Как технарю из России стать программером в США за 150К
Какой уровень выше? Или Вы считаете что менеджер памяти в JRE имплементирован на джава?hogzie wrote:Все при том. Суть одна. По определению сделать что-то более эффективным на уровне выше невозможно. В лучшем (и частном) случае можно сделать одинаково эффективно. Но не более того. Ходить по кругу не буду.crypto5 wrote:Я нигде не писал про "memory manager более продвинутый", я дискутировал на тему одной фичи: реализации отдельных куч для каждого потока, которая судя по графикам tcmalloc и jemalloc дает хорошие бенефиты в многопоточных нагруженных приложениях, поэтому все тирады по поводу андроида, умных указателей, сборщика мусора и т.д. тут не причем.
In vino Veritas!
-
- Уже с Приветом
- Posts: 2555
- Joined: 26 Sep 2002 15:45
- Location: North-East of NA
Re: Как технарю из России стать программером в США за 150К
Со всем уважением - это именно в частном случае - "абсолютно эффективной" реализации сделать на уровне выше ЛУЧШЕ чем на уровне ниже - невозможно. А в нашем несовершенном мире заполненном людьми с разной степенью искривления конечностей, используемых ими для написания кода - на ура (готов спорить на любые деньги, что самый совершенный на сегодняшний момент мемори менеджер ни разу не интегрирован в чипсетhogzie wrote: По определению сделать что-то более эффективным на уровне выше невозможно. В лучшем (и частном) случае можно сделать одинаково эффективно. Но не более того. Ходить по кругу не буду.

-
- Уже с Приветом
- Posts: 3975
- Joined: 04 Jun 2002 17:35
Re: Как технарю из России стать программером в США за 150К
Cobol и Visual Basic соответсвенно. В комплекте с SQL еще и пачку т.н. "4GL" от аксесса до oracle forms (правда - плохо заменили, трудоемкость - особенно на жабе - повысилась).nightmare2 wrote:А кто занимал эту нишу раньше?ddv wrote: В любом случае C# это язык для другой ниши, а не язык следующего поколения который должен заменить C++.
Что заменили Java и .net?
-
- Уже с Приветом
- Posts: 3975
- Joined: 04 Jun 2002 17:35
Re: Как технарю из России стать программером в США за 150К
Аналогичного отимизатора у Java/C# просто не может быть. Сборка Release билда нормального проекта на C++ идет часами на многокоровой машине со SCSI-дисками - Link Time Code Generation и Profile Guided Optimization (когда сначала собираются юнит тесты критических к скорости участков с инструментированием, потом гонятся, потом на основании прогона сборка идет опять) вещи не быстрые. Если запуск Java или .NET программы будет занимать столько времени... хотя и теперь они пускаются медленнее чем ДОС-программы на PC XT с дискеты.Zombie416 wrote:Вообще-то CLR байт-код компилируется в нативный код перед исполнением. И при аналогичном качестве оптимизатора (сравнивая MS VC++ и MS VC++/CLR), скорость исполнения практически идентична, как ни удивительно (правда так было не всегда).ddv wrote:Ничего он не заменяет...не надо сравнивать языки которые компилируются в байт код и языки компилируемые в NATIVE код. И уровень производительности у них совсем разные...

Но проблема даже не в этом. Совсем не в этом.
Code: Select all
class Edge {
short x1, y1, x2, y2;
public:
Edge():x1(-1),y1(-1),x2(-1),y2(-1){}
virtual short getLength() const ...
//...еще виртуальные методы
};
vector<Edge> edges(1000000); //[1]
Тест №1
Перепишите это на Java или C# с использованием ArrayList (можно generic, один фиг это just syntax sugar). Посчитайте количество аллокаций (больше миллиона, не так ли). Посчитайте оверхед по памяти. Прогоните инициализацию этого массива 1000 раз и померяете время. Код и цифры в студию.
Тест №2
Замените определение Edge на
Code: Select all
class Point {
short x, y;
public:
Point():x(-1),y(-1){}
friend class Edge;
};
class Edge {
Point a, b;
virtual short getLength() const ...
//...еще виртуальные методы
};
Постройте тренд увеличения оверхеда по мере увеличения сложности объектно-ориентированной структуры.
Тест №3
Покажите где в C++ понадобилось ручное управление памятью, указатели, появилась хоть одна лишняя строчка кода? Теперь посмотрите на Java/C#.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Как технарю из России стать программером в США за 150К
Только это все не отменяет того факта что очень далеко не всем нужно создавать 1 млрд обьектов в секунду, и что у С++ девелоперов нету hibernate, spring и struts.RobinF wrote:Аналогичного отимизатора у Java/C# просто не может быть. Сборка Release билда нормального проекта на C++ идет часами на многокоровой машине со SCSI-дисками - Link Time Code Generation и Profile Guided Optimization (когда сначала собираются юнит тесты критических к скорости участков с инструментированием, потом гонятся, потом на основании прогона сборка идет опять) вещи не быстрые. Если запуск Java или .NET программы будет занимать столько времени... хотя и теперь они пускаются медленнее чем ДОС-программы на PC XT с дискеты.Zombie416 wrote:Вообще-то CLR байт-код компилируется в нативный код перед исполнением. И при аналогичном качестве оптимизатора (сравнивая MS VC++ и MS VC++/CLR), скорость исполнения практически идентична, как ни удивительно (правда так было не всегда).ddv wrote:Ничего он не заменяет...не надо сравнивать языки которые компилируются в байт код и языки компилируемые в NATIVE код. И уровень производительности у них совсем разные...![]()
Но проблема даже не в этом. Совсем не в этом.На С++ в [1] выполняется ОДНА аллокация. Оверхед по памяти не более 16 байт.Code: Select all
class Edge { short x1, y1, x2, y2; public: Edge():x1(-1),y1(-1),x2(-1),y2(-1){} virtual short getLength() const ... //...еще виртуальные методы }; vector<Edge> edges(1000000); //[1]
Тест №1
Перепишите это на Java или C# с использованием ArrayList (можно generic, один фиг это just syntax sugar). Посчитайте количество аллокаций (больше миллиона, не так ли). Посчитайте оверхед по памяти. Прогоните инициализацию этого массива 1000 раз и померяете время. Код и цифры в студию.
Тест №2
Замените определение Edge наПосчитайте те же метрики опять (3 миллиона аллокаций с копейками и тп).Code: Select all
class Point { short x, y; public: Point():x(-1),y(-1){} friend class Edge; }; class Edge { Point a, b; virtual short getLength() const ... //...еще виртуальные методы };
Постройте тренд увеличения оверхеда по мере увеличения сложности объектно-ориентированной структуры.
Тест №3
Покажите где в C++ понадобилось ручное управление памятью, указатели, появилась хоть одна лишняя строчка кода? Теперь посмотрите на Java/C#.
In vino Veritas!
-
- Уже с Приветом
- Posts: 3975
- Joined: 04 Jun 2002 17:35
Re: Как технарю из России стать программером в США за 150К
nightmare2 wrote: Зато C# могут выучить все, а C++ только особо одаренные.


Если у "программиста" проблемы с освоением такой муры как указатели или множественное наследование, как его можно на пушечный выстрел допускать к более сложным вещам, таким как мультитрединг или оптимизация скорости-памяти, не говоря уж про сложные алгоритмы или программную архитектуру????
Понанимают таких - после чего кода становится в 10 раз больше чем нужно по цене 5x (потому что такие "программисты" делают кучу copy-and-paste и применяют кучу ненужных паттернов), с в 10 раз большим количеством багов и в 10 раз более дорогим сопровождением, не говоря уж про скорость и память...
С++ конечно так себе но... If anything, язык его заменяющий должен быть в 10 раз сложнее в освоении, чтоб тест на знание языка сразу отсеивал "программистов". С++ отсеивает только 80% таковых.

-
- Уже с Приветом
- Posts: 2555
- Joined: 26 Sep 2002 15:45
- Location: North-East of NA
Re: Как технарю из России стать программером в США за 150К
C++0x решит наши проблемыRobinF wrote: С++ конечно так себе но... If anything, язык его заменяющий должен быть в 10 раз сложнее в освоении, чтоб тест на знание языка сразу отсеивал "программистов". С++ отсеивает только 80% таковых.

-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Как технарю из России стать программером в США за 150К
Вопрос только отсеиваются ли..RobinF wrote:nightmare2 wrote: Зато C# могут выучить все, а C++ только особо одаренные.
С++ конечно так себе но... If anything, язык его заменяющий должен быть в 10 раз сложнее в освоении, чтоб тест на знание языка сразу отсеивал "программистов". С++ отсеивает только 80% таковых.

In vino Veritas!
-
- Уже с Приветом
- Posts: 2555
- Joined: 26 Sep 2002 15:45
- Location: North-East of NA
Re: Как технарю из России стать программером в США за 150К
crypto5 - не сомневайтесь - отсеиваются ... 80% а то и больше , но остаётся вполне достаточно.crypto5 wrote:Вопрос только отсеиваются ли..RobinF wrote:nightmare2 wrote: Зато C# могут выучить все, а C++ только особо одаренные.
С++ конечно так себе но... If anything, язык его заменяющий должен быть в 10 раз сложнее в освоении, чтоб тест на знание языка сразу отсеивал "программистов". С++ отсеивает только 80% таковых.

-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Как технарю из России стать программером в США за 150К
Тут вот еще кстати какая проблема появлятеся, предположим есть два часа пособеседовать кандидата, в случае джавы за это время можно и про всякие многопоточности поговорить, и про базы данных, и про паттерны, и про веб дев, т.е. на выходе получается вполне готовый к улучшению мира человек, а в С++ чувствуется только дойдем до того почему вызов конструктора из конструктора плохая идея(согласно hogzie джуниорский вопрос).Abappy wrote:crypto5 - не сомневайтесь - отсеиваются ... 80% а то и больше , но остаётся вполне достаточно.crypto5 wrote:Вопрос только отсеиваются ли..RobinF wrote:nightmare2 wrote: Зато C# могут выучить все, а C++ только особо одаренные.
С++ конечно так себе но... If anything, язык его заменяющий должен быть в 10 раз сложнее в освоении, чтоб тест на знание языка сразу отсеивал "программистов". С++ отсеивает только 80% таковых.
In vino Veritas!
-
- Уже с Приветом
- Posts: 3975
- Joined: 04 Jun 2002 17:35
Re: Как технарю из России стать программером в США за 150К
http://discuss.fogcreek.com/joelonsoftw ... Replies=29zzhou wrote: NASA марсоходом на Яве управляет. Ничего они в технологиях не понимают!
The Mars Rover software is not written in Java as some dumbass mentioned - that is a practice nav-aid used on the earth end to test and plan Rover travels - they use VxWorks from Wind River for the actual Rover firmware. In case you missed it, Wind River was all over the place with press releases mentioning the fact when the Rover woke up on schedule and started moving around as directed using their stuff.
-
- Уже с Приветом
- Posts: 3975
- Joined: 04 Jun 2002 17:35
Re: Как технарю из России стать программером в США за 150К
Зачем? Не говоря уж про "умные указатели" которые есть во всех библиотеках и последнем C++ (да и имплементируются в несколько строк), в QT, например, есть и сборщик мусора - но не обязательный, а только для тех случаев когда детерминированное разрушение объектов не нужно (а оно нужно часто, если хотеть чтоб все хорошо и быстро работало).zzhou wrote: На С++ всё можно реализовать. Но только в Яве оно уже есть. Уже работает. Во всех приложениях.
Т.е. написать библиотеку умных указателей на С++ можно. Я уверен что многие сишники за неё радостно возьмутся - в рамках разработки рабочего места кассира. И угробят на доводку этого менеджера памяти времени больше чем на само рабочее место кассира.