C# for Systems Programming
От: Nikkk2010  
Дата: 29.12.13 04:03
Оценка: 34 (6)

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.

The first question is, “Why a new language?”


Ссылка
I do all my own stunts
Re: C# for Systems Programming
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 30.12.13 23:32
Оценка: +11
Здравствуйте, Nikkk2010, Вы писали:

Наткнулся на вот эту диаграмму в блоге.



Коллеги, скажите, а что вы думаете о ней? Меня интересует положение JavaScript. Часто вот в таких статьях как-то к слову говорится, что писать на JavaScript легко и просто и разработчики просто спят и видят как бы использовать JavaScript вместо всех остальных языков.
Но сколько я с ним ни сталкивался — боль и ужас. По параметрам "Safety & Productivity" я бы убрал его в левый нижний угол.

Вообще я грешил на своё плохое знание JavaScript и по возможности стараюсь это исправить — вот буквально два дня назад на распродаже
Автор: Lonely Dog
Дата: 27.12.13
купил десяток книг, из них две — по jQuery. По работе частенько приходится сталкиваться с JS, допиливая какие-нибудь веб-интерфейсы.

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

Куда бы вы поместили JavaScript на этой диаграмме?
С уважением, Artem Korneev.
Re[2]: C# for Systems Programming
От: dsorokin Россия  
Дата: 01.01.14 16:12
Оценка: :))
Здравствуйте, Artem Korneev, Вы писали:

AK>Наткнулся на вот эту диаграмму в блоге.


Надо понимать, что "X" — это сокращение от слова "Хаскель"?
Re[3]: C# for Systems Programming
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.01.14 19:22
Оценка:
Здравствуйте, dsorokin, Вы писали:

D>Надо понимать, что "X" — это сокращение от слова "Хаскель"?


Хаскель уже без ГЦ обходится?
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: C# for Systems Programming
От: Sharov Россия  
Дата: 01.01.14 20:58
Оценка:
Здравствуйте, Artem Korneev, Вы писали:

AK>Коллеги, скажите, а что вы думаете о ней? Меня интересует положение JavaScript. Часто вот в таких статьях как-то к слову говорится, что писать на JavaScript легко и просто и разработчики просто спят и видят как бы использовать JavaScript вместо всех остальных языков.

AK>Но сколько я с ним ни сталкивался — боль и ужас. По параметрам "Safety & Productivity" я бы убрал его в левый нижний угол.

JS действительно довольно простой и мощный язык. Ну, допустим факт, что там нет встроенной поддержки, например, ООП (классического ООП).
Ну так там практически всю ООПшную инфраструктуру можно воссоздать(эмулировать), и писать вполне себе в ОО стиле. То же и с ФП.
Что касается безопасности, то тут согласен -- язык динамический, со всеми последствиями...
Так что js я поставил бы ниже шарпа и явы, но оставил бы в том же квадранте.
Кодом людям нужно помогать!
Re[2]: C# for Systems Programming
От: DreamMaker  
Дата: 01.01.14 23:02
Оценка: +2
Здравствуйте, Artem Korneev, Вы писали:

AK>Куда бы вы поместили JavaScript на этой диаграмме?


js за гранью добра и зла...
ужас ужасный, хуже только пхп
In P=NP we trust.
Re[2]: C# for Systems Programming
От: Tom Россия http://www.RSDN.ru
Дата: 01.01.14 23:12
Оценка:
Здравствуйте, Artem Korneev, Вы писали:

AK>Коллеги, скажите, а что вы думаете о ней? Меня интересует положение JavaScript.

Я тоже когда увидел где находится жаба скрипт долго ржал. Оказывается это у нас самый безопасный язык (ага, слаботипизированный, бугага)
Народная мудрось
всем все никому ничего(с).
Re[2]: C# for Systems Programming
От: Аноним  
Дата: 02.01.14 01:24
Оценка: +6 -1
Да это вообще странная идея о том, что-де на джаваскрипт проще программировать, чем на 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" — это сокращение от слова "Хаскель"?


Нет, это от слов "Хрен вам".
Re[3]: C# for Systems Programming
От: Sharov Россия  
Дата: 02.01.14 10:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Набирать код в Javascript нужно внимательно и напряженно, чтобы не дай бог не опечататься и ничего не перепутать, и набирать вручную приходится гораздо больше, чем в C# и подобных, из-за отсутствия подсказок, компиляции, рефакторинга и статической типизации. Ну и в Javascript есть набор совершенно диких нелогичностей в преобразованиях типов и синтаксисе, которых в C# нет, при этом в джаваскрипт ты ошибку не найдешь, пока выполнение не дойдет до этого места с нужными предварительными шагами (для получения тех данных, при которых проявляется ошибка). Ну или нужно строго 100% покрытие тестами.


Ну например в продуктах JB, которые поддерживают js имеются разнообразные code quality tools
такие как jslint, jshint, Closure linter. Т.е. выстрелить себе в ногу не дадут.
Code completion тоже имеется.

А>Еще можно добавить отсутствие нормальной модульности и отсутствие развитой стандартной библиотеки, заменяемое зоопарком вычурных нестандартных.


http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html
Кодом людям нужно помогать!
Re[2]: C# for Systems Programming
От: Evgeny.Panasyuk Россия  
Дата: 02.01.14 11:04
Оценка:
Здравствуйте, Artem Korneev, Вы писали:

AK>Наткнулся на вот эту диаграмму в блоге.

AK> http://joeduffyblog.com/images/2013_LangQuad.jpg
AK>Коллеги, скажите, а что вы думаете о ней?

1. Почему Java правее C#? В Java даже структур нету. Или это обусловлено только текущим качеством оптимизаторов?
2. C++11 должен быть и выше и правее C++98 — быстрый код стало легче писать.
3. Что вообще сравнивается? Только языки или ещё и окружающая среда? Если только языки — то Java самый дубовый и непродуктивный.
4. JavaScript можно считать более продуктивным потому, что это язык с динамической типизацией. Это позволяет легко писать обобщённый код. Но safety — это крайне спорный момент (опять таки — что конкретно подразумевается).
Re[4]: C# for Systems Programming
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 02.01.14 11:28
Оценка: -3 :)
Здравствуйте, AndrewVK, Вы писали:

D>>Надо понимать, что "X" — это сокращение от слова "Хаскель"?

AVK>Хаскель уже без ГЦ обходится?

Полагаю, в умелых руках всякие критичные к скорости циклы там можно делать без лишних аллокаций и вызова GC.
А если в целом, то согласно Страуструпу современный С++ — язык со сборкой мусора (причем плохой: на подсчете ссылок, т.е. медленной, ненадежной и небезопасной).
Re[5]: C# for Systems Programming
От: Evgeny.Panasyuk Россия  
Дата: 02.01.14 11:49
Оценка:
Здравствуйте, 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?
Re[5]: C# for Systems Programming
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.01.14 14:39
Оценка: +1
Здравствуйте, D. Mon, Вы писали:

DM>Полагаю, в умелых руках всякие критичные к скорости циклы там можно делать без лишних аллокаций и вызова GC.


В умелях руках это можно сделать и на шарпе.

DM>А если в целом, то согласно Страуструпу современный С++ — язык со сборкой мусора (причем плохой: на подсчете ссылок, т.е. медленной, ненадежной и небезопасной).


Ты саму статью то прочти — там вполне отчетливо намекается, что основная причина отнесения JS и дотнетов с джавами к левому краю — наличие GC.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
AVK Blog
Re[3]: C# for Systems Programming
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.01.14 14:46
Оценка:
Здравствуйте, Sharov, Вы писали:

S>JS действительно довольно простой и мощный язык.


JS может и простой и мощный, но он принципиально динамический, так что о safety точно говорить не приходится.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
AVK Blog
Re[3]: C# for Systems Programming
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.01.14 14:46
Оценка:
Здравствуйте, 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>>
AVK Blog
Re[4]: C# for Systems Programming
От: Evgeny.Panasyuk Россия  
Дата: 02.01.14 15:11
Оценка:
Здравствуйте, 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 нужна скорость — структуры вручную раскладывают по массиву байт.
Re[6]: C# for Systems Programming
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 02.01.14 15:34
Оценка:
Здравствуйте, AndrewVK, Вы писали:

DM>>Полагаю, в умелых руках всякие критичные к скорости циклы там можно делать без лишних аллокаций и вызова GC.

AVK>В умелях руках это можно сделать и на шарпе.

И? Как именно это мешает хаскелю быть быстрым?
Re[2]: C# for Systems Programming
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 02.01.14 15:43
Оценка: :)
Здравствуйте, Artem Korneev, Вы писали:

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


AK>Наткнулся на вот эту диаграмму в блоге.


AK>Коллеги, скажите, а что вы думаете о ней?


Все верно. Через 1, максимум 2 года вместо красной и загадочной X можно будет вписать Rust
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.