|
Модераторы: LSD |
|
kolesnle |
|
|||
Упертый сишник Профиль Группа: Участник Сообщений: 93 Регистрация: 22.3.2013 Репутация: нет Всего: нет |
||||
|
||||
Beltar |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
И как же я без этого жил-то...
Не вижу ни одного сообщения компилятора относящегося к выражению. Что и неудивительно, т. к. какие там у Free Pascal'я глюки я не знаю, а вот в Delphi
Нормально компилируется. Минут 5 вдумчивого топтания батонов и вот вам набросок связного списка (Болт на утечки), по крайней мере, именно такая идея для такого шаблона первой пришла в голову. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. (с) я, хотя может и нет Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||||
|
|||||||
Beltar |
|
|||
Опытный Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Мы вроде не о решетке говорим. По поводу функций, как констант, понимаешь в чем проблема, можно представить себе использование констант вида a+b и задавать этим, например, размер массива, или что-то в этом духе, но нет никакого смысла подсчитывать на этапе компиляции сверхсложное выражение, на худой конец, посчитай один раз при инициализации программы, да конечно, это лишняя работа в рун-тайм, вот только размер этой лишней работы рассыпается в пыль. Т. е. добавляется фича, которая нужна раз в 100 лет (хотя можно было бы и в Паскале без изменения синтаксиса вообще прикрутить использование стандартных функций для инициализации констант, но никто бы этого не заметил), и прибавки от нее на копейку, при этом сделать те же нормальные строки от которых пользы на миллион, или вменяемую модульность хотя бы на уровне паскалевских юнитов, вместо убогого механизма инклюдов, который, кстати, в Паскале тоже есть, но применяется весьма ограниченно, все никак не соберутся. Так куда идет C++? В сторону наращивания фич для over 9000 частных случаев. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. (с) я, хотя может и нет Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
kolesnle |
|
|||
Упертый сишник Профиль Группа: Участник Сообщений: 93 Регистрация: 22.3.2013 Репутация: нет Всего: нет |
Добавили только позарез нужное. Не думаю, что в дальнейшем будут что-то добавлять из ключевых слов/синтаксиса. Только библиотеку будут совершенствовать. Чем тебя не устраивают инклюды? Они лучше паскалевских юнитов |
|||
|
||||
Akella |
|
||||
Творец Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 1 Всего: 329 |
ну 4 года назад были недоделаны, да, когда их внедряли ну теперь-то всё ок Добавлено через 9 минут и 42 секунды
Там речь идёт о Pascal (fpc) (fpc 2.6.2) это freePascal (Lazarus) Кстати, на Lazarus можно писать кросплатформенные приложения. Современный Delphi и Lazarus похожи, очень. Но есть всё равно различия. И некоторые разработчики компонент выпускают версии и для Lazarus в том числе. |
||||
|
|||||
Akella |
|
|||
Творец Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 1 Всего: 329 |
Что это за .... зачем оно такое? Delphi - это крисвый, изящный язык программирования. Легко читаемый. Даже если есть, то для чего такое, что оно даёт, какие приимущества? |
|||
|
||||
Beltar |
|
||||
Опытный Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Механизм инклюдов не предполагает никакого контроля видимости и повторного использования кроме набрасывания дефайнов. Про взаимную видимость, которая есть в Delphi, если модули прописывать в секции implamentation я уж молчу. Кроме того, юнит, это не просто кусок текста, это строго отформатированный элемент компиляции со списком экспорта. Или ты думаешь, что в Борланд такие дураки были, что ввели юниты в BP 4, когда инклюды, как самый примитивный способ реализации многофайловых исходников уже давно были? Кстати, как инклюдами предполагается разруливать ситуацию, когда в них есть одноименные идентификаторы? В юнитах коллизия разрешается явно, последний перечисленный юнит имеет приоритет, при обращении без спецификации юнита. А еще в юнитах есть такие интересные секции, как initialization и finalization, ну и четкое разделение, что на экспорт, а что внутреннее, т. е. юнит даже в обычном Паскале обеспечивал работу, похожую на ООП.
Возможность сэкономить одну микросекунду при запуске посчитав какую-то хрень при компиляции. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. (с) я, хотя может и нет Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||
|
|||||
k0rvin |
|
||||
Опытный Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Вообще слова Map/Dictionary в названиях классов намекают на ассоциативные массивы. Ну да ладно, похоже пофиксили. Как будто делфийские дженерики сильно отличаются от шарповых.
Уменьшение нагрузки на рантайм, при этом никакого изменения кода, кроме добавления constexpr не нужно. Собственно в том же ФП это называется "ссылочная прозрачность". В будущем было бы неплохо научить компилятор плюсов определять чистые функции автоматически и соответственно лучше оптимизировать код. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
Akella |
|
|||
Творец Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 1 Всего: 329 |
Нагрузка на рантайм в этом случае, мне кажется минимальна если будет написано по другому, без этого кода. Её вообще не будет, мне кажется.
Добавлено @ 13:11 В любом случае, компилятор Delphi при сборке аппликации способен упростить выражение до константы. Но делать то, что умеет компилятор в ущерб читаемости, не камильфо. |
|||
|
||||
k0rvin |
|
|||
Опытный Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Добавление слова constexpr перед определением функции -- это ущерб читабельности? o_O' -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
Akella |
|
|||
Творец Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 1 Всего: 329 |
я в общем про тот код
|
|||
|
||||
k0rvin |
|
|||
Опытный Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Он не имеет отношения к обсуждаемой фиче. Вот то же самое на паскале:
-------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
Beltar |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Я не знаю на что намекают названия классов, а вот структура данных, которая содержит ссылку на объект своего собственнного типа намекает как раз на связный список. Для ассоциативных массивов (оказывается такая очевида штука, как массив из структур с полем идентификатором даже название крутое имеет. ) в Delphi есть заготовки вида TDictionary<string, string>.
Кстааати, C# does not support explicit specialization; that is, a custom implementation of a template for a specific type. В твоем примере, который в FPC не компилировался, как раз и создается класс наследник под 2 заданных типа. Если это не custom implementation of a template for a specific type, то что это? procedure Proc<T>(A: T); overload; procedure Proc(A: String); overload; Это что? Если вспомнить об утиной типизации, то вполне плавает, крякает и от утки не отличимо. Собственно хелп Delphi по этому поводу так и говорит:
И в общем-то правильно, нефиг вводить всякую фигню, когда в языке уже давно есть способ решения проблемы типа перегрузка функций и RTTI. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. (с) я, хотя может и нет Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||||
|
|||||||
Akella |
|
||||
Творец Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 1 Всего: 329 |
так это другое дело |
||||
|
|||||
k0rvin |
|
||||
Опытный Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Нет, рекурсивных структур данных полно и без связных списков, те же деревья в частности в данном случае. О, да ты любитель рантайм-кастов, значит. Это одно и то же.
[DCC Error] Unit1.pas(22): E2530 Type parameters not allowed on global procedure or function -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
Правила ведения Религиозных войн | |
|
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. |