Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.86.138] |
|
Страницы: (16) « Первая ... 5 6 [7] 8 9 ... 15 16 все ( Перейти к последнему сообщению ) |
Сообщ.
#91
,
|
|
|
Цитата JoeUser @ Да не так уж и много лишнего тепла, оно ж все равно в итоге компиляется в нативный код. Вот эрланг, это да, чистая виртуалка, но даже там уже придумали HiPE.А потому, что результат их сборки - исполнение в виртуальной машине. Вот только представьте - каждый вызов виртуализован! Это сколько же тепла выделяется процессором излишне, коего так не хватает Слава Украине! Ну и как показывает практика, уменьшение тепла выделяемого процессором автоматически приводит к увеличению тепла выделяемого головой программиста. И наоборот. Вон Qraizer излучает дофига энергии чтобы протестировать свои критические приложухи, но у него выбора нет, такова специфика профессии. А вот у меня есть, и я с удовольствием уменьшаю тепло головы за счет увеличения тепла процессора. |
Сообщ.
#92
,
|
|
|
Тут вот JoeUser Раст всуе помянул: Метаклассы в C++
|
Сообщ.
#93
,
|
|
|
В расте есть процедурные макросы, которые в первом приближении должны давать те же возможности.
|
Сообщ.
#94
,
|
|
|
Цитата JoeUser @ Наверное тема "презирания" пошла с моей подачки Ну сами посудите, это же чистой воды - гиперболизация! Да, мне не нравятся Java и С#. Но не потому, что они убогие. А потому, что результат их сборки - исполнение в виртуальной машине. Вот только представьте - каждый вызов виртуализован! Это сколько же тепла выделяется процессором излишне, коего так не хватает Слава Украине! А зря. Как дополнение к плюсам Java/C# очень даже ничего подходят. А вот всякие Rust, жгут излишне твою энергию. А выхлопа в итоге 0,00000%. В итоге ты знаешь С++, и знаешь как то так немного с боку Rust. Но пишешь исключительно на С++(ну если отбросить другие скриптовые язеги). В итоге от знания С++ и Rust эффективность твоего КПД начинает падать, вместо того, чтобы повышаться. И собственно вытекает это в то, что ты начинаешь выделять больше тепла, но эффективность при этом не повышается Тут нужно либо полностью переходить например на Rust, и забывать плюсы, либо не эффективно поддерживать знания в актуальном состоянии этих двух языков. Что просто энергетически затратно и глупо. А всякие явошарпы напротив - повышают твой КПД при затрачивании даже меньшей энергии, чем ты тратишь на Rust. |
Сообщ.
#95
,
|
|
|
Тут один друг устроился в контору где приходится на шарпе писать (после плюсов и D). Ругает шарп грязными словами.
Последнее на что жаловался: https://stackoverflow.com/questions/5510343...ents-in-c-sharp Такая простая вещь, а делается через адскую жопу. Добавлено Еще, что писал: - невозможно stderr перенаправить в stdout. - если из интерфейса функцию убрал (переименовал), а в наследующем классе она осталась, то компилятор никак тебя не предупредит об этом. - повальный боксинг всего чего ни попадя в object, а потом в рантайме каст обратно. Даже int-ы, говорит, в object пихают. - нет приличных либок для http-сервера. - async/await из-за корявой внутренней реализации могут приводить к трудноуловимым дедлокам, а нормальных файберов не завезли. - отсутствие compile-time рефлексии, а рантайм-рефлексия тормозная аки черепаха. Добавлено Я сам на шарпе практически не писал, но копался в сторонних либках и заметил, что энтерпрайз головного мозга весьма распространен среди любителей шарпа. То бишь обилие говна вроде OutputGenerationContextVisitorStrategyFactory. |
Сообщ.
#96
,
|
|
|
Цитата applegame @ - невозможно stderr перенаправить в stdout. А это хоть где-то можно? Подобное мне кажется слишком низкоуровневой шляпой (в отличие от перенаправления стандартных потоков в файл, например), чтобы её в библиотеку языка запихивать. По крайней мере если бы мне потребовалось сделать такое, я бы просто через api ОС это сделал. Цитата applegame @ - повальный боксинг всего чего ни попадя в object, а потом в рантайме каст обратно. В чём он проявляется? Ну да, всё является Object-ом, но это же не то же самое, что постоянный каст туда-обратно. |
Сообщ.
#97
,
|
|
|
Цитата OpenGL @ В том, что люди часто вместо дженерика кастят в обжект, пихают его куда-нибудь, а потом обратно кастят. Может просто он попал в компанию криворуких программистов. Я не знаю. В чём он проявляется? Ну да, всё является Object-ом, но это же не то же самое, что постоянный каст туда-обратно. |
Сообщ.
#98
,
|
|
|
Цитата applegame @ Последнее на что жаловался: https://stackoverflow.com/questions/5510343...ents-in-c-sharp Такая простая вещь, а делается через адскую жопу. Я если честно не понял что он там хочет сделать. Это? Ему это вроде приводили в первом же ответе. String[] arguments = Environment.GetCommandLineArgs(); Console.WriteLine("GetCommandLineArgs: {0}", String.Join(", ", arguments)); Цитата applegame @ Еще, что писал: - невозможно stderr перенаправить в stdout. Ээээээээ. Ему логгирование нужно? Так пусть возьмет Serilog тот же. У меня сейчас пишется и в файл и в консоль одновременно, еще и с подсветкой, можно в конфиге еще добавить куда писать надо. Цитата applegame @ - если из интерфейса функцию убрал (переименовал), а в наследующем классе она осталась, то компилятор никак тебя не предупредит об этом. Если переименовал - у тебя ничего не соберется, потому что твой класс не будет реализовывать этот интерфейс, это очевидно вроде как. А если ты убрал из интерфейса метод, то в любом языке у тебя не будет ругаться. Ну или пускай не просто убирает, а через рефакторинг меню. Тогда по идее у него везде уберется автоматом. Цитата applegame @ - повальный боксинг всего чего ни попадя в object, а потом в рантайме каст обратно. Даже int-ы, говорит, в object пихают. Не, ну тут уже какая предъява к языку? Это уже предъява к программистам. Так же можно сказать что в С++ повально выделяют память, а освобождать забывают, передают аргументы в методы класса/функции не по ссылке/указателю, а по значению. Из за чего программа жутко тупит. Цитата applegame @ - нет приличных либок для http-сервера. Вот тут чуть не поперхнулся. Для чего? .ASP Net Core Web App ему в руки, плюс есть встроенный kestrel и httpd серверы. kestrel - пока еще сырой, но зато кросплатформенный. httpd - виндовый, допиленный. Все есть из коробки, того чего нет, может достать из Nuget пакетов. Вот я сейчас пилю полностью кросплатформенное серверное Web приложение, пока нехватки либок для http сервера не ощутил, напротив есть все и даже больше, чем нужно. При том что пишу я под kestrel, который еще недопиленный. Чего ему конкретно не хватает то? Цитата applegame @ - async/await из-за корявой внутренней реализации могут приводить к трудноуловимым дедлокам, а нормальных файберов не завезли. Например? Я пока не натыкался если честно. Цитата applegame @ - отсутствие compile-time рефлексии, а рантайм-рефлексия тормозная аки черепаха. Опять же для чего? Дженериков не хватает что ли? Добавлено Цитата applegame @ Тут один друг устроился в контору где приходится на шарпе писать (после плюсов Я не знаю как после D, но после плюсов - он по идее должен был ощутить внутреннюю гармонию, радость жизни и эйфорию. Ну если он только неделю пишет - то возможно он просто еще не оклиматизировался. И пытается решить задачи С++сными методами в C#. Тогда конечно получаешь некий дискомфорт. Но это по идее должно быть во всех языках. |
Сообщ.
#99
,
|
|
|
Цитата applegame @ если из интерфейса функцию убрал (переименовал), а в наследующем классе она осталась, то компилятор никак тебя не предупредит об этом. Об этом сразу предупредит IDE, если ее правильно настроить. За шарпея не скажу, но в жабе идея мигом начинает краснеть по поводу неуместной аннотации @Override Прикреплённая картинка
|
Сообщ.
#100
,
|
|
|
Цитата Астарот @ За шарпея не скажу, но в жабе идея мигом начинает краснеть по поводу неуместной аннотации @Override Там примерно тоже самое. Можно реализовывать через имя интерфейса. И будет ругаться. |
Сообщ.
#101
,
|
|
|
Цитата Wound @ А есть аннотация @override? Там примерно тоже самое. Можно реализовывать через имя интерфейса. И будет ругаться. Добавлено Цитата Астарот @ Он как раз сетовал на отсутствие override. В D не аннотация, а атрибут override, поэтому ругается не IDE, а компилятор. Об этом сразу предупредит IDE, если ее правильно настроить. За шарпея не скажу, но в жабе идея мигом начинает краснеть по поводу неуместной аннотации @Override |
Сообщ.
#102
,
|
|
|
Цитата applegame @ Он как раз сетовал на отсутствие override. В D не аннотация, а атрибут override, поэтому ругается не IDE, а компилятор. Тут не знаю. Знаю, что джетбрейнсы для шарпея делают Rider https://www.jetbrains.com/rider/ а так как делают они, обычно, хорошо, то, скорее всего, все, что у твоего друга болит и чешется, там будет полечено и почёсано. |
Сообщ.
#103
,
|
|
|
Цитата applegame @ А есть аннотация @override? Есть, но предназначена она для виртуальных методов класса. Для интерфейсов есть явная имплементация интерфейса. |
Сообщ.
#104
,
|
|
|
Цитата Wound @ Есть, но предназначена она для виртуальных методов класса. Для интерфейсов есть явная имплементация интерфейса. Так как есть способ отловить ситуацию с удалением метода из интерфейса? |
Сообщ.
#105
,
|
|
|
Цитата D_KEY @ Так как есть способ отловить ситуацию с удалением метода из интерфейса? Конечно есть. Я же выше написал: Цитата Wound @ Для интерфейсов есть явная имплементация интерфейса. Дело в том, что override несет несколько другую смысловую нагрузку, и к интерфейсам мягко говоря не применима. Потому как интерфейс не может иметь реализации. Соответственно и переопределять там нечего. Там реализовывать нужно. Поэтому override - это скорее про классы. Но ты можешь написать явную реализацию для интерфейса, например: interface MyInterface { string GetMyString(); void SetMyString(string value); } public class MyClass : MyInterface { string MyInterface.GetMyString() { throw new NotImplementedException(); } void MyInterface.SetMyString(string value) { throw new NotImplementedException(); } } При таком раскладе, если ты в интерфейсе грохнешь любой метод, будет ошибка компиляции, например можешь попробовать в этом коде закоментировать или переименовать любой метод у интерфейса https://rextester.com/CEPE93720 |