шарп - это недоношенный уродец
вроде бы соблюдается 3 основных кита ооп
но при этом :
множественного наследия - тю-тю
вместо virtual придумали override
если взять базовые типы - их зачем-то унаследовали от еще более базового типа обжект
1) несовместимость типов указателей. лечится элементарно
2) ключевые слова -- это кстати к совместимости с и с++ мало имеет отношение, ибо не относится к структуре самого кода, а лишь к выбору переменных. и поменять их в проекте можно нажав три кнопки
3) какая-то тонкость с гото
это все что ли? не гик, ты не прав. с -- таки подмножество с++
в шарпе есть ублюдочное подобие указателя - делегат называется
нет никакой совместимости между шарпом и плюсами
собственно , зачем в названии языка присутствует "C" - непонятно
на жабу все это смахивает
> собственно , зачем в названии языка присутствует "C" - непонятно
все как раз понятно. очень даже с-лайк езыг
а совместимости между ++ и # как раз дохерища. вот например зачем они такую говняшку как options притащили в # -- я вообще не понял. эта гадость должна была сдохнуть вместе с ++
Не совсем так. Конечно в написать в коде на C# кусок на C или C++ не получится, но спокойн можно использовать функции из библиотек на C/C++, там файктически тот же dlopen и ко. С указателяси тоже можно работать прямо внутри кода на C# - http://msdn2.microsoft.com/en-us/library/t2yzs44b.aspx
вообще тут народ как-то очень странно определает ооп это язык или нет, особенно если учитывать что ООП это по сути методика программирования но никак не конкретный язык код, в C вон тоже нет virtual и что дальше, надеюсь приводить примеры ООП кода на сях не нужно??
> главным образом потому, что работа с памятью становится похожей на игру в русскую рулетку
> многочисленные эксплойты, эксплуатирующие переполнение буфера -- тому наглядное подтверждение
Не умеешь - не берись. Все эти эксплоиты переполнения от того, что программист, писавший код где-то промахнулся. А на самом деле указатели - очень мощный и гибкий инструмент. А подход типа java ("pointers are not safe"), имхо, бред. В любом языке можно сделать while(1){} и греть проц до беспамятства. И что? Давайте теперь ещё скажем, что "loops are not safe". ИМХО не умеешь использовать какой-либо инструмент - не берись. По крайней мере в production режиме. Эдак можно скатиться к тому, что будет язык из 3-х функций: start(); run(); stop(); Но, блин, зато мегабезопасный О_о
О_о. Ошибки обычно отлаживаются. А опыт накапливается. А если человек действительно не может осилить указатели, то это не говорит о том что они небезопасны. Кроме как с указателями можно ещё много с чем ошибок поналяпать. Соответственно кричать что что-то "какашечка" просто так не совсем корректно.
Как и в массе других современных языков. Хотя я лично за множественное наследование, но вполне понимаю и аргументы против него. Оно порождает неоднозначности.
>вместо virtual придумали override
Какая разница, как назвать?
>если взять базовые типы - их зачем-то унаследовали от еще более базового типа обжект
Боксинг. А как ты без него собираешься передавать объекты? Указателя типа void* в высокоуровневых языках нет :)
>О_о. Ошибки обычно отлаживаются. А опыт накапливается. А если человек действительно не может осилить указатели, то это не говорит о том что они небезопасны.
И, в результате, человек, набравшись опыта, переходит на языки, где вся эта хрень не забивает его мозг и позволяет программировать не задумываясь о куче тормозящих процесс работы вещей.
Все мы начинали в школьные годы с ассемблера, проходили в студенческие через Си/Си++, по мере набора квалификации перебирались на всякие Perl/Python/PHP/Ruby/Java а под философское настроение думаем уо ФП :)
...
ЗЫ. Опыт плотной работы с Си/Си++ у меня - лет семь. Указателями работал просто виртуозно. Но как они коряво и костыльно смотрятся с высоты той же Java, например :)
Да, бывают совершенные виртуозы по проведению бухгалтерских расчётов на счётах или арифмометрах. Но, мне кажется, лично ты в такой ситуации предпочтёшь компьютер или хотя бы калькулятор :)
Работу с указателями при желании можно сделать насколько угодно безопасной. Пример - их реализация в Аде. Но в языках высокого уровня, действительно, лучше бех них.
странно... а меня от жабы чем дальше, тем больше воротит...
а ещё еслть люди, которые, набравшись опыта, становятся Мастерами своего дела и не перебегают к ПХП... Жабе (перл, кстати, тут не лепится - там есть указатели ;)) Кстати о ФП: в том же окамле, есть... ну да ладно
> поведай мне, о безгрешный, ты никогда-никогда не ловил коре дамп в своей уже вполне рабочей программе?
Нет. В рабочей - нет. На этапе активной разработки бывали сегфолты из-за глупостей. Но их частота уже после первого месяца программирования на C упала где-то на порядок. Нормальные люди быстро учатся не делать ошибки. А быдло орёт, что по улице ходить опасно, потому что голубь сверху насрать может.
> вот в силу их мощности их и надо избегать
КОМУ надо? Мне - не надо. Если можно сделать без указателей, и это красиво, быстро и удобно - я делаю без них. Если нельзя - я без раздумий их использую.
> тем более что 99.999% задач решается очень даже прекрасно и без них
Быдлокодинг - может, быть 90% прекрасно, остальные 10 - ублюдочно. На нетривиальных задачах - менее 50%.
Кому должны? Тебе? А по-моему, это ты должен сдохнуть. Указатели тебе ничего не должны. Не умеешь ими пользоваться - не пользуйся и не перди тут. Ножи должны сдохнуть, потому что anonymousI может ими порезаться. Гы.
> Именно так. Отчасти поэтому во всех нормальных языках сейчас есть foreach :)
foreach нужен для удобства, а не потому, что дебил может написать глупость. foreach гораздо менее универсален, чем тот же for или while, и ни в коем случае их не заменяет. Он просто удобен, и всё.
> И, в результате, человек, набравшись опыта, переходит на языки, где вся эта хрень не забивает его мозг и позволяет программировать не задумываясь о куче тормозящих процесс работы вещей.
Слышь, KRoN73, все давно знают, что твой любимый езыг - php. Не надо его тут лишний раз пеарить. Все задачи в мире не ограничиваются одним php-быдлокодингом. Я рад, что тебе foreach хватает. А мне - нет. Можно я буду программить на C? Или у тебя надо письменное разрешение испрашивать, о гуру?
> Работу с указателями при желании можно сделать насколько угодно безопасной. Пример - их реализация в Аде. Но в языках высокого уровня, действительно, лучше бех них.
Они сильно мешают быдлу, потому что быдло не умеет думать и страшно не любит искать ошибки. Поэтому в быдлоязычках типа php и java указателей действительно быть не должно. А вот для творческих и нетривиальных задач их лучше оставить. У творческой личности обязательно должен быть широкий выбор.
> а ещё еслть люди, которые, набравшись опыта, становятся Мастерами своего дела и не перебегают к ПХП... Жабе (перл, кстати, тут не лепится - там есть указатели ;)) Кстати о ФП: в том же окамле, есть... ну да ладно
Жаба и php - это именно быдлоязыки. Кстати, даже без отрицательного оттенка. Они заточены под обезьяну, чтобы она максимально быстро лепила для хозяина код, содержащий минимальное число ошибок. Это просто рабочий инструмент с многочисленными защитами от дурака и со всеми вытекающими.
> Они сильно мешают быдлу, потому что быдло не умеет думать и страшно не любит искать ошибки. Поэтому в быдлоязычках типа php и java указателей действительно быть не должно. А вот для творческих и нетривиальных задач их лучше оставить. У творческой личности обязательно должен быть широкий выбор.
Быдло производители не пределали удобную рукоятку для забивания гвоздей к моему микроскопу. Меня как творческую личность лишили свободы выбора.