А что же будет с Си?!
Nov. 9th, 2008 04:50 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
(написано в ответ на Re: C++ умирает... из предыдущего поста)
1. Я решил скачать openjdk-7-ea-src-b39-06_nov_2008 и посмотреть на некоторые разделы (значимые на мой личный взгляд) кодовой базы в разрезе файлов с расширениями java, h, c, hpp, cpp (такой разрез не говорит обо всём, но он говорит о многом). Вот, что у меня получилось.
Интересно было узнать, что java - это сишная консольная утилита (openjdk-7-ea-src-b39-06_nov_2008/jdk/src/share/bin/java.c), а javac - напротив, явовская (openjdk-7-ea-src-b39-06_nov_2008/langtools/src/share/classes/com/sun/tools/javac/Main.java).
И если в jdk полюсовых файлов почти нет (по сравнению с явовскими и сишными), то в hotspot'е кол-во этих же файлов оправдывает фразу из Википедии:
2. Про моно так скажу: там плюсов совсем нет, а вот без сей - ну, просто никак.
Про мелко-мягких могу судить только по тому, что рассказывает Страуструп (он хоть человек и заинтересованный, но должен знать о таких вещах уж точно, к тому же ресурс публичный, могли бы уже давно зачмырить):
Насколько я понимаю, Erlang и Haskell - противопоставляются умирающим языкам, как новое "наше всё"?
Посмотрел вскользь на их исходники. Ни один из них не использует плюсов: Erlang завязан на Си, Haskell - на Си--. Интересно было узнать.
В этой связи возникает вопрос о будущем сей относительно будущего плюсов, явы, Erlang и Haskell.
* Upd: Взял CCCC версии 3.1.4 чтобы посчитать две дополнительные колонки: кол-во строк кода и комментариев. Не спрашивайте меня о гарантиях правильности подсчета этих колонок, обращайтесь к авторам CCCC. И парочку файликов пришлось выкинуть, т.к. CCCC зависал или падал.
Дайджест блога '11
1. Я решил скачать openjdk-7-ea-src-b39-06_nov_2008 и посмотреть на некоторые разделы (значимые на мой личный взгляд) кодовой базы в разрезе файлов с расширениями java, h, c, hpp, cpp (такой разрез не говорит обо всём, но он говорит о многом). Вот, что у меня получилось.
путь | расширения | кол-во файлов | кол-во строк | кол-во слов | кол-во байт | строк кода * | строк комментариев * |
---|---|---|---|---|---|---|---|
jdk/src/share | java | 7379 | 2481343 | 10405236 | 102285019 | 896623 | 741547 |
h, c | 937 | 356712 | 1403919 | 12480723 | 108962 | 53440 | |
hpp, cpp | 92 | 25434 | 145786 | 1098891 | 12462 | 3743 | |
jdk/src/solaris | java | 229 | 94520 | 319113 | 3963349 | 51724 | 13331 |
h, c | 352 | 182558 | 651537 | 6096770 | 92590 | 18429 | |
hpp, cpp | 0 | 0 | 0 | 0 | 0 | 0 | |
jdk/src/windows | java | 152 | 38714 | 149539 | 1400959 | 18157 | 9054 |
h, c | 227 | 58690 | 229662 | 2017576 | 18329 | 9723 | |
hpp, cpp | 104 | 69194 | 216812 | 2243307 | 18171 | 5131 | |
hotspot/src/share | java | 196 | 30254 | 103299 | 1023361 | 7127 | 3179 |
h, c | 8 | 5065 | 18474 | 179188 | 1172 | 1002 | |
hpp, cpp | 1005 | 486944 | 2017300 | 18368964 | 209287 | 85251 | |
hotspot/src/cpu | java | 0 | 0 | 0 | 0 | 0 | 0 |
h, c | 2 | 79 | 483 | 2973 | 9 | 48 | |
hpp, cpp | 175 | 98513 | 397759 | 3514055 | 49594 | 19761 | |
hotspot/src/os/solaris | java | 0 | 0 | 0 | 0 | 0 | 0 |
h, c | 12 | 6587 | 25299 | 204315 | 3928 | 1565 | |
hpp, cpp | 28 | 10705 | 45660 | 372784 | 5144 | 2097 | |
hotspot/src/os/windows | java | 0 | 0 | 0 | 0 | 0 | 0 |
h, c | 1 | 108 | 377 | 2863 | 13 | 31 | |
hpp, cpp | 27 | 7864 | 33451 | 270258 | 1737 | 1170 | |
hotspot/src/os_cpu/solaris_sparc | java | 0 | 0 | 0 | 0 | 0 | 0 |
h, c | 0 | 0 | 0 | 0 | 0 | 0 | |
hpp, cpp | 13 | 1884 | 9065 | 72642 | 835 | 434 | |
hotspot/src/os_cpu/windows_x86 | java | 0 | 0 | 0 | 0 | 0 | 0 |
h, c | 0 | 0 | 0 | 0 | 0 | 0 | |
hpp, cpp | 16 | 1821 | 8307 | 63948 | 661 | 429 |
Интересно было узнать, что java - это сишная консольная утилита (openjdk-7-ea-src-b39-06_nov_2008/jdk/src/share/bin/java.c), а javac - напротив, явовская (openjdk-7-ea-src-b39-06_nov_2008/langtools/src/share/classes/com/sun/tools/javac/Main.java).
И если в jdk полюсовых файлов почти нет (по сравнению с явовскими и сишными), то в hotspot'е кол-во этих же файлов оправдывает фразу из Википедии:
The HotSpot Java Virtual Machine is written in C++.Думаю, без hotspot'а ява была бы не столько привлекательной сейчас, всё же он делает своё дело.
2. Про моно так скажу: там плюсов совсем нет, а вот без сей - ну, просто никак.
Про мелко-мягких могу судить только по тому, что рассказывает Страуструп (он хоть человек и заинтересованный, но должен знать о таких вещах уж точно, к тому же ресурс публичный, могли бы уже давно зачмырить):
Some parts of Visual Studio like the Base Class Libraries that ship with the .NET Framework were written using C# but the C# compiler itself is written in C++.
Насколько я понимаю, Erlang и Haskell - противопоставляются умирающим языкам, как новое "наше всё"?
Посмотрел вскользь на их исходники. Ни один из них не использует плюсов: Erlang завязан на Си, Haskell - на Си--. Интересно было узнать.
В этой связи возникает вопрос о будущем сей относительно будущего плюсов, явы, Erlang и Haskell.
* Upd: Взял CCCC версии 3.1.4 чтобы посчитать две дополнительные колонки: кол-во строк кода и комментариев. Не спрашивайте меня о гарантиях правильности подсчета этих колонок, обращайтесь к авторам CCCC. И парочку файликов пришлось выкинуть, т.к. CCCC зависал или падал.
Дайджест блога '11
no subject
Date: 2008-11-09 09:37 am (UTC)1) В йазыге: Многопоточность на уровне языка
2) В смысле компайлеров: поддержка многопроцессорности-многоядерности
Вцелом это верно для любого современного яп.
no subject
Date: 2008-11-09 10:07 am (UTC)no subject
Date: 2008-11-09 10:14 am (UTC)Оно всё прекрасно, моет отличный язык, но как-то... Толку в нём какого?
Мне как-то попадалась коммерческая система на связке пролога, обжектив ада и сиквела. Году в 97-98. Собстно всё осталоное как-то в мейнстриме +-. Ну вощем я это к чему. Схема там, лисп, прочая это всё прекрасно, но реальную коммерческую систему наваять, которая должна развиваться, поддерживаться, общаться с окруающим миром... эт нет уж.
no subject
Date: 2008-11-09 10:18 am (UTC)Facebook выкатила facebook chat — написан на Эрланге
Ericsson в своём телекоммуникационном оборудовании использует Эрланг очень широко.
http://lionet.livejournal.com/20916.html
no subject
Date: 2008-11-09 10:26 am (UTC)Из аналогичнфх технологий, к примеру, субд Caché (не знаю, что с ней сейчас).
Вощем идея-то акейъ, но как-то «терзают сомнения».
no subject
Date: 2008-11-12 03:14 pm (UTC)no subject
Date: 2008-11-12 03:26 pm (UTC)Я не сторонник идеи «миллион обезъян не могут ошибаться», более того, мой путь в программировании начался с бейсик, пролог, ...
Просто я смотрю скорее не с точки зрения «как будет красивше сделать» (красивше с программерской т.з.), а как это всё будет работать вместе с существующими системами, как и кто поддежривать, каковы реалии в смысле работодателей, что там за реаии в смысле з/п.
Будут в плюсах лямбда-выражения, отлично. Будет что-то от функц. пр. в жабе -- зашибись, отлично.
no subject
Date: 2008-11-12 03:36 pm (UTC)А так, Лев зарплаты вроде публиковал, ну и вот ещё график есть (правда не "местный", но) - http://www.wagerlabs.com/blog/2008/08/job-trends-erlang-lisp-and-haskell.html
А если про Эрланг, то недавно работал в одной американской конторке, фактически писал движок Эрланга на Java, по лёгкости, простоте, удобстве сопровождения наше решение заметно проигрывало рантайму Эрланга.
no subject
Date: 2008-11-12 03:43 pm (UTC)+ специфика софта, котрый я пишу.
no subject
Date: 2008-11-12 03:46 pm (UTC)Один заход на монстра и всё ясно. Разброс ровно такой, как и весь остальной айти.
no subject
Date: 2008-11-12 03:51 pm (UTC)no subject
Date: 2008-11-12 03:53 pm (UTC)no subject
Date: 2008-11-12 03:58 pm (UTC)С тем же успехом изется median salary
http://www.payscale.com/ и типа того.
Толку от этого.
Хаскеля вообще нет, ерланга меньше 75. Prolog, Lisp, ... тоже самое.
Для примера, что востребовано, можно вкрутить Tibco, Oracle, ... ту же DB2, которая в связке с Коболом зачастую.
Но это всё вопрос "о среднем" или в лучшем случае медианном значениях.
no subject
Date: 2008-11-12 08:57 pm (UTC)no subject
Date: 2008-11-12 08:59 pm (UTC)no subject
Date: 2008-11-12 09:30 pm (UTC)no subject
Date: 2008-11-10 03:03 pm (UTC)- Ericsson
- Насколько я понимаю, если говорить об открытых проектах в Ericsson, развивая Erlang, они не забывают о проектах на яве и Си/Си++. Т.е., не похоже, что они забили на всё остальное.
Я к тому, что вряд ли указанные примеры следует рассматривать, как вытеснение остальных технологий Erlang'ом.no subject
Date: 2008-11-11 12:45 am (UTC)Facebook: http://www.google.com/search?client=safari&rls=en-us&q=facebook+erlang+chat&ie=UTF-8&oe=UTF-8
А вообще речь-то не о том что C++ (или другие технологии) вытесняется Эрлангом, а о том что эрланг становится, рядом с теми же Перлами или Питонами, эффективной технологией для своей ниши, мимо которой ни крупные (Amazon, Facebook), ни мелкие (Mochi Media, JS-Kit) не проходят. Настолько эффективной, что она становится конкурентным преимуществом: пока другие компании думают как бы COMET чат написать на PHP, другие делают его в 150 строк на Erlang, который способен выдержать одновременно миллион пользователей.
Аллилуйя!
Date: 2008-11-11 09:35 am (UTC)Вот, Facebook - молодцы, у них даже соответствующая страница в зачатке есть. И не боятся объяснять и популяризовывать (ссылку я уже приводил):
Amazon. Извините, а вы, пользуясь случаем, в следующий раз, не могли бы просто поинтересоваться у мэтра, отчего же у них этот момент, прямо таки, замалчивается, а используемые передовые технологии не популяризируются? А то ведь нехорошо получается, согласитесь... Eсли бы не ваш комментарий - вряд ли бы я вообще узнал, даже если хотел, что Amazon SimpleDB использует Erlang, например... Видимо, не считают нужным, капиталисты проклятые...
Re: Аллилуйя!
Date: 2008-11-11 10:24 am (UTC)Вот Yahoo не стесняются - http://blog.socklabs.com/cufp2008.html
Re: Аллилуйя!
Date: 2008-11-11 02:26 pm (UTC)no subject
Date: 2008-11-11 11:26 am (UTC)1) Исходники на Си/Java куда более раздуты чем на С++ (а почему, кстати? так и не понял причины)
2) Поэтому у Erlang/Haskell будут проблемы с развитием (из-за bloatware в реализации)
Выводы, которых не было.
Date: 2008-11-11 02:23 pm (UTC)Это же придётся интерпретировать! Может быть, когда-нибудь.
Вообще, это, ещё раз, ответ на утверждение lionet'а Тут вскрытие показало, что Ява действительно отчасти написана на Ява, особенно такая часть, как JDK. Но если рассматривать другую немаловажную часть, как HotSpot, то там явовского кода оказывается с гулькин нос, сишного - тоже мало, а всё сплошь Си++, даже в тех частях, которые касаются платформенно-зависимых особенностей (в JDK только виндузовая часть со значительным кол-вом кода на Си++).
Мне было интересно это исследование проделать, т.к. мой вопрос об умирании Си++ содержал неявное утверждение, что Ява таки написана на Си++, и если последние умирает, надо будет что-то делать, чтобы поддержать вторичный продукт в свежем состоянии.
А приведённые в посте выкладки легко перепроверить, и сделать свои выводы. Но утверждать, что ява написана без использования плюсов уже нельзя. Более того, есть значительная и очень важная часть явы, которая практически написана на плюсах с некоторыми вкраплениями Явы и Си.
2. Боже упаси меня делать выводы об Erlang/Haskell - я о них вообще ничего не знаю, кроме того, что я написал в этом посте явно. (У меня та же болезнь, уважаемый, у меня катастрофически не хватает времени! Есть взаймы до понедельника, а?)
bloatware - это о Си и Си--?
Про Си-- - опять же, не знаю, не щупал, только читал. Открыл для себя, что есть такой, и что одна из распространённых реализаций Haskell'я (о котором слышал ещё до 1999го) использует его.
Про Си - у меня только хорошее мнение (а какое может быть ещё?), пока на нем не начинают делать объекты (до сих пор не понимаю выбор gtk+; подозреваю, что в mono они тоже на Си поддерживают объекты в каком-то виде), что по крайней мере подозрительно (а почему не плюсы, где они есть?)...
Re: Выводы, которых не было.
Date: 2008-11-11 03:42 pm (UTC)Re: Выводы, которых не было.
Date: 2008-11-11 04:31 pm (UTC)Прошу прощения, что запутал.
Повторюсь, это было написано в несколько возбуждённом состоянии.
Т.к. я в основном специализируюсь на плюсах, Erlang с Haskell'ем не юзал, но оставаться на обочине - не хотелось бы.
А тут уважаемый
Ну, я и метнулся проверять, перепроверять, не чуть не сомневаясь в опытности и осведомлённости
Но для себя я делаю выводы, что прям вот всё бросать и бежать изучать Erlang с Haskell'ем - смысла нет. Вот, если бы поработать в команде с людьми (уверен, что истины передаются изустно) над соответствующим проектом - было бы круто.
no subject
Date: 2010-02-01 07:26 pm (UTC)Re: Поискал в своей инсталляции GHC... никакого C--.
Date: 2010-02-01 08:48 pm (UTC)Как и указал в посте, я посмотрел вскользь на их исходники.
Но, конечно, не только исходниками я пользовался, мне ещё и Википедия помогала.
Позволю себе процитировать соответствующую статью английской википедии: