Joe Duffy's team has been designing and implementing a set of “systems programming” extensions to C# over the past 4 years.
At long last, I’ll begin sharing our experiences in a series of blog posts.
Коллеги, скажите, а что вы думаете о ней? Меня интересует положение JavaScript. Часто вот в таких статьях как-то к слову говорится, что писать на JavaScript легко и просто и разработчики просто спят и видят как бы использовать JavaScript вместо всех остальных языков.
Но сколько я с ним ни сталкивался — боль и ужас. По параметрам "Safety & Productivity" я бы убрал его в левый нижний угол.
Вообще я грешил на своё плохое знание JavaScript и по возможности стараюсь это исправить — вот буквально два дня назад на распродаже
купил десяток книг, из них две — по jQuery. По работе частенько приходится сталкиваться с JS, допиливая какие-нибудь веб-интерфейсы.
Но что-то наблюдая за другими разработчиками в своих командах, я бы не сказал что большинство из них пишет JS-части кода сильно быстрее и лучше, чем я.
Куда бы вы поместили JavaScript на этой диаграмме?
Здравствуйте, Artem Korneev, Вы писали:
AK>Коллеги, скажите, а что вы думаете о ней? Меня интересует положение JavaScript. Часто вот в таких статьях как-то к слову говорится, что писать на JavaScript легко и просто и разработчики просто спят и видят как бы использовать JavaScript вместо всех остальных языков. AK>Но сколько я с ним ни сталкивался — боль и ужас. По параметрам "Safety & Productivity" я бы убрал его в левый нижний угол.
JS действительно довольно простой и мощный язык. Ну, допустим факт, что там нет встроенной поддержки, например, ООП (классического ООП).
Ну так там практически всю ООПшную инфраструктуру можно воссоздать(эмулировать), и писать вполне себе в ОО стиле. То же и с ФП.
Что касается безопасности, то тут согласен -- язык динамический, со всеми последствиями...
Так что js я поставил бы ниже шарпа и явы, но оставил бы в том же квадранте.
Здравствуйте, Artem Korneev, Вы писали:
AK>Коллеги, скажите, а что вы думаете о ней? Меня интересует положение JavaScript.
Я тоже когда увидел где находится жаба скрипт долго ржал. Оказывается это у нас самый безопасный язык (ага, слаботипизированный, бугага)
Да это вообще странная идея о том, что-де на джаваскрипт проще программировать, чем на Java или C#.
Подсказчика нет нормального, постоянно приходится печатать наугад. При этом нет компиляции с проверкой типов, и ошибку ты не поймаешь, пока не запустишь и не дойдешь до этого места. Рефакторинга тоже нет.
Набирать код в Javascript нужно внимательно и напряженно, чтобы не дай бог не опечататься и ничего не перепутать, и набирать вручную приходится гораздо больше, чем в C# и подобных, из-за отсутствия подсказок, компиляции, рефакторинга и статической типизации. Ну и в Javascript есть набор совершенно диких нелогичностей в преобразованиях типов и синтаксисе, которых в C# нет, при этом в джаваскрипт ты ошибку не найдешь, пока выполнение не дойдет до этого места с нужными предварительными шагами (для получения тех данных, при которых проявляется ошибка). Ну или нужно строго 100% покрытие тестами.
Еще можно добавить отсутствие нормальной модульности и отсутствие развитой стандартной библиотеки, заменяемое зоопарком вычурных нестандартных.
Если говорить о якобы медленной компиляции, то, во-первых, никакая она не медленная, она делается обычно автоматически при сохранении файла и вообще незаметна, а, во-вторых, необходимость запускать программу каждый раз просто для проверки синтаксиса или корректности выражений, ускорением никак не назовешь.
Я не так много программировал на Javascript, так что, уверен, список недостатков можно пополнить. Хотя на Javascript можно делать веселые штуки благодаря динамике, и в отдельно взятых конкретных случаях они могут здорово сократить решение, да. Но не думаю, что таких случаев достаточно, чтобы это было существенно.
Если все это суммировать, утверждения о более высокой производительности разработки на Javascript по сравнению, например, с C# — смехотворный бред, вызванный чьим-то больным воображением, либо какой-то миф, оставшийся от устаревших представлений. Непонятно, почему этот дурацкий миф так широко распространен и всеми так легко принимается на веру.
Re[3]: C# for Systems Programming
От:
Аноним
Дата:
02.01.14 02:14
Оценка:
Здравствуйте, dsorokin, Вы писали:
D>Надо понимать, что "X" — это сокращение от слова "Хаскель"?
Здравствуйте, Аноним, Вы писали:
А>Набирать код в Javascript нужно внимательно и напряженно, чтобы не дай бог не опечататься и ничего не перепутать, и набирать вручную приходится гораздо больше, чем в C# и подобных, из-за отсутствия подсказок, компиляции, рефакторинга и статической типизации. Ну и в Javascript есть набор совершенно диких нелогичностей в преобразованиях типов и синтаксисе, которых в C# нет, при этом в джаваскрипт ты ошибку не найдешь, пока выполнение не дойдет до этого места с нужными предварительными шагами (для получения тех данных, при которых проявляется ошибка). Ну или нужно строго 100% покрытие тестами.
Ну например в продуктах JB, которые поддерживают js имеются разнообразные code quality tools
такие как jslint, jshint, Closure linter. Т.е. выстрелить себе в ногу не дадут.
Code completion тоже имеется.
А>Еще можно добавить отсутствие нормальной модульности и отсутствие развитой стандартной библиотеки, заменяемое зоопарком вычурных нестандартных.
1. Почему Java правее C#? В Java даже структур нету. Или это обусловлено только текущим качеством оптимизаторов?
2. C++11 должен быть и выше и правее C++98 — быстрый код стало легче писать.
3. Что вообще сравнивается? Только языки или ещё и окружающая среда? Если только языки — то Java самый дубовый и непродуктивный.
4. JavaScript можно считать более продуктивным потому, что это язык с динамической типизацией. Это позволяет легко писать обобщённый код. Но safety — это крайне спорный момент (опять таки — что конкретно подразумевается).
Здравствуйте, AndrewVK, Вы писали:
D>>Надо понимать, что "X" — это сокращение от слова "Хаскель"? AVK>Хаскель уже без ГЦ обходится?
Полагаю, в умелых руках всякие критичные к скорости циклы там можно делать без лишних аллокаций и вызова GC.
А если в целом, то согласно Страуструпу современный С++ — язык со сборкой мусора (причем плохой: на подсчете ссылок, т.е. медленной, ненадежной и небезопасной).
Здравствуйте, D. Mon, Вы писали:
D>>>Надо понимать, что "X" — это сокращение от слова "Хаскель"? AVK>>Хаскель уже без ГЦ обходится? DM>Полагаю, в умелых руках всякие критичные к скорости циклы там можно делать без лишних аллокаций и вызова GC.
Как ни крути, когда в языках с GC-by-default требуется performance — от этого GC в той или иной мере пытаются избавиться.
DM>А если в целом, то согласно Страуструпу современный С++ — язык со сборкой мусора (причем плохой: на подсчете ссылок, т.е. медленной, ненадежной и небезопасной).
1. Есть интерфейс для консервативного GC.
2. Некоторые смарт-поинтеры используют подсчёт ссылок. Но они требуются только при наличии shared семантики, которая встречается крайне редко — в большинстве кода никакой ref-counting не нужен.
DM>(причем плохой: на подсчете ссылок, т.е. медленной,
Почему медленной?
DM>ненадежной
У неё есть свои предусловия, точно также как и у других GC. Утечки могут быть хоть в C#/Java/Haskell
DM>и небезопасной).
Почему небезопасной?
Re[4]: C# for Systems Programming
От:
Аноним
Дата:
02.01.14 12:32
Оценка:
Здравствуйте, Sharov, Вы писали:
S>Ну например в продуктах JB, которые поддерживают js имеются разнообразные code quality tools S>такие как jslint, jshint, Closure linter. Т.е. выстрелить себе в ногу не дадут. S>Code completion тоже имеется.
Спасибо за информацию. И как, добавление этих средств делает разработку на Javascript более эффективной, чем на C# c ReSharper?
Здравствуйте, D. Mon, Вы писали:
DM>Полагаю, в умелых руках всякие критичные к скорости циклы там можно делать без лишних аллокаций и вызова GC.
В умелях руках это можно сделать и на шарпе.
DM>А если в целом, то согласно Страуструпу современный С++ — язык со сборкой мусора (причем плохой: на подсчете ссылок, т.е. медленной, ненадежной и небезопасной).
Ты саму статью то прочти — там вполне отчетливо намекается, что основная причина отнесения JS и дотнетов с джавами к левому краю — наличие GC.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>1. Почему Java правее C#? В Java даже структур нету. Или это обусловлено только текущим качеством оптимизаторов?
Я так понимаю мало кто удосужился прочесть многабукав статьи. А в ней есть ответ:
Java is closer than C# thanks to the excellent work in HotSpot-like VMs which employ code pitching and stack allocation.
EP>4. JavaScript можно считать более продуктивным потому, что это язык с динамической типизацией.
Практика показывает, что, начиная с некоторого, достаточно скромного размера проекта, JS становится существенно менее продуктивным, потому всякие TypeScript и появляются.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
EP>>1. Почему Java правее C#? В Java даже структур нету. Или это обусловлено только текущим качеством оптимизаторов? AVK>Я так понимаю мало кто удосужился прочесть многабукав статьи. А в ней есть ответ:
Статью не читал. Из-за вот такой пропаганды она совершенна не интересна:
I’ve seen many people run away from garbage collection back to C++, with a sour taste permeating their mouths. (To be fair, this is only partly due to garbage collection itself; it’s largely due to poor design patterns, frameworks, and a lost opportunity to do better in the language.)
Поэтому и спросил что же там подразумевалось.
AVK>
AVK>Java is closer than C# thanks to the excellent work in HotSpot-like VMs which employ code pitching and stack allocation.
И как это поможет восполнить отсутствие массивов структур? Правильный memory layout данных очень важен для производительности.
Там где на Java нужна скорость — структуры вручную раскладывают по массиву байт.
Здравствуйте, AndrewVK, Вы писали:
DM>>Полагаю, в умелых руках всякие критичные к скорости циклы там можно делать без лишних аллокаций и вызова GC. AVK>В умелях руках это можно сделать и на шарпе.
Здравствуйте, Artem Korneev, Вы писали:
AK>Здравствуйте, Nikkk2010, Вы писали:
AK>Наткнулся на вот эту диаграмму в блоге.
AK>Коллеги, скажите, а что вы думаете о ней?
Все верно. Через 1, максимум 2 года вместо красной и загадочной X можно будет вписать Rust