![]() |
|
Модераторы: LSD |
![]()
|
|
||
|
|
| k0rvin |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
ты и не задавал такой вопрос Добавлено @ 12:10
никакого. давай так: какое отношение С++ имеет к моему посту, в котором я привёл пример языков с хорошо реализованным выводом типов? Это сообщение отредактировал(а) k0rvin - 15.5.2010, 12:12 -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||
|
|||||||
| Vasay |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 2 Всего: 73 |
Вы невнимательны: http://forum.vingrad.ru/index.php?showtopi...t&p=2153052
Причем, вдвойне: -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
||||
|
|||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 1 Всего: 39 |
k0rvin, кончай вилять. Или ответь уже кому-нибудь по существу, или сливайся.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| k0rvin |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
еще как внимателен: здесь только "где?": http://forum.vingrad.ru/index.php?showtopi...t&p=2153073 ни слова про С++: http://forum.vingrad.ru/index.php?showtopi...t&p=2153052 Добавлено через 37 секунд
никто по существу ничего спросить не может -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||||
|
|||||||||
| Vasay |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 2 Всего: 73 |
k0rvin,
Может хватит, а? Тебе дали конкретные ссылки на посты, где задан вопрос (на который тебе, похоже, нечего ответить) и упомянут с++0х в котором присутствует вывод типов. -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
| k0rvin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
может хватит в меня тыкать С++-ом? хотите обсуждать С++ -- обсуждайте, мне он не интересен. всё моё обсуждение С++ началось и закончилось этой фразой: "С++ понятное дело ###, поэтому в нем даже вывод типов нормальный не смогли сделать. " чем удобно? например отсутствием необходимости описывать никому неинтересные типы локальных переменных, нагромождать код этими описаниями. Добавлено @ 12:34
там присутствует костыль, а не вывод типов. у С++ слишком слабая система типов, чтобы на ней сделать нормальный вывод. Это сообщение отредактировал(а) k0rvin - 15.5.2010, 12:46 -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
| Vasay |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 2 Всего: 73 |
И как следствие ухудшить читаемость кода, остаться без подсказок IDE по методам, вывода ***doc-ов, а так же лишиться проверки кода на стадии написания. Не высокая ли цена? Это сообщение отредактировал(а) Vasay - 15.5.2010, 12:53 -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
djamshud, Vasay,
вы на С++ boost.bind, boost.lambda, boost.spirit видели? первые 2 - костыли, а вот спирит не костыль если нет, то вам "повезло", вы не юзаете ту часть С++, которую юзает большинство С++ программистов, и вам auto и decltype в C++0x не надо. а всем остальным - надо. Добавлено @ 12:57 В: чем это удобно О: тем что тип может быть слишком длинным чтобы его написать, или неизвестным вообще, или unspecified (может поменяться в дальнейшем) Это сообщение отредактировал(а) GoldFinch - 15.5.2010, 13:04 |
|||
|
||||
| k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
в каком месте это ухудшит читаемость кода? куда денутся подсказки? куда денется вывод ***doc-ов? и куда денется проверка кода? и главное: почему это все должно куда-то деться? Это сообщение отредактировал(а) k0rvin - 15.5.2010, 13:05 -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
| Vasay |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 2 Всего: 73 |
GoldFinch,
Честно - не видел, да и С++ последний раз видел много лет тому назад. Но если бы Вы привели пример - был бы благодарен.
Для решения этой проблемы существует система пакетов и хорошие IDE.
Есть такое дело, однако я не уверен что "Вывод типов" - самое красивое решение данной ситуации.
ИМХО - подобного лучше стараться избегать. -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
||||||||
|
|||||||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Vasay,
вот это пример типа который 1) длиный 2) неизвестный (чтобы его узнать мне пришлось сгенерить ошибку компиляции) 3) в boost.bind типы возвращаемые boost::bind() не указаны, они могут поменяться в следующей версии библиотеки |
|||
|
||||
| Любитель |
|
||||||||||||||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Ну, поехали...
AFAIK, в какой-то там яве (7-ой?) обещали/предлагали что-то такое:
Это немного наизнанку по сравнению с классическим подходом, но цель-то такая же. Избежать дублирования информации. Это одна из задач, решаемых выводом типов.
Ухудшения читаемости? Ну, классический пример:
Что читаемей? Тут, как всегда. Мы ведь уже знает тип, раз присваиваем данные этого типа. И, классическая фраза - "если и мы, и компилятор это знаем, зачем это говорить лишний раз?". Можно, конечно, сказать, что знаем не всегда:
Ну.. Что сказать? Во-первых, не всегда приемлем вывод типов. Но.. вот в конкретно данном случае - это зачастую повод подумать. Вполне может, что нам достаточно было бы возвращать из метода объект класса Base (всмысле декларировать метод, как возвращающий Base). Далее. Время компиляции. На самом деле, компилятору всё равно необходимо понять какого типа выражение, поэтому увидев var/auto/etc. ему не проблема считать, что у переменной именно этот тип.
Средства абстракции не есть костыли Тут дело в другом. То, что type inference исторически появился в "функциональщине" - это.. просто исторически. По-моему, полезность каких-нибудь лямбд (если это не требует синтаксического насилия) уже никому не приходится доказывать?
Ну.. Я не буду утверждать за С++, там всегда всё было плохо с ИДЕ, но шарпу и студии var ни капли не вредит. F12 по var переходит к определению нужного типа, автокомплит работает и т. д. Короче - всё отлично с ИДЕ Добавлено @ 13:30
Когда говорят про "длинные типы" обычно имеют ввиду всякие темлпейты/дженерики. На самом деле, без вывода типов решение есть только в С++ (из мейнстримных языков) - это typedef. Есть using type = ... в шарпе, но это действует только в пределах одного файла. Ты слишком строг! Это сообщение отредактировал(а) Любитель - 15.5.2010, 14:54 |
||||||||||||||
|
|||||||||||||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 1 Всего: 39 |
GoldFinch, видел. Спирит - хоть и не костыль по сути, но наглядная демонстрация того, что делать с шаблонами не нужно. Парсеры пишутся намного проще без этой поделки. Про крайне сложную отладку и анализ ошибок спирита, думаю, говорить нет необходимости.
>длиный Да, бывает неприятно, но при "нормальном" для меня кодировании проблема сводится на нет typedef-ами и макросами. >неизвестный (чтобы его узнать мне пришлось сгенерить ошибку компиляции) Скажите спасибо используемой библиотеке костылей, палок и веревок. >в boost.bind типы возвращаемые boost::bind() не указаны, они могут поменяться в следующей версии библиотеки См. предыдущий пункт. -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
К слову о мнимых проблемах в ИДЕ. Вот мы пишем какой-нить экспрешен (скажем, вызов метода) и ставим точку. Неужели при этом мы не увидим списка мемберов?! Но ведь мы не говорили (в данной строке) о типе выражения? Сделать тривиальный парсинг в рантайме современные ИДЕ просто обязаны. Вон для скриптовых языков пытаются сделать нормальную работу с ИДЕ (скажем, в той же студии недавно оч хвалились, что JS-ный эдитор теперь имеет виртуальную машину, чтоб заметить динамически добавляемые поля), а мы тут боимся за мирный вывод типов..
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
djamshud, твоя позиция понятна, но если ты не используешь полностью ни язык ни библиотеки, то что ты забыл в этой теме?
Так кто угодно может сказать "*** не нужно, потому что это плохо, потому что мне это не нужно, потому что я это не юзаю". То что ты говоришь "поделки", "костыли, палки и веревки" - так это говорит только о том, что ты не знаешь языка, не понимаешь как он работает и как им пользоваться. Да язык сложный, библиотеки сложные, но если не можешь с этим разобраться - то зачем это ругать? А те кто разобрались - те юзают и радуются %) |
|||
|
||||
![]()
|
| Правила ведения Религиозных войн | |
|
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Религиозные войны | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |