Просмотр полной версии : Дискуссия о языках программирования
SINED_SEM
27.12.2007, 20:32
Создаю эту тему, ибо надоели споры, какой язык программирования для чего больше подходит. Здесь можно попытаться обсудить, что лучше для обучения, что - для программирования игр и т.п.
За попытку начала подобных дискуссий в других темах буду наказывать. Советы выбрать тот или иной язык программирования давать можно, разводить дискуссию о преимуществах - нет.
Убедительная, подкреплёная увесистым плюсомётом, просьба соблюдать уважение к собеседникам и придерживаться фактов, а не личного мнения ("мне то-то нравится, поэтому всё остальное - ерунда"). Хотя своим опытом, разумеется, делиться можно ("я вот писал на том-то и вышло так-то, а на ином - вот так").
Pokibor
Так что же лучше - C++/C#/pascal???
Так что же лучше - C++/C#/pascal???
Не провоцируйте флейм (http://ru.wikipedia.org/wiki/%D0%A4%D0%BB%D0%B5%D0%B9%D0%BC). Если я сейчас отвечу, что C++, придёт noLove и опять начнёт кричать о преимуществах C#. А потом и поклонники Delphi подтянутся. Однозначного ответа Вам вряд ли кто даст. Хорошо знать и то, и другое, и третье. Однако всё-таки неоспоримый факт в том, что пока что большинство сложных профессиональных проектов пишут на проверенным временем C++ и под него наибольшее разнообразие компиляторов. Хотя noLove может и заявить, что C# набирает обороты.
SINED_SEM
С++ тяжок! :) Лучше начинать с паскаля, потом пересесь со временем на делфи... :)
ЗЫ В шапке все в факе есть ;)
Если в дальнейшем человек хочет прогать графику, пусть начинает изучение языков программирования с C#, ибо он легок в освоении и прост в понимании, а так же в нем иной подход к реализации ООП. Все реализовано используя пространства имен и классы.
pokibor, вот не надо ля-ля. Согласись, ведь шарп гораздо проще освоить, чем С++? Начинать надо с простого. Потом, когда товарищ освоит азы кодинга - у него будет выбор, в какую сторону двигаться, захочет - будет плюсы учить, а точнее не плюсы, а тонкости, ибо синтаксис в плюсах такой же как и в шарпе за редкими исключениями. Захочет - будет паскаль учить. Еще раз повторяю. Мне очень нравится в шарпе его чистота, а так же реализация структуры исходного кода. Если тебя так напрягают мои посты про простоту шарпа - давай спросим у товарища SINED_SEM, какой из языков ему понравился бОльше? чисто ради интереса.
ps// начал глосование на rsdn: http://rsdn.ru/poll/1979.aspx
noLove, не нарывайтесь. Флеймить я вам не дам.
Если в дальнейшем человек хочет прогать графику, пусть начинает изучение языков программирования с C#, ибо он легок в освоении и прост в понимании, а так же в нем иной подход к реализации ООП. Все реализовано используя пространства имен и классы.
Ммм... Интересно. У меня после прочтения создалось впечатление, что Вы считаете C# языком для графики :lol: Не для физики, не для рассчётов уравнений, а именно для графики. В рамках того, что заявленные преимущества сугубо к графике никакого отношения не имеют (они вообще-то общие), то Ваш пост просто-напросто не логичен. Объективно - C# в одинаковой степени подходит для всего, разве что кроме создания оконных интерфейсов (где ему сильно помогает неплохой визуальный редактор).
Согласись, ведь шарп гораздо проще освоить, чем С++?
Не соглашусь. Всё зависит от книжки. C++ не сложнее C# и Pasca (ORTODOX, да-да, именно так). Укажите мне, что там сложного. Работа с памятью? А Вам трудно запомнить, что после new всегда где-нибудь должен быть delete?
А вот с деструкторами в C# действительно проблема. Если в C++ они естественны, то в C# эти самые несчастные Dispose, которые нужно постоянно ручками прогать - тихий ужас. Вы скажете "зачем их использовать"? Я скажу - для получения навыков по созданию абстрактных классов (вроде стеков, деревьев и пр.). Написание такого класса, уж извините, входит в основы программирования (мы его на первом курсе осваивали, чуть ли не сразу после начала занятий).
И если Вы сейчас заявите, что эти классы-де есть в библиотеках C#, то я Вам отвечу, что в реальных приложениях часто бывают нужны не они, а различные их вариации. Сбалансированные деревья, приоритетные очереди, деки и прочее.
Начинать надо с простого. Потом, когда товарищ освоит азы кодинга - у него будет выбор, в какую сторону двигаться, захочет - будет плюсы учить, а точнее не плюсы, а тонкости, ибо синтаксис в плюсах такой же как и в шарпе за редкими исключениями.
Ну вот - синтаксис такой же, как с шарпе. Так чем же так сложны эти несчастные плюсы? Пространства имён и в них есть (std - что такое, по Вашему?) ООП самое настоящее именно в С++ (вообще, меня удивило заявление, что в C# "иной подход к реализации ООП". Чем же он иной-то? ООП в полной мере реализовано в C++ и оттуда перекочевало в C#, с поправками на уборку мусора и разве что урезаниями. Чем подход-то иной, хоть убейте, не понимаю. Наследование на месте, инкапсуляция на месте, полиморфизм на месте. Зато множественного наследования нема, как "проблематичного в реализации". Ну кому-то может оно и проблематично, но вообще-то множественным наследованием никто программиста пользоваться не заставляет, если у него не хватает ума на его грамотную реализацию. А простор при использовании множественного наследования больше.
Захочет - будет паскаль учить. Еще раз повторяю. Мне очень нравится в шарпе его чистота, а так же реализация структуры исходного кода. Если тебя так напрягают мои посты про простоту шарпа - давай спросим у товарища SINED_SEM, какой из языков ему понравился бОльше? чисто ради интереса.
А если ответ будет - Basic? :lol: А что - тоже симпатичный язык. Там даже в конце строки никаких точек с запятыми ставить не надо. Правда, по себе могу сказать, что использование Basic'а и реальное программирование даже на C# - вещи разные...
Серьёзно - я Вам то же самое могу сказать про C++. Что кому нравится - это в области чувств и ощущений, а она не рациональна.
Меня Ваши посты не напрягают. Поставить галочку и нажать "удалить" больших усилий не надо. :Grin:
ps// начал глосование на rsdn: http://rsdn.ru/poll/1979.aspx
Я рад. Только списочек какой-то урезанный. Что там делает Java при наличии C# и где Prolog, например? Считаете, что он неконкурентоспособен? Ох, начну я преимущества пролога с его наследниками расписывать, ох, начну...
Если что - я даже не думал голосовать. Смешно.
noLove
pokibor
может вместо споров создадим здесь голосование, какой язык вы считаете самым лучщим или что-то наподобие?
pokibor
Создай гголосование :))
ORTODOX
Не создам. Во-первых, оно будет оффтопом. Во-вторых, эти посты также являются оффтопом и будут вскоре удалены. В-третьих, оно бессмысленно.
Война языков, как я уже говорил, всегда скатывается в флейм, ибо её участники находят, к чему придраться у противника, и начинают это со всех сторон бить, параллельно категорически опровергая наличие в своём любимом языке слабых мест. Любой язык имеет свою область применения, как и любая теория. Спорить тут можно долго, нудно и болезнено. Кстати, если сейчас дать SINED_SEM, например, Blitz3D с его Basic'ом, то через полгода он заклеймит позором и C#, и C++, и Delphi. Я Вас уверяю. Проверено на практике.
Ммм... Интересно. У меня после прочтения создалось впечатление, что Вы считаете C# языком для графики :lol: Не для физики, не для рассчётов уравнений, а именно для графики. В рамках того, что заявленные преимущества сугубо к графике никакого отношения не имеют (они вообще-то общие), то Ваш пост просто-напросто не логичен. Объективно - C# в одинаковой степени подходит для всего, разве что кроме создания оконных интерфейсов (где ему сильно помогает неплохой визуальный редактор).
Я это к тому, что проще будет с шарпа на плюсы пересесть, чем с паскаля на плюсы.
про ООП. в шарпе все строго сгруппировано в пространства имен и классы. Там нельзя создать метод и разместить его вне класса.
ps// про множественное наследование: http://www.gotdotnet.ru/Forums/Common/171156.aspx там разбор полетов
pps// опять это все перерастает в соревнование, у кого "хозяйство" больше.
ppps// пусть SINED_SEM сам выберет, что лучше изучать, попробовав и шарп, и плюсы. а?
Я это к тому, что проще будет с шарпа на плюсы пересесть, чем с паскаля на плюсы.
Согласен. Хотя... дайте подумать... не совсем согласен. В паскале есть работа с памятью, в C# - нет. С непривычки странновато будет осознавать, что от тебя требуют delete делать.
про ООП. в шарпе все строго сгруппировано в пространства имен и классы. Там нельзя создать метод и разместить его вне класса.
И это - "иной подход к реализации ООП"??? :eek: :lol:
Ндааа... принципиальная разница, ничего не скажешь.
Серьёзно - отличия никакого. Ну нельзя писать функции вне классов ("метод вне класса" есть понятие абсурдное), и что дальше? Ну будет программист вместо того, чтобы сразу писать функцию, сперва класс под неё подгонять. Разница-то какая?
ps// про множественное наследование: http://www.gotdotnet.ru/Forums/Common/171156.aspx там разбор полетов
Ммм... Смысл не ясен. Чуть ли не сразу идёт ссылка на пути обхода вопроса разговора (те самые миксины)... Это всё равно что дать в качестве обхода проблем бейсика ссылку на C++ :lol:
В C# множественного наследования нет, в C++ - есть. Факт в этом. Что множественно наследование может понадобиться - тоже факт, я в этом делая дипломные проект убеждался. Так что всякие разглагольствования, что можно там-де что-то куда-то как-то добавить, неуместны.
ppps// пусть SINED_SEM сам выберет, что лучше изучать, попробовав и шарп, и плюсы. а?
Я ему запрещаю? :eek:
иной подход к реализации ООП
угу, там ООП навязывается. даже там, где логичнее обойтись без него. ведь ООП - не панацея, просто довольно удачный подход.
ведь шарп гораздо проще освоить, чем С++?
синтаксис в плюсах такой же как и в шарпе за редкими исключениями
вот, синтаксис мало отличается. а семантика? программа должна быть класом, с методом Main, чтобы вывести что-либо в stdout, нужно городить двухэтажные конструкции (или подлючать двухэтажные namespaces) типа system.console.write. (напоминает dbms_output.putline).
Там нельзя создать метод и разместить его вне класса.
это, по-вашему, преимущество? (ладно уж, к словам придираться не буду). если мы говорим о простоте, то неужели создать класс, чтобы сделать в нём единственный статический метод проще, чем написать аналогичную функцию? (к тому же, в C++ можно сделать и так, и так)
проще будет с шарпа на плюсы пересесть, чем с паскаля на плюсы.
сомнительно. паскаль (имеется в виду нормальный, удовлетворяющий стандартам) больше похож на C++ чем на C#. или важен только синтаксис?
опять это все перерастает в соревнование, у кого "хозяйство" больше.
действительно - с одной стороны я вижу
Что кому нравится - это в области чувств и ощущений
Однозначного ответа Вам вряд ли кто даст.
с другой -
Согласись, ведь шарп гораздо проще освоить, чем С++?
проще будет с шарпа на плюсы пересесть, чем с паскаля на плюсы.
и кто, спрашивается, это соревнование затеял
Создаю эту тему, ибо надоели споры, какой язык программирования для чего больше подходит. Здесь можно попытаться обсудить, что лучше для обучения, что - для программирования игр и т.п.
За попытку начала подобных дискуссий в других темах буду наказывать. Советы выбрать тот или иной язык программирования давать можно, разводить дискуссию о преимуществах - нет.
Убедительная, подкреплёная увесистым плюсомётом, просьба соблюдать уважение к собеседникам и придерживаться фактов, а не личного мнения ("мне то-то нравится, поэтому всё остальное - ерунда"). Хотя своим опытом, разумеется, делиться можно ("я вот писал на том-то и вышло так-то, а на ином - вот так").
В тему перенесены посты из "Вопросы по программированию" (http://forum.igromania.ru/showthread.php?t=51995).
реально C++ рулит
и несмотря на его сложность начинать бы советовал именно с него так как с самых азов обучения ты будешь иметь представление о работе с памятью и другх нюансах. я начинал с акшион скриптов (это во флеше)
по синтаксису похоже на с++
когда в школе стали преподават QBasic я от него стрелялся.
а в инсте щас С++ изучаю.
и начинать само сабой с консоли.
Что касается ООП - С++ это function-oriented язык. Можно вообще без классов (обьектов). какое тут ООП?
про ООП. в шарпе все строго сгруппировано в пространства имен и классы. Там нельзя создать метод и разместить его вне класса.
И это - "иной подход к реализации ООП"???
Это не иной а правильный подход к реализации прадигмы ООП.
С++ хоть и быстрее чем Шарп, но зато он не так гибок как последний.
В C# множественного наследования нет, в C++ - есть. Факт в этом. Что множественно наследование может понадобиться - тоже факт, я в этом делая дипломные проект убеждался. Так что всякие разглагольствования, что можно там-де что-то куда-то как-то добавить, неуместны.
Это искажение фактов. Читаем википедию -
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к С++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML. Переняв многое от своих предшественников — языков С++, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++) или вывода типов (реализовано в .NET Framework 3.0).
C# - дальнейшее развитее С++. Он по-определению не может быть хуже своего родителя...
Что касается ООП - С++ это function-oriented язык. Можно вообще без классов (обьектов). какое тут ООП?
Эм... Вообще-то "можно" и "нужно" - несколько разные слова, не находите?
Ну нравится Вам - можете в C++ хоть все функции в классы запихнуть (а в main единственный вызов нужной прописать) - кто ж мешает-то? ООП там самое обычное.
Это не иной а правильный подход к реализации прадигмы ООП.
Интересная мысль... То есть "правильный подход" подразумевает вырезание всего, что расширяет возможности? :eek:
Тогда что в C# делает, например, "goto"? Его же наличие неправильно!
P.S. В тему:
http://imgs.xkcd.com/comics/goto.png
Динозаврику надо бы дать имя C#, если следовать Вашей логике...
С++ хоть и быстрее чем Шарп, но зато он не так гибок как последний.
Ммм... Стоп, я ничего не упустил? То, что по сравнению с C++ в шарпе вырезанно множественное наследование, функции вне классов, возможность работы с памятью и т.п. придало ему гибкости??? У Вас крайне оригинальное понимание гибкости языка, должен сказать! Это ж так QBasic куда гибче шарпа и C++ окажется! :lol:
C# - дальнейшее развитее С++. Он по-определению не может быть хуже своего родителя...
О Боже... А что, у красивого родителя не может родиться нежизнеспособный уродец? Простите, реальность говорит несколько о другом...
Т.н. "нежизнеспособные" возможности C++ никто не просит использовать, зато они есть, и это придаёт языку гибкости. Тот же goto тоже некоторые называют несуразностью, однако его никто выкидывать не решился (ох, как же я ругался на Java за отсутствие goto, когда одну программу на ней писал!).
3 вещи из за которых не хочу связываться с c++:
1. Описание прототипов процедур и функций и сам программный код в разных файлах.
2. Непонятности с указателями(ну не понимаю я, когда их надо ставить, а когда - нет, хоть убейте)
3. Не очень нравятся стрелки "->" при работе со свойствами объектов, а так же что то для меня не ясное, когда надо ставить точки, а когда эти стрелки.
3.1. Отладка. В шарпе отлаживать свой софт - это просто сказка, чего я не могу сказать о плюсах.
Это чисто мое имхо, и я его никому не навязываю, плюсы знаю хуже шарпа, и опыта работы там меньше... вот так то...
ps// а нафига вообще этот гото нужен? я им никогда не пользовался, пока в делфи сидел(около 7 лет).
pps// pokibor, а то, что в плюсах есть множественное наследование, работа с памятью - это делает его круче? Я конечно понимаю, что Вы папа в плюсах, но все-равно, нехорошо намекать на несостоятельность других языков. Я вот шарп люблю, я ж не говорю, что плюсы - фигня, и на них только дети пишут. И не надо мне тут проффессиональный геймдев приводить в пример. Я лично пишу на том, на чем мне легче\проще\удобнее писать, не знаю как остальные. Скажем НЕТ культу личности! :D
1. Описание прототипов процедур и функций и сам программный код в разных файлах.
Это ввели не просто так, а потому что как раз таки удобно. Можно переписать файл реализации, не трогая файлов заголовков или наоборот. А в C# приходится всё тело класса перерывать.
2. Непонятности с указателями(ну не понимаю я, когда их надо ставить, а когда - нет, хоть убейте)
3. Не очень нравятся стрелки "->" при работе со свойствами объектов, а так же что то для меня не ясное, когда надо ставить точки, а когда эти стрелки.
Ну извините, это уже не сюда! Интеллектуальные способности у каждого свои, я понимаю, однако критикуя C++ подобным образом Вы только создаёте C# славу "языка для тех, кто (хм...) не способен выучить C++".
3.1. Отладка. В шарпе отлаживать свой софт - это просто сказка, чего я не могу сказать о плюсах.
Ммм... А какие претензии к отладке? По-подробнее. Я вот пишу на C++ и на С# под MSVS - почему-то разницы вообще не заметил...
Это чисто мое имхо, и я его никому не навязываю, плюсы знаю хуже шарпа, и опыта работы там меньше... вот так то...
А я кажется просил выше воздержаться от сугубо личного мнения, если оно не предполагает сравнения языков на примерах...
ps// а нафига вообще этот гото нужен? я им никогда не пользовался, пока в делфи сидел(около 7 лет).
А вот почитайте комикс, и поймёте. Goto нужен редко, но метко. Порой стоит вопрос - либо goto, либо нагромождение кошмарных циклов. Если Вы его не испоьзовали - значит, не писали сложных программных систем с кучей циклов и условий.
pps// pokibor, а то, что в плюсах есть множественное наследование, работа с памятью - это делает его круче? Я конечно понимаю, что Вы папа в плюсах, но все-равно, нехорошо намекать на несостоятельность других языков. Я вот шарп люблю, я ж не говорю, что плюсы - фигня, и на них только дети пишут. И не надо мне тут проффессиональный геймдев приводить в пример. Я лично пишу на том, на чем мне легче\проще\удобнее писать, не знаю как остальные. Скажем НЕТ культу личности! :D
Это делает его более гибким. Как Вы трактуете мои слова - это Ваши проблемы. Я привожу пример и говорю, что это-то в C++ есть, а в C# - нет. И что это порой бывает очень полезно. Как goto, например.
noLove
1. Так никто впринципе не заставляет. Можно писать все в одном файле и безо всяких прототипов. Вот только зачем..
2. Ну тут уж просто не знаю где там можно путаться.. разве что при объевлени какогонибудь "указателя на массив функций возвращающих массив указателей..."
3. Если объект то точка, если указатель на объект, то стрелочка.
3.1 Честно скажу, что в шарпе не писал и не отлаживал, но помоему простота отладки должна зависеть не от языка а от среду в первую очередь..
Я лично пишу на том, на чем мне легче\проще\удобнее писать, не знаю как остальные.
А тут пожалуй соглашусь) Еще на первом курсе нам советовали в первую очередь стараться выбрать язык которые лучше знаешь.. Уж если он ЗНАЧИТЕЛЬНО хуже подходит для реализации поставленной задачи, то стоит искать другой.
Эм... Вообще-то "можно" и "нужно" - несколько разные слова, не находите?
Ну нравится Вам - можете в C++ хоть все функции в классы запихнуть (а в main единственный вызов нужной прописать) - кто ж мешает-то? ООП там самое обычное.
Интересная мысль... То есть "правильный подход" подразумевает вырезание всего, что расширяет возможности? :eek:
Это совсем не так. Правильным (с точки зрения ООП) будет язык, запрещающий или усложнающий (дабы у прораммиста небыло соблазана) приминение методов разработки, идущих в разрез с ООП.
Времена бейсика (когда можно было совсем уже без классов) - давно уже прошли. Да и С++, признаться, староват - пора и ему на покой..
Ммм... Стоп, я ничего не упустил? То, что по сравнению с C++ в шарпе вырезанно множественное наследование, функции вне классов, возможность работы с памятью и т.п. придало ему гибкости??? У Вас крайне оригинальное понимание гибкости языка, должен сказать! Это ж так QBasic куда гибче шарпа и C++ окажется! :lol:
Классический пример - напишите на С++ программу, которая будет модифицировать сама себя. Тогда поймете почему Шарп гибче..
О Боже... А что, у красивого родителя не может родиться нежизнеспособный уродец? Простите, реальность говорит несколько о другом...
Т.н. "нежизнеспособные" возможности C++ никто не просит использовать, зато они есть, и это придаёт языку гибкости. Тот же goto тоже некоторые называют несуразностью, однако его никто выкидывать не решился (ох, как же я ругался на Java за отсутствие goto, когда одну программу на ней писал!).
Жаль вас расстраивать, но реальность говорит как раз об обратном. Вероятность появления уродцев у нормальных родителей - ничтожна, иначе человечество давно бы уже вымерло..
А "нежизнеспособные" возможности C++ придают языку только еще больше "нежизнеспособности"... и уж никак не гибкости :lol:
Это совсем не так. Правильным (с точки зрения ООП) будет язык, запрещающий или усложнающий (дабы у прораммиста небыло соблазана) приминение методов разработки, идущих в разрез с ООП.
Так мне интересно, почему из C# никто не выкинул goto, который тоже, по такой идее, нужно "запретить или усложнить, дабы не было соблазна".
Подход "запретим, чтобы не было соблазна" бредов по самой своей сути и лишь только показывает ориентацию языка на новичков (чтобы не чувствовали себя такими уж новичками) и бессмысленность для профессионалов (которые отлично знают, что, когда и как надо применять).
Зачем нужен C#, почему не Visual Basic? Ведь в VB-то как раз запрещено много больше, чем в C#... И ООП, по Вашей логике, там даже лучше, чем в C# получается (как раз потому что больше запрещено). А уж Java-то вообще супер-язык! И где она сейчас? Да этим самым C#'ом (который по такой логике хуже неё) вытесняется. Странно? Не то слово.
Короче, логика "запретим, чтобы неповадно было" бредова. Больше напоминает "запретим, потому что нам лень это делать".
Времена бейсика (когда можно было совсем уже без классов) - давно уже прошли. Да и С++, признаться, староват - пора и ему на покой..
Ой, вот только про времена не надо! Давайте нормальные аргумент: почему C++ устарел. Intel'овские процессоры тоже вон уже старые. Давайте на принципиально новую архитектуру какую перейдём тогда. Скажем, троичные процы выпустим :lol:
Кстати, последняя версия стандарта C++ 2003 годом датируется.
Классический пример - напишите на С++ программу, которая будет модифицировать сама себя. Тогда поймете почему Шарп гибче..
О, Боже! Не менее классический ответ - я Вам эту программу на Прологе напишу чуть ли не в два счёта, а потому буду говорить, что C++ и C# по сравнению с Прологом - полная фигня и Пролог гибче! :lol:
Жаль вас расстраивать, но реальность говорит как раз об обратном. Вероятность появления уродцев у нормальных родителей - ничтожна, иначе человечество давно бы уже вымерло..
Ага, как же! Всё зависит от условий. Например, если родители были близкими родственниками, то тут, знаете ли, законы немного иные :wnk:
Я уж не говорю о воспитании и прочем. Как говорил Хазанов, нормальная семья: Отец - врач, мать - учительница, сын - оболтус. Пожалуйста: отец - C++, мать - Java, сын - C#!
А "нежизнеспособные" возможности C++ придают языку только еще больше "нежизнеспособности"... и уж никак не гибкости :lol:
Нет, я всё-таки Вас не понимаю. Ну не используйте возможности, если не умеете! А множественное наследование гибкости-то придаёт, вот уж не надо! И даже логики. Если есть класс "Стрелок" с реализацией всего, что нужно для стрельбы, и класс "Ходок" - для ходьбы, то множественное наследование - самая логичная вещь, какая только может быть.
А уж работа с памятью - так вообще отличная штука. Хотя бы для оптимизации.
Так мне интересно, почему из C# никто не выкинул goto, который тоже, по такой идее, нужно "запретить или усложнить, дабы не было соблазна".
Подход "запретим, чтобы не было соблазна" бредов по самой своей сути и лишь только показывает ориентацию языка на новичков (чтобы не чувствовали себя такими уж новичками) и бессмысленность для профессионалов (которые отлично знают, что, когда и как надо применять).
А вы изучаете С++ чтобы чувствовать себя профи?
Отсюда лозунг - если вы профи по части ООП - используйте goto везде! :lol:
А вообще goto оставили для тех кто перешел на Шарп с других менее ООП языков..
Зачем нужен C#, почему не Visual Basic? Ведь в VB-то как раз запрещено много больше, чем в C#... И ООП, по Вашей логике, там даже лучше, чем в C# получается (как раз потому что больше запрещено). А уж Java-то вообще супер-язык! И где она сейчас? Да этим самым C#'ом (который по такой логике хуже неё) вытесняется. Странно? Не то слово.
Так мы и до Smalltalk-а дойдем, которому нет равных по части ООП ориентированности. Давайте уже оставаться в рамках раз уж мы начали с С++ и Шарпа. А в конкуренции между Java и Шарпом - победит сильнейший..
Короче, логика "запретим, чтобы неповадно было" бредова. Больше напоминает "запретим, потому что нам лень это делать".
Вам не лень goto везде пихать? это ваше дело.. пихайте наздоровье :Grin:
Ой, вот только про времена не надо! Давайте нормальные аргумент: почему C++ устарел. Intel'овские процессоры тоже вон уже старые. Давайте на принципиально новую архитектуру какую перейдём тогда. Скажем, троичные процы выпустим :lol:
Некорректное сравнение ситуации. У интел архитектуры щас нет разумной замены. Куда вы там собрались переходить? В ситуации между Шапом и С++ все иначе.
О, Боже! Не менее классический ответ - я Вам эту программу на Прологе напишу чуть ли не в два счёта, а потому буду говорить, что C++ и C# по сравнению с Прологом - полная фигня и Пролог гибче! :lol:
Надеюсь используемый вами Пролог будет не менее классическим чем ваш ответ.. поясню - как давно у пролога появились фичи написания метапрограмм?
А вообще, если напишите - то так оно и будет, Пролог окажется гибче.
Например, если родители были близкими родственниками, то тут, знаете ли, законы немного иные :wnk:
Я уж не говорю о воспитании и прочем. Как говорил Хазанов, нормальная семья: Отец - врач, мать - учительница, сын - оболтус. Пожалуйста: отец - C++, мать - Java, сын - C#!
без комментариев.. :rolleyes:
Нет, я всё-таки Вас не понимаю. Ну не используйте возможности, если не умеете! А множественное наследование гибкости-то придаёт, вот уж не надо! И даже логики. Если есть класс "Стрелок" с реализацией всего, что нужно для стрельбы, и класс "Ходок" - для ходьбы, то множественное наследование - самая логичная вещь, какая только может быть.
А уж работа с памятью - так вообще отличная штука. Хотя бы для оптимизации.
Гибкость, получаемая от множественного наследования, в большинстве случаев не стоит того, так как подобные "фичи" относятся к зарекомендовавшим себя как проблематичные при разработке программных систем.
Отсюда лозунг - если вы профи по части ООП -
используйте goto везде!
у вас весьма причудливая логика, если вы сделали такой вывод из слов pokibor'а
В ситуации между Шапом и С++ все иначе.
а на вопрос "почему C++ устарел" вы так и не ответили...
Гибкость, получаемая от множественного наследования, в большинстве случаев не стоит того, так как подобные "фичи" относятся к зарекомендовавшим себя как проблематичные при разработке программных систем.
и всё-таки.. объясните, что вы имеете в виду под словом "гибкость". пока из ваших слов следует, что чем меньше у языка возможностей, тем более он гибок.
То же множественное наследование в неумелых руках может принести не больше проблем, чем, скажем, цикл for; однако никто не заставляет этими возможностями пользоваться.
и про работу с памятью ничего конкретного вы не сказали. какой язык более гибкий - C++, в котором можно как делать всё самостоятельно, так и подключить какой-нибудь сборщик мусора, коих немало, или же C#, в котором доступен только последний вариант?
у вас весьма причудливая логика, если вы сделали такой вывод из слов pokibor'а
Уважаемый L'ombre - такой вывод - вы сделали сами, я не пользуюсь goto вообще...
а на вопрос "почему C++ устарел" вы так и не ответили...
Понимайте буквально, время идет, и прогресс не стоит на месте, С++ на порядок страше чем Шарп, следовательно С++ не такой современный по сравнению с ним.
и всё-таки.. объясните, что вы имеете в виду под словом "гибкость". пока из ваших слов следует, что чем меньше у языка возможностей, тем более он гибок.
Примера с матапрограммированием более чем достаточно.. разве нет?
То же множественное наследование в неумелых руках может принести не больше проблем, чем, скажем, цикл for; однако никто не заставляет этими возможностями пользоваться.
В общих чертах - вы правы. Хотя в контексте спора про ООП - сравнивать цикл for и множественное наследование как то нелогично.
и про работу с памятью ничего конкретного вы не сказали. какой язык более гибкий - C++, в котором можно как делать всё самостоятельно, так и подключить какой-нибудь сборщик мусора, коих немало, или же C#, в котором доступен только последний вариант?
И на кой мне нужна эта самая "работа с памятью"? Вы ведь ручные аллокаци имеете ввиду? Для меня это сомнительная фича, так как можно сделать абсолютно все без непосредственного использования памяти, причем времени уйдет меньше.
А вы изучаете С++ чтобы чувствовать себя профи?
Отсюда лозунг - если вы профи по части ООП - используйте goto везде! :lol:
Так... запишем... возражений нет. Переходим к следующему пункту.
А вообще goto оставили для тех кто перешел на Шарп с других менее ООП языков..
А где тогда работа с памятью и множественное наследование? Почему их не оставили? И зачем язык goto испортили? Всё-таки может признаете, что в реальности критерии гибкости и полезности отдельных конструкций несколько иные, нежели Вы пытаетесь доказать... Хотя L'ombre прав, логика у Вас оригинальная. Против подобной логики я бессилен... Хотя, нет. Я не уверен, что Ваша "логика" является собственно логикой :Emba:
Так мы и до Smalltalk-а дойдем, которому нет равных по части ООП ориентированности. Давайте уже оставаться в рамках раз уж мы начали с С++ и Шарпа. А в конкуренции между Java и Шарпом - победит сильнейший..
Тэээк... Возражений опять нет. Действительно, по Вашей логике Smalltalk должен рвать и C#, и C++ как тузик тряпку. И почему он куда менее популярен и C#, и С++? Почему M$ вообще не его, а C# взяла? Загадка...
Вам не лень goto везде пихать? это ваше дело.. пихайте наздоровье :Grin:
См. замечание L'ombre. Возражений опять нет...
Некорректное сравнение ситуации. У интел архитектуры щас нет разумной замены. Куда вы там собрались переходить? В ситуации между Шапом и С++ все иначе.
То есть как нет разумной замены? Была! Ещё в советские времена была такая хорошая машина "Сетунь". С трёхзначной логикой. Давайте собирать подписи за то, чтобы поднять её схемы и переделать все процы только потому, что двоичная логика устарела.
Надеюсь используемый вами Пролог будет не менее классическим чем ваш ответ.. поясню - как давно у пролога появились фичи написания метапрограмм?
Эээ... Вообще-то с момента его появления.
Простейшая программа
prove( true).
prove( ( Goall, Goal2)) :-
prove{ Goall),
prove( Goal2).
prove( Goal) :-
clause( Goal, Body),
prove( Body).
вам знакома?
Такие возможности никакому C# не снились. Это, конечно, простейший вариант, но для метапрограммирования в Prolog возможностей куда больше. Почитайте, например, Братко, "Алгоритмы искусственного интеллекта на языке PROLOG". Там метапрограммированию целая 23 глава посвящена.
А вообще, если напишите - то так оно и будет, Пролог окажется гибче.
Написал выше. Подсчитайте количество строчек.
Prolog от этого стал гибче? :eek:
без комментариев.. :rolleyes:
Против биологии не попрёшь, понимаю...
* Pokibor ушёл писать мексиканский сериал про нелёгкую жизнь языков программирования *
Гибкость, получаемая от множественного наследования, в большинстве случаев не стоит того, так как подобные "фичи" относятся к зарекомендовавшим себя как проблематичные при разработке программных систем.
Ага, значит, Вы всё-таки признаёте, что все эти якобы-ненужные множественные наследования и т.п. добавляют гибкости? Отлично. Тогда следующий шаг: так что конкретно есть в C# такого, чего нет в C++? Ну просто приведите пример возможности, операции там... Правда, вряд ли Вам это удастся, ибо для C++ столько библиотек, что C# ещё до его возможностей расти и расти...
А вот насчёт "большинстве случаев не стоит того" - по-подробнее! Чего конкретно она не стоит? Денег, времени, ресурсов? Конкретно - чего.
Понимайте буквально, время идет, и прогресс не стоит на месте, С++ на порядок страше чем Шарп, следовательно С++ не такой современный по сравнению с ним.
О-па! C++ на порядок старше Java. Почему она его не вытеснила? У неё было время. Нет, всё-таки логика у Вас крайне оригинальна.
А! Кстати!
Вам 30 лет? Мне 23. Я младше Вас => я умнее Вас :lol:
Супер! Мне нравится такая логика! :appl:
И на кой мне нужна эта самая "работа с памятью"? Вы ведь ручные аллокаци имеете ввиду? Для меня это сомнительная фича, так как можно сделать абсолютно все без непосредственного использования памяти, причем времени уйдет меньше.
Ооо... Зачем нужны шейдеры? Ведь можно любые графические фильтры сделать без непосредственного использования видеокарты! С памятью ситуация во многом аналогична.
А вообще goto оставили для тех кто перешел на Шарп с других менее ООП языков..
А где тогда работа с памятью и множественное наследование? Почему их не оставили? И зачем язык goto испортили?
По поводу причин присутствия в шарпе goto - это был сарказм.. :sml:
Работа с памятью и множественное наследование - тут неоднократно уже рассказывалось о причинах их отсутствия в шарпе.
Всё-таки может признаете, что в реальности критерии гибкости и полезности отдельных конструкций несколько иные, нежели Вы пытаетесь доказать...
Пример о проблематичности приминения множественного наследования взят как раз из реальных критерий (читай википедию) а не из личного опыта, так что это вы тут хотите что то доказать.
Хотя L'ombre прав, логика у Вас оригинальная. Против подобной логики я бессилен... Хотя, нет. Я не уверен, что Ваша "логика" является собственно логикой :Emba:
Попытка перейти на личности, нехорошо... аргументы кончилсь?
Тэээк... Возражений опять нет. Действительно, по Вашей логике Smalltalk должен рвать и C#, и C++ как тузик тряпку. И почему он куда менее популярен и C#, и С++? Почему M$ вообще не его, а C# взяла? Загадка...
:Grin: Вы забыли про VB упомянуть и еще с десяток других языков..
То есть как нет разумной замены? Была! Ещё в советские времена была такая хорошая машина "Сетунь". С трёхзначной логикой. Давайте собирать подписи за то, чтобы поднять её схемы и переделать все процы только потому, что двоичная логика устарела.
Собирать подписи - это разумно? к чему такой сбор приведет в рыночных условиях?
Простейшая программа
prove( true).
prove( ( Goall, Goal2)) :-
prove{ Goall),
prove( Goal2).
prove( Goal) :-
clause( Goal, Body),
prove( Body).
вам знакома?
Такие возможности никакому C# не снились. Это, конечно, простейший вариант, но для метапрограммирования в Prolog возможностей куда больше. Почитайте, например, Братко, "Алгоритмы искусственного интеллекта на языке PROLOG". Там метапрограммированию целая 23 глава посвящена.
Логическое и метапрограммирование немного разные вещи.
Если программирование – это создание программ, то метапрограммирование – это создание программ, создающих программы (или себя) или манипулирующих другими программами (или собой) как данными, или же выполняющих часть работы, обычно приходящуюся на время исполнения, во время компиляции.
К чему тут этот Прологовский пример?
Ага, значит, Вы всё-таки признаёте, что все эти якобы-ненужные множественные наследования и т.п. добавляют гибкости?
Это ваш собственный вывод, в вас говорит нужда принять желаемое за действительное. так как я ничего подобного не говорил.
Отлично. Тогда следующий шаг: так что конкретно есть в C# такого, чего нет в C++? Ну просто приведите пример возможности, операции там... Правда, вряд ли Вам это удастся, ибо для C++ столько библиотек, что C# ещё до его возможностей расти и расти...
Нет кодогенерации - основы метапрограммирования. см. выше..
А вот насчёт "большинстве случаев не стоит того" - по-подробнее! Чего конкретно она не стоит? Денег, времени, ресурсов? Конкретно - чего.
Денег, времени, ресурсов :Grin:
О-па! C++ на порядок старше Java. Почему она его не вытеснила? У неё было время. Нет, всё-таки логика у Вас крайне оригинальна.
Единственный язык, претендующий на вытеснение остальных языков это С++. и все ваши попытки убедь кого то в никчемности шарпа - прямое тому подтверждение.
А! Кстати!
Вам 30 лет? Мне 23. Я младше Вас => я умнее Вас :lol:
Супер! Мне нравится такая логика! :appl:
Я рад за вас...
Пример о проблематичности приминения множественного наследования взят как раз из реальных критерий (читай википедию) а не из личного опыта, так что это вы тут хотите что то доказать.
Так кто заставляет применять множественное наследование, если не умеешь? В чём проблематика?
Википедию, кстати, пишут такие же люди, как мы с Вами. А статьи про C# - как раз такие, как Вы. Кстати, кто там призывал отказаться от культа личности и не признавал авторитеты? Вы или noLove?
А то я на слова Страуструпа сошлюсь... Короче, пример "проблематичности приминения множественного наследования" покажите мне.
Попытка перейти на личности, нехорошо... аргументы кончилсь?
Да что Вы! Кончились они у Вас, потому Вы и применяете нетрадиционную логику, что замечаю и я, и L'ombre. Я же тоже могу пойти подобным путём и начать делать такие бредовые выводы, что ничего Вы на них не возразите.
:Grin: Вы забыли про VB упомянуть и еще с десяток других языков..
Могу и упомянуть. Что же делать, если пример этих языков рвёт на части Вашу логику? А то у Вас оригинально выходит: "Возьмём объект A и объект B. B превосходит A по значению критерия K. Следовательно, B лучше A вообще [это первый крайне спорный переход]. А то, что по значению этого же критерия C превосходит и B, и A - это мы считать не будем, C всё равно хуже B! [а вот это вообще показывает бессмысленность вывода]." Математическим языком Ваше заблуждение понятно?
Собирать подписи - это разумно? к чему такой сбор приведет в рыночных условиях?
Да ни к чему он не приведёт, ибо мир, к счастью, пока ещё разумен и не будет переходить ни на что новое только потому, что старому исполнилось много лет. Последний стандарт C++ датируется 2003 годом. Так что C++ более чем актуален до сих пор.
Логическое и метапрограммирование немного разные вещи.
Если программирование – это создание программ, то метапрограммирование – это создание программ, создающих программы (или себя) или манипулирующих другими программами (или собой) как данными, или же выполняющих часть работы, обычно приходящуюся на время исполнения, во время компиляции.
К чему тут этот Прологовский пример?
К тому, что это и есть метапрограммирование на Прологе. Данная программа осуществляет вывод другой программы на языке Пролог, передаваемой ей в виде текста. Это и есть то самое метапрограммирование, уважаемый, именно с таким определением. А Вы уличены в незнании Пролога.
Почитайте книжечку-то, я Вам даже ссылку (http://www.webmate.com.ru/ebooks/book225.html) дам.
То, что Пролог - язык логического программирования, ещё не значит, что на нём невозможно писать метапрограммы. Точно так же, как то, что C# - язык ООП, не исключает возможности того же самого.
Для справки, написание на Прологе его собственного интерпретатора вообще укладывается в две коротеньких строчки и является тривиальнейшей задачей:
prove (Goal) :-
call (Goal) .
А сколько строчек займёт написание на C# интерпретатора этого самого C#? :lol:
Так что простите, но для метапрограммирования Пролог куда мощнее и C++, и C# вместе взятых!
Meтапрограммой называется программа, которая принимает в качестве данных
другие программы. Примерами метапрограмм являются интерпретаторы и компиля-
торы. Особой разновидностью метапрограмм являются метаинтерпретаторы — ин-
терпретаторы для некоторого языка, написанные на том же языке. Таким образом,
метаинтерпретатором Prolog является интерпретатор языка Prolog, который сам на-
писан на языке Prolog.
цитата из той-самой-книги
Это ваш собственный вывод, в вас говорит нужда принять желаемое за действительное. так как я ничего подобного не говорил.
То есть слова "Гибкость, получаемая от множественного наследования" не означает, что от множественного наследования получается гибкость? О-па! Ваша логика продолжает меня удивлять.
Нет кодогенерации - основы метапрограммирования. см. выше..
Ваше незнание Пролога см. выше. Соответсвенно, я не уверен, что Вы правильно поняли определение метапрограммирования. Как и мой пост. Я у Вас просил показать конкретные инструкции C#, которые так облегчают жизнь в метапрограммировании. А то я уж и не знаю, с чем конкретно спорить. "Наличие кодогенерации" - понятие обширное. В C++ кодогенерация есть хотя бы потому, что просто возможно написать на C++ компилятор С++. Так что будте так любезны, говорите конкретнее.
Денег, времени, ресурсов :Grin:
Да? Чем же? Как применение множественного наследования в программе требует хоть одного из этих пунктов? Пример, пожалуйста!
Вообще-то множественное наследование даёт выгоду хотя бы от сокращения количества строчек на переписывание методов класса и плюс вся та выгода от присвоения детей ссылкам на родителей и т.п. Так что выгода есть, я показал, почему. А вот про затраты - жду Ваших примеров.
Единственный язык, претендующий на вытеснение остальных языков это С++. и все ваши попытки убедь кого то в никчемности шарпа - прямое тому подтверждение.
Стоп-стоп-стоп! Где убеждение в никчёмности? Где оно? Где C++, претендующий на вытеснение всех остальных? Где это у меня было написано? В каком посте, в какой строчке?
Мне сколько раз повторять, где лично я сам использую C#? Где лично я сам стал бы использовать вовсе не C++, а, скажем, Java или даже Prolog?
Нет, я лишь протестую против Ваших утверждений, а сам-то ничего про всемогущесть C++ не говорю! Вы атакуете C++, я его защищаю - и вдруг - БАЦ! Из Ваших уст звучит заявление, что я, оказывается, атаковал все языки разом? Оно требует конкретных ссылок! Будте добры их дать.
Я рад за вас...
То есть Вы признаёте наличие в своей логике парадокса и, следовательно, её неприменимость? Либо я где-то ошибся в рассуждениях? Ведь цепочка-то проста:
C# младше C++ => он всеобъемлюще лучше; Я младше Вас => я всеобъемлюще умнее; Но я не согласен с тем, что C# всеобъемлюще лучше, т.е. с истинным в рамках логики утверждением
=> Я умнее и глупее одновременно [либо C# и лучше C++, и хуже одновременно] => мы пришли к парадоксу.
Уп-с! Мне тут кое-что написали в мессагер! Прошу прощения:
http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/DoNotFeedTroll.svg/200px-DoNotFeedTroll.svg.png
Так кто заставляет применять множественное наследование, если не умеешь? В чём проблематика?
Википедию, кстати, пишут такие же люди, как мы с Вами. А статьи про C# - как раз такие, как Вы. Кстати, кто там призывал отказаться от культа личности и не признавал авторитеты? Вы или noLove?
А то я на слова Страуструпа сошлюсь... Короче, пример "проблематичности приминения множественного наследования" покажите мне.
Ну вот, теперь уже и в википедии одни ламеры а настоящие профи сидят тут и гонят на все языки кроме их любимого.. :sml:
А как дело доходит до практики так вы сразу в сторонку. Зачем что то разрабатывать? ведь можно просто поиграть в разработчиков.. вот вы и играетесь. на форуме полно постов с идеями перестать уже трепаться и что то сделать. Ваши реплики - Да! Давайте! есть везде. и каков итог? где сделанные игры? Теоретики блин...
Да что Вы! Кончились они у Вас, потому Вы и применяете нетрадиционную логику, что замечаю и я, и L'ombre. Я же тоже могу пойти подобным путём и начать делать такие бредовые выводы, что ничего Вы на них не возразите.
Я на личности не перехожу, не нада мне ля ля. Лучше ищите аргументы..
Могу и упомянуть. Что же делать, если пример этих языков рвёт на части Вашу логику? А то у Вас оригинально выходит: "Возьмём объект A и объект B. B превосходит A по значению критерия K. Следовательно, B лучше A вообще [это первый крайне спорный переход]. А то, что по значению этого же критерия C превосходит и B, и A - это мы считать не будем, C всё равно хуже B! [а вот это вообще показывает бессмысленность вывода]." Математическим языком Ваше заблуждение понятно?
:wnk: Вы хоть сами поняли что сказали?
Да ни к чему он не приведёт, ибо мир, к счастью, пока ещё разумен и не будет переходить ни на что новое только потому, что старому исполнилось много лет. Последний стандарт C++ датируется 2003 годом. Так что C++ более чем актуален до сих пор.
Вы немного опоздали - мир уже начал переходить с С++ на шарп. Хотя многие начинают сразу с шарпа минуя гемор работы на С++.
К тому, что это и есть метапрограммирование на Прологе. Данная программа осуществляет вывод другой программы на языке Пролог, передаваемой ей в виде текста. Это и есть то самое метапрограммирование, уважаемый, именно с таким определением. А Вы уличены в незнании Пролога.
метапрограммирование на Прологе - хорошо сказано. а может стоит еще раз почитать что есть метапрограммирование?
То, что Пролог - язык логического программирования, ещё не значит, что на нём невозможно писать метапрограммы. Точно так же, как то, что C# - язык ООП, не исключает возможности того же самого.
Для справки, написание на Прологе его собственного интерпретатора вообще укладывается в две коротеньких строчки и является тривиальнейшей задачей:
prove (Goal) :-
call (Goal) .
Как я уже говорил - ваше понимание метапрограммирования - ошибочно.
Исходя из вашей "справки" о языке Пролог - "написание на Прологе его собственного интерпретатора" и метапрограммирование - это одно и тоже. Что ж, может для вас оно и так. Но где тут модификация выполняемой програмы? Где кодогенерация? Где декларация правил по которым эта самая генерация кода происходит. нету..
А сколько строчек займёт написание на C# интерпретатора этого самого C#? :lol:
ICodeCompiler compiler = new CSharpCodeProvider().CreateCompiler();
Assembly asm = compiler.CompileAssemblyFromSource(null, "CSharp source code goes here..").CompiledAssembly;
asm.GetType("Programm").GetMethod("Main").Invoke(..);
Все, можете смело теперь делать свой интерпритатор языка C#... :lol:
Так что простите, но для метапрограммирования Пролог куда мощнее и C++, и C# вместе взятых!
В области логического программирования - мощнее. безусловно.. кто спорит?
Meтапрограммой называется программа, которая принимает в качестве данных
другие программы. Примерами метапрограмм являются интерпретаторы и компиля-
торы. Особой разновидностью метапрограмм являются метаинтерпретаторы — ин-
терпретаторы для некоторого языка, написанные на том же языке. Таким образом,
метаинтерпретатором Prolog является интерпретатор языка Prolog, который сам на- писан на языке Prolog.
цитата из той-самой-книги
Это простейший вариант, основную разницу я вам уже обьяснил.. Разумеется можно назвать любой интерпритатор/компилятор метаинтерпиритатором/метакомпилятором. Однако, одно дело метаинтерпритатор и совсем другое дело метапрограмма.
То есть слова "Гибкость, получаемая от множественного наследования" не означает, что от множественного наследования получается гибкость? О-па! Ваша логика продолжает меня удивлять.
Очередной перл логики дизъюнктов? где вы нашли "Гибкость, получаемую от множественного наследования".
Ваше незнание Пролога см. выше. Соответсвенно, я не уверен, что Вы правильно поняли определение метапрограммирования. Как и мой пост. Я у Вас просил показать конкретные инструкции C#, которые так облегчают жизнь в метапрограммировании. А то я уж и не знаю, с чем конкретно спорить. "Наличие кодогенерации" - понятие обширное. В C++ кодогенерация есть хотя бы потому, что просто возможно написать на C++ компилятор С++. Так что будте так любезны, говорите конкретнее.
Ну до вашего знания пролога - мне действительно далеко :lol:
И вообще, хватит уже оправдывать недостатки С++ используя для этого достоинства других языков.
Да? Чем же? Как применение множественного наследования в программе требует хоть одного из этих пунктов? Пример, пожалуйста!
Вообще-то множественное наследование даёт выгоду хотя бы от сокращения количества строчек на переписывание методов класса и плюс вся та выгода от присвоения детей ссылкам на родителей и т.п. Так что выгода есть, я показал, почему. А вот про затраты - жду Ваших примеров.
Если нет примеров незаменимости множественного наследования, то и обратные примеры тоже ненужны. Так как подтверждать примером проблематичность использования сабжа - дело того нестоящее..
Стоп-стоп-стоп! Где убеждение в никчёмности? Где оно? Где C++, претендующий на вытеснение всех остальных? Где это у меня было написано? В каком посте, в какой строчке?
Мне сколько раз повторять, где лично я сам использую C#? Где лично я сам стал бы использовать вовсе не C++, а, скажем, Java или даже Prolog?
Нет, я лишь протестую против Ваших утверждений, а сам-то ничего про всемогущесть C++ не говорю! Вы атакуете C++, я его защищаю - и вдруг - БАЦ! Из Ваших уст звучит заявление, что я, оказывается, атаковал все языки разом? Оно требует конкретных ссылок! Будте добры их дать.
А вы перечитайте свои посты - постоянный гон на все кроме С++.
Это именно Вы атакуете Шарп, а я его защищаю. До С++ мне дела нет, ненадо было вам начинать этот спор..
То есть Вы признаёте наличие в своей логике парадокса и, следовательно, её неприменимость? Либо я где-то ошибся в рассуждениях? Ведь цепочка-то проста:
C# младше C++ => он всеобъемлюще лучше; Я младше Вас => я всеобъемлюще умнее; Но я не согласен с тем, что C# всеобъемлюще лучше, т.е. с истинным в рамках логики утверждением
=> Я умнее и глупее одновременно [либо C# и лучше C++, и хуже одновременно] => мы пришли к парадоксу.
Ваша логика не проста а очень проста, до примитивности. Доказываете что С++ везде впереди. Просмотрите все ваши посты, хоть тот же диспут в теме С# и Xna - революция в игросторении.
Человек поделился с вами хорошей новостью и тут же вы влезли и начали нести всякие нелепости, типа того что Шарп это интерпритируемый язык, что все функции в нем - виртуальные, 3Д игры делать нельзя (типа сам пробовал - неполучилось) и прочую тарабарщину...
Такое навязчивое поведение естественно для человка совершенно не разбирающимся в предмете. Все ваши супе-пупер логические "доводы" и "аргументы" - укладываются в одну фразу (вашу) - О, да! Еще один "великий программер" пришел всех учить!
raxxla
Что ж, этого и следовало ожидать. Опять двадцать пять.
Вы с noLove начинаете дискуссию, Вы заявляете "C# - дальнейшее развитее С++. Он по-определению не может быть хуже своего родителя...", Вы не придерживаетесь в своих постах логики, Вы доводите спор до полного абсурда, Вы демонстрируете незнание предмета спора, а под конец во всём этом объвиняете меня.
Что ж. Хорошо. Вы мне действительно кое-что доказали:
Я закрываю эту тему.
Отныне и навсегда либо до распоряжения супермодераторов я запрещаю любые дискуссии по поводу превосходства одного языка над другим. Любое подобное заявление и развитие такого спора будет караться как оффтоп.
На этом ставится точка.
Обсуждение в среде модераторов вылились в предложение реконструирования темы. В ближайшее время она будет переработана в смысле "есть мнение" с запретом дискуссий.
Просьба всем защитникам/противникам/флеймерам оформить свои знания в виде конкретных утверждений, желательно с подтверждениями (если это вообще возможно для подобного утверждения).
Повторюсь, что жаркие дискуссии будут запрещены, как и чрезвычайно спорные мнения.
vBulletin® v3.8.0, Copyright ©2000-2025, Jelsoft Enterprises Ltd.