2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|||||||
1 | |||||||
Различия между языками C++, C#, Python и Java14.04.2017, 11:27. Показов 17319. Ответов 228
Метки нет (Все метки)
Разница простая - С++ универсальный язык предназначенный прежде всего для cоздания нативного кода и полной свободы программиста. Т.е. позволяет создавать высокоэффективные математически нагруженные и т.д. программы в том числе реального времени, при этом выстрелить себе в ногу очень проблемно. Правда если таки выстрелить то отстрелит обе ноги одним махом.
Все остальные - обрубки оного языка предназначенные каждый для своей ниши. Java и C# для пользования программистами более низкой квалификации для решения не сильно интеллектуальных но сильно трудоемких задач. Т.е. тех где хотя бы в теории можно взять количеством а не качеством разработчиков. Ну типа информационных систем крупных корпораций и т.п. Заявляется что ногу себе прострелить невозможно. На самом при применении в неправильной сфере способны прострелят не только ногу но и перекосиить кучу окружающих, причем из-за неподконтрольных программисту свойств виртуальной машины на которой выполняются . Python - по большому счету предназначен вообще не для профессиональных программистов а для ученых других специальностей которым нужен высокофункциональный калькулятор для обсчета своих мат.методов на скорую руку. Ну типа современного заменителя фортрана для непрофессионалов в области программирования. (В 60-е -70-е ходила шутка - настоящий физик может на любом языке писать на фортране). Возможности накосячить тоже обрублены на корню вместе со свободой действий.
0
|
14.04.2017, 11:27 | |
Ответы с готовыми решениями:
228
Различия между версиями в python Различия между Java и Си++ Программирование роботов и ИИ. Выбор между C# и Java. Немного о Python Переключение между скриптовыми языками |
|
14.04.2017, 12:53
#2
|
0
|
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
|
|
14.04.2017, 13:45 | 3 |
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
14.04.2017, 16:54 | 4 |
Это основной критерий? То есть, С++ - это обрубок Фортрана?
Разве это не недостаток? Конечно, если код писать для компьютера, а не для микроволновки. Ну а самый свободный язык - это ассемблер? И в чём свобода? Что можно вручную выполнять нудную работу, с которой машинный интеллект справляется лучше, чем человек?
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
14.04.2017, 21:04 [ТС] | 5 |
Это огромное преимущество. При этом компиляцию через байткод VM никто не запрещал. К примеру тот же clang в качестве промежуточного представления использует байт-код LVVM который докомпилируется сразу.
Кстати вот как раз манаджед ява и позиционировалась в начале своего существования как язык для кофеварок и микроволновок. Но там ее вообще диверсией обозвали. Во всем. Не может. К примеру мусоросборник по определению не может отличить нужный объект от не нужного самостоятельно. САмостоятельно он может убирать только мусор генеримый компилятором. С++ сам мусора вообще не генерит. А как и когда удалять созданные программистом объекты и самое главное как при этом разрывать взаимосвязи известно только программисту. А там где может типа поздней докомпиляции в машкод у С++ это тоже никто не запрещал. Все остальное типа мусоросборника и т.п. - то что в яве/С#/Java это примиитивнейший механизм лечения висячих ссылок путем перевода их в утечки памяти в надежде что эти утечки временные. А вот реализовать в одной программе разные задаче-ориентированные механизмы в том числе и разные для разных объектов ни Java ни # ни Python не позволяют. С++ это одно из дальнейших развитий фортрана. Фактически помесь идей фортрана с алголом и модулой. Плюс шаблоны. Кстати фортран из области реалтайма ушел в 70-е. На самом деле врут. Выстрелит в подавляющем большинстве случаев на этапе отладки/доводки когда заряжено холостыми. А вот все эти менеджед с огромной вероятностью стрельнут только в продакшине. Для создания математического обеспечения ЭВМ? Ну наверное последний как считает 80% работников индустрии которые живут под девизом "программистам математика ни к чему". При этом почему то эти 80% работников получают все вместе 20% з/п выплачиваемых в индустрии. Остальные 80% з/п получают 20% работников которые именно этот математически высоко нагруженный софт и пилят.
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
14.04.2017, 22:12 [ТС] | 7 |
Давайте во первых не будем путать хозяев с наемными работниками. Социалочки или чатики такой доход хозяевам и приносят потому что могут быть созданы программерами с минимальной в индустрии з/п руководимыми спецами с не очень высокой з/п по индустрии. Друг в подобной контре тилидом-архитектором работает в США. З/п у него около $120000/год ($10000/мес или около $63/час). При этом у рядового разраба порядка $40000/год ($3.300/мес) (что без В/О по штатам очень даже не кисло, но по индустрии мизер т.е. около $20/час). При этом яву там поголовно в школе учат. т.е $20-баксового ява-монкей-кодера можно быстренько из любого желающего гражданина слепить путем 1-2 недельных курсов, соответственно дифицита в нижнем звене разработчиков нетб есть высокая текучка "кадров".
При этом прибыли от разработки промышленного и прочего математически высоконагруженного софта на порядки выше а тем более в пересчете на одного задействованного разработчика. Но и требования к скилам разработчика на порядок выше (ВО по специальности как минимум и обязательно знание нужных направлений матана, т.е. как минимум квалификация Software Engineer). Отсюда и дефицит разработчиков и как результат разница в з/п разработчиков до 10 раз в пользу CAD/CAM/FA/Embedded.
0
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
14.04.2017, 22:43 | 8 |
А с фига ли?
120/40 = 3, при том, что тимлидов не мало, а 40 — для «самых маленьких», которых не так много, большинство занимают промежуточное положение, откуда же ты взял 80/20?
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
14.04.2017, 22:58 [ТС] | 9 |
В тех конторах где такие 20-баксовые кодеры востребованы обычно 1 тимлид-архитектор с ВО (Software Engineer) на 50-100 20-баксовых монкей-кодеров (Software Developers).
Это тим-лид в конторе по разработке социалочек. В конторе по разработке CAD/CAM это з/п джуна. Кстати спрашивал друга почему по специальности работать не идет? Говорит и так бабла хватает (120000/год в Техасе это вообще не кисло) а тем более что жена у него тоже Software Engieneer в соседней подобной конторе. А ответственность разрабатываемого софта и т.д. при этом никакая по сравнению с работой по специальности. При этом по специальности может квадрокоптеры и прочую робототехнику на досуге для души мастерить, а не то что прикажут. Это кстати еще один источник дефицита спецов в CAD/CAM.
0
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
15.04.2017, 00:05 | 10 |
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
15.04.2017, 00:52 [ТС] | 11 |
Да вот и на $160k-220k вакансия джуна:
http://www.gambitny.com/career... DxHAwEJ5OA Тоже матан нужен, только другого направления. Причем умение не просто в справочнике прочитать а свои мат.методы разрабатывать. А тех вакансий которые по CAD/CAM на обычных сайтах обычно нет. Подавляющее большинство позиций подпадает под категорию сотрудников с TOP SECRET ACCESS LEVEL и соответственно подбор кадров идет не через сайты. Добавлено через 21 минуту Да кстати если в этой области самостоятельно что то толковое запилишь у себя гараже, то очень быстро приедут добрые дяди в штатском которые быстренько объяснят в какой комплектации то что запилил продаешь только Пентагону, в какой только сертифицированным правительством организациям, а в какой всем остальным.
0
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
15.04.2017, 01:35 | 12 |
Ну и? Датамайнинг неплохо оплачивается. Это область, при чём тут язык? Пишут на всяком, плюсы не в топе.
Не приедут, а прилетят. На Черных Вертолётах, ага.
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
15.04.2017, 01:45 | 13 |
Fulcrum_013,
Ваши рассуждения на тему высокопроизводительных систем напоминают мне СССР, когда считалось, что задача для настоящего инженера - это создавать танки, которые пройдут по любому бездорожью. А создавать мерседесы, которые застрянут в первом же овраге, это удел тех, у кого квалификации на танки не хватает. Вот только опыт последних тридцати (или сорока?) лет показывает, что сколько бы не тужились эти гении, всё равно получаются жигули. А какие-нибудь японцы и корейцы, которые ездили на ишаках, когда мы ракеты в космос запускали, уже делают автомобили лучше наших. Видимо, чтобы сделать хороший автомобиль, тоже нужна квалификация (но другая)? Я сам занимался низкоуровневой оптимизацией. Переписываешь нормально (понятно) написанный код так, чтобы компилятор превратил его в высокопроизводительный машинный код (с использованием векторных операций и т.п.). Всё замечательно. Но выходит новое поколение процессоров, и этот код работает медленней, чем до оптимизации. Я в своё время освоил много специфических приёмов низкоуровневой оптимизации. А сейчас большинство из них не ускоряют, а замедляют программу. Когда пишешь просто, компилятор видит стандартные паттерны и использует заложенные в него оптимизации. А когда начинаешь мудрить, компилятор не понимает, что ты хочешь, и, на всякий случай, транслирует это в "надёжный" машинный код. Добавлено через 8 минут Fulcrum_013, Всё то, что Вы преподносите как преимущество языка, на самом деле является преимуществом компилятора. Я не буду спорить, компиляторы джава и си-шарп пока (пока!) не настолько хороши, как компиляторы Си++. Но они развиваются. Не так давно компьютер ещё не мог человека в Го или Покер обыграть. Например, уже сейчас ведущие специалисты признают, что будущее за автоматическими сборщиками мусора. В особо продвинутых языках с особо продвинутой системой типов 90% сборки мусора кодируется на этапе компиляции. Эта тупая железяка просчитывает (перебирает) все ветви использования переменной и уже на этапе компиляции знает, когда объект можно удалять... и добавляет соответствующий код. Там, где можно тупо перебрать миллион вариантов и выбрать лучший, человеку до компьютера очень далеко.
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
15.04.2017, 02:02 [ТС] | 14 |
Датамайнингом должен в большинстве случаев заниматься не профессиональный программист а ученый/инженер из той области наук для которой майнятся данные. Они как бы методы обсчета изобретают а не конечный програмный продукт делают. Соответственно им что то на подобие питона и нужно для того чтобы на скорую руку мат методы оные тестить самостоятельно, а не каждое изменеение в методе через весь цикл разработки ПО тащить. Именно для этого питон и создавался. Ну а наука там действительно хорошо оплачивается.
В IT индустрии все с точностью до наоборот. Как раз все эти социалочки чатики и т.п. по большому счету и занимают место оных танков которые никак на уровень жизни не влияют. А как раз сфера СAD/CAM/FA/Embedded и в том числе Big Data методы в купе с ними и являются теми полезными для населения мерсами и т.д благодаря которым и повышается производительность труда и качество производимой продукции что и поднимает уровень жизни. Современный С++ это делает сам. Компилит в LLVM байткод который докомпилируется с учетом целевой платформы. Главный вопрос не в оптимизации кода а в оптимизации разработки софта. При этом алгоритмическая оптимизация способна дать ускорение в тысячи раз большее по сравнению с низкоуровневой. Java/C# удобны/эффективны при разработке алгоритмов применяемых в GUI и максимум в Middle-ware - прослойках между клиентом и сервером DB. При этом средства предназначенные "чтобы не накосячили" тормозят на таких приложениях в допустимых пределах. Т.е. их ниша - именно социалочки и некритичные по надежности и скорости реагировани веб-сервис и GUI-клиенты. Как раз та ниша в которой можно взять количеством а не качеством разработчиков. Для эффективной же реализации алгоритмов пользуемых в CAD/CAM/Embedded/DB Server/compiler/VM и еще куче чего там где все решает в первую очередь качество разработчиков а не количество, java и C# как минимум не удобны для использования разработчиком. Их тормоза и нерациональное использование ресурсов при этом вообще отдельная тема делающая их в большинстве случаев просто неприменимыми в этих нишах.
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
15.04.2017, 02:06 | 15 |
Fulcrum_013,
Все эти низкоуровневые возможности, которые Вы расцениваете как преимущество С++, это всё равно, что читать по складам. Да, конечно, по складам можно прочитать даже незнакомое слово, но насколько часто это нужно? И насколько чтение по складам менее продуктивно, чем чтение по словам? Программист (а не кодер) должен думать о задаче, которая перед ним стоит, а не о том, как ему организовать цикл или освободить память. Добавлено через 2 минуты Вот! О чём и речь.
0
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
15.04.2017, 02:11 | 16 |
Ну прям как Java -> JVM bytecode -> JIT -> Native
А тут C++ в антитопе.
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
15.04.2017, 02:21 | 17 |
Fulcrum_013,
Все те преимущества С++, которые Вы расписываете, относятся к классическому С++ (2000-2010 годов). Давайте взглянем на него внимательней. Если требуется создать "высокоэффективные математически нагруженные и т.д. программы", то С++ уступает Фортрану. И дело тут не только в том, что для Фортрана есть очень много специальных библиотек. Компилятор проще оптимизировать программу на Фортране - более простой синтаксис и меньше нетривиальных побочных эффектов. Если требуется написать низкоуровневый драйвер, то С++ уступает обычному С. Если требуется написать высокоэффективный код в условиях жёсткого ограничения ресурсов (микроконтроллеры и т.п.), то С++ по сравнению с Фортом, как слон в посудной лавке. Пока Вы пишите С++ компилятор для конкретного микропроцессора, программист на Форте уже давно закончит писать программу и напишет ещё две другие. А Вы ещё даже и не приступили собственно к реализации задачи. Если требуется написать высоконадёжную, хорошо масштабируемую программу реального времени, то лучше использовать Erlang. Про "энтерпрайз" приложения Вы сами писали - тут лучше использовать Java или C#. Да, конечно, на С++ теоретически можно написать библиотеку, которая поможет приблизиться к вышеперечисленным языкам в каждом конкретном случае... но у всех самопальных библиотек есть один фатальный недостаток. Во-первых, тому, кто будет читать/поддерживать Ваш код, придётся постоянно отвлекаться на изучение Вашей библиотеки. Во-вторых, когда Вы перейдёте в другую контору, там будет другая самопальная библиотека, и Вам придётся потратить немало времени на её изучение.
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
15.04.2017, 02:35 [ТС] | 18 |
Эксклюзив массовым не бывает или это уже не эксклюзив. Еще раз повторю - применение плюсов оправдано в тех нишах где добиться результата можно только используя высококвалифицированных разработчиков, т.е порог вхождения - Software Engeneer. Это и есть те 20% разработчиков которые получают 80% з/п в индустрии.
С учетом того что существуют ниши где результат можно получить количеством а не качеством разработчиков в топе популярности будут именно средства предназначенные для остальных 80% Programmers для которых даже ВО по специальности не требуется. Да кстати, если вести рейтинг в пересчете з/п на строку кода а тем более прибыли на строку кода то С++ будет в самом топе, по всей видимости вместе со специализированными языками типа языков из пакета Symantec Step-7 которые в рейтингах популярности вообще не значатся. Добавлено через 7 минут Компилятор С++ всегда компилил в промежуточное представление а не в машкод. Именно с той целью чтобы непосредственно кодогенерация для конкретного железа не была зависима от самого компилятора. Кодогенерато же ничем из промежуточного представления ничем не отличается ни для С++ ни для фортрана. Не надо только сказки раскзывать. Насмотрелся на то как программисты на Фортране для внесения изменений в систему FA в большинстве случаев для доделки ассемблер а не фортран выбирали. Добавлено через 1 минуту Не забывайте добавить "мягкого" реального времени. Что само по себе антинаучный термин противоречащий определению системы реального времени.
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
15.04.2017, 02:35 | 19 |
Fulcrum_013,
Но не один я "такой умный". Ведущие специалисты по С++ намного лучше меня видят все эти проблемы С++. Я недавно прочитал про С++11 и С++14. Абстракции высшего порядка, автоматическая сборка мусора и прочие достижения цивилизации. Признаюсь честно, на этих языках я вообще не писал, но интуитивно чувствую, что с этими новшествами С++ становится нормальным современным языком. И на нём можно будет (уже можно) писать нормальный код - практически такой же, как на C# и Java. Вот только С++ опять в роли догоняющего, так как C# и Java уже устарели. Им на смену приходят более современные языки типа Scala и F#. Они ещё не стали мейнстримом, но видно, как C# и Java постепенно превращаются в перегруженных слоноподобных монстров, типа С++, в попытке не отстать от них. А на горизонте уже маячат новые, прогрессивные языки с более совершенной системой типов.
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
15.04.2017, 02:36 | 20 |
Может быть ничем не отличаются, но все тесты расставляют языки (компиляторы) в таком порядке: Fortran > C > C++.
0
|
15.04.2017, 02:36 | |
15.04.2017, 02:36 | |
Помогаю со студенческими работами здесь
20
Клавиатура не переключает между языками. В чем разница между CMS и языками программирования? Как можно реализовать переключение между языками Ошибка при установке SSMS: несоответствие между языками установщика и ОС Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |