Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/254: Рейтинг темы: голосов - 254, средняя оценка - 4.70
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.03.2015, 21:50  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от castorsky Посмотреть сообщение
Не нужно. По привычке написал.
castorsky, кстати, D-шники поняли, что нужно сделать, благодаря вашему коду. Только я забыл удалить одну вашу надпись (теперь меня спрашивают, что это за намёки такие ):
And your point was...? I take it, "poor c++" is a hint.
Don't compare apples to oranges.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
11.03.2015, 21:55
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
теперь меня спрашивают, что это за намёки такие
холивары, сэр.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.03.2015, 22:17  [ТС]
Ну вот. D-шник из Японии, который совмещает D и C++ занял второе место в олимпиадном соревновании (я абсолютно уверен, что D станет олимпиадным языком №1, вытеснив C++ на второе место ):
Codeforces Round #295 (Div. 1)
Миниатюры
D vs C++  
0
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
11.03.2015, 23:09
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Программу написал Ali Çehreli, автор одной из книг по D:
Dennis вы уверены, что это рационально, использовать продвинутых программистов из сообщества dlang.org в холиварах?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
11.03.2015, 23:52
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Программу написал Ali Çehreli, автор одной из книг по D:
Прям 1 в 1. Даже костыль с необходимостью таскать имя класса для передачи в метод бережно перенесён. Правда тип возвращаемого значения в описании сигнатуры не участвует, но не знаю считать это плюсом или минусом. Мне в проекте это было необходимо.

А поиск по строковым литералам через хэш-функцию ведётся, я надеюсь?
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
12.03.2015, 17:00  [ТС]
Цитата Сообщение от XRuZzz Посмотреть сообщение
Dennis вы уверены, что это рационально, использовать продвинутых программистов из сообщества dlang.org в холиварах?
А то. Я же вопросы задаю в разделе для новичков. В другие разделы, где царствует Александреску, я не лезу.
Когда на меня наезжает сишный танкист, я не начинаю копать сапёрной лопаткой окоп. Я беру гранатомёт.
Цитата Сообщение от MrGluck Посмотреть сообщение
Прям 1 в 1.
Конечно, профи писал.
Цитата Сообщение от MrGluck Посмотреть сообщение
Даже костыль с необходимостью таскать имя класса
В D нет этой необходимости (таскать имя класса - вы можете его зарегистрировать):
C++
1
2
3
4
A a = new A;
a.register("first", &foo1);
a.register("second", &foo2);
a.register("third", &foo3);
Цитата Сообщение от MrGluck Посмотреть сообщение
Правда тип возвращаемого значения в описании сигнатуры не участвует, но не знаю считать это плюсом или минусом.
D может возвращать более высокоуровневые типы (например, TypeTuple и т. д.), чем C++. Так что сомневаюсь, что это минус. Если даже и минус, то есть более адекватная замена. К тому же, кто вам мешает определить этот возвращённый тип?
Цитата Сообщение от MrGluck Посмотреть сообщение
А поиск по строковым литералам через хэш-функцию ведётся, я надеюсь?
Ведётся через лямбда-функции. Работает всё это в среднем за O(1), как вы и просили.

MrGluck, как сказал один человек:
D - это как C++, но сделанный людьми для людей, а не марсианами для обезьян.
Собственно, чтобы понять, что такое D, можете немного почитать Александреску. Я уверен, что вам понравится, если не D, то сама книга.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
12.03.2015, 19:58
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Ведётся через лямбда-функци
У меня сложилось твердое убеждение что Вы не понимаете что это значит. Как оперирование лямбда выражениями может ответить на вопрос о хэшах? Это не взаимоисключаемые сущности.
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Don't compare apples to oranges.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
12.03.2015, 20:03  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
У меня сложилось твердое убеждение что Вы не понимаете что это значит.
В этот раз ваше утверждение верно. Я сначала и написал, что не понял, но потом подумал, что MrGluck подразумевал это:
C++
1
2
3
[ "first" : (A a, string b) => a.foo1(b),
"second" : (A a, string b) => a.foo2(b),
"third" : (A a, string b) => a.foo3(b) ];
P.S. Мои слова может подтвердить письмо, которое приходит на почту, если вы подписаны на тему.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
12.03.2015, 20:07
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
В этот раз ваше утверждение верно
Как и все остальные разы xD
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
но потом подумал, что MrGluck подразумевал это
Он имел ввиду алгоритм лексикографического сравнения строк.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
12.03.2015, 20:15  [ТС]

Не по теме:

Цитата Сообщение от castorsky Посмотреть сообщение
Как и все остальные разы xD
Не надо мне лапшу... :D


Цитата Сообщение от castorsky Посмотреть сообщение
Он имел в виду алгоритм лексикографического сравнения строк.
В таком случае я вдвойне не понял сути вопроса. А что MrGluck не понравится, если там будет использоваться другой более быстрый алгоритм для сравнения строк, который не использует строковые литералы?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
12.03.2015, 20:21
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
В таком случае я вдвойне не понял сути вопроса.
это я не то сказал. В общем так: ключ в нашем ассоциативном массиве - строка, следовательно выгодней хранить не саму строку, а ее хэш.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.03.2015, 21:35
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
В D нет этой необходимости (таскать имя класса - вы можете его зарегистрировать):
Второй пример имеет ряд неточностей - вместо методов функции, да и работа ведётся вне класса. А также не используется список инициализации, всё делается по старинке через Ctrl + C, Ctrl + V, что не есть тру.
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
D может возвращать более высокоуровневые типы (например, TypeTuple и т. д.), чем C++.
Это никак не относится к моему замечанию.
Но раз уж на то пошло, в С++11 много работы также сделано для compile-time алгоритмов и проверок (constexpr, шаблоны из type_traits).
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Ведётся через лямбда-функции. Работает всё это в среднем за O(1), как вы и просили.
castorsky уже внятно объяснил что лямбды и хеши это вещи из разных областей. Меня интересует алгоритм поиска по ключу.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
D - это как C++, но сделанный людьми для людей, а не марсианами для обезьян.
Торвальдс красочнее о С++ выражался. На самом деле, говорить можно что угодно, особенно когда вакансий на твой любимый язык нет. Да и смешно это слышать от адептов языка, испытавшего явное влияние С++. Я могу это ещё понять от сишников, лисперов, свифтеров. Но ненавидеть С++ и писать на D ...

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А что MrGluck не понравится, если там будет использоваться другой более быстрый алгоритм для сравнения строк, который не использует строковые литералы?
Мне вобщем-то просто любопытно. Про Lisp я знаю, а вот про организацию хранения строк в качестве ключей ассоциативного массива в D читать лень. Спрашиваю у знающих людей.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
12.03.2015, 23:15  [ТС]
Цитата Сообщение от MrGluck Посмотреть сообщение
Но раз уж на то пошло, в С++11 много работы также сделано для compile-time алгоритмов и проверок (constexpr, шаблоны из type_traits).
В D больше: std.traits, std.typetuple, std.typecons.
Цитата Сообщение от MrGluck Посмотреть сообщение
На самом деле, говорить можно что угодно, особенно когда вакансий на твой любимый язык нет.
Странно, XRuZzz как-то работает.
Цитата Сообщение от MrGluck Посмотреть сообщение
Но ненавидеть С++ и писать на D ...
Да, на это способны только D-шники с "гуру.форума".
Цитата Сообщение от MrGluck Посмотреть сообщение
Мне вобщем-то просто любопытно. Про Lisp я знаю, а вот про организацию хранения строк в качестве ключей ассоциативного массива в D читать лень.
То же самое, что и в C++ (хеши):
Массивы и ассоциативные массивы (которые обычно называют хеш-таблицами, или хешами) - пожалуй, наиболее часто используемые сложные структуры данных за всю историю машинных вычислений, завистливо преследуемые списками языка Лисп. Множество полезных программ не требуют ничего, кроме массива или ассоциативного массива. Так что пришло время посмотреть, как D их реализует.

Не по теме:

Цитата Сообщение от castorsky Посмотреть сообщение
это я не то сказал.
Цитата Сообщение от castorsky Посмотреть сообщение
Как и все остальные разы xD
Пойман на слове. :D


Cool Things about D - Why and how we use it at Facebook
А так в C++ можно?
C++
1
2
3
4
5
6
7
8
9
ulong factorial(uint n) {
    ulong result = 1;
    for (; n > 1; --n) result *= n;
    return result;
}
 
...
auto f1 = factorial(10); // run-time
static f2 = factorial(10); // compile-time
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
13.03.2015, 00:05
О как интересно. Есть какой-то хитрый порядок компилирования? Я имею в виду, чтобы скомпилировать строчку 9, функция factorial уже должна быть скомпилирована и известна компилятору. А если, например, статическая переменная используется в функции foo, то сначала надо компилировать factorial, как-то делать её известной компилятору, и компилировать bar потом. Получается, компилятор должен вычислить порядок компилирования, компилировать в этом порядке, ещё и обогащаясь новыми функциями в процессе. Это прекрасно, почти Common Lisp.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
13.03.2015, 00:15  [ТС]
Цитата Сообщение от helter Посмотреть сообщение
Есть какой-то хитрый порядок компилирования?
В D используется двойная компиляция, подробностей я не помню. Значит, в C++ так делать нельзя?
А вообще про это уже написана целая книга:
Developing with compile time in mind
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
13.03.2015, 00:30
Да это не новости, в принципе. Похоже на очередное проявление десятого правила Гринспена.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
13.03.2015, 00:34  [ТС]
Цитата Сообщение от helter Посмотреть сообщение
Похоже на очередное проявление десятого правила Гринспена.
Что ж программы на CL чистый C не обгоняют по скорости работы?
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
13.03.2015, 01:17
А кто его обгоняет, его никто не обгоняет. Машина любит C!

Если офтопить и болтать попусту (потому что не могу привести конкретных примеров), я бы сказал, что зависит от сложности программы. Если программа по смыслу своему простая (типа базовых юниксовых утилит), её можно решить "в целом" и написать достаточно прямолинейное решение на C. Очевидно, оно будет работать быстрее, чем лисповое. В том числе по причине, о которой ниже.

Если же программа сложная, то что-то придётся велосипедить. Вот эти велосипеды вполне могут дать проигрыш стандартным средствам лиспа, реализованным с большой эффективностью.

На самом деле принципиально трудно привести пример программ, сравнимых по сложности. Лисповые программы по природе гораздо сложнее сишных, потому что лисп (CL) проектировался с приоритетом надёжности. Поэтому да, он может проигрывать C в полтора, два или десять раз по скорости, но зато в нём не бывает утечек памяти или сегфолтов. Если написать настолько же безопасный код на C, ещё вопрос, кто выиграет по скорости. Десятое правило Гринспена говорит, что у лиспа неплохие шансы.

Как написал KolodeznyDiver, бывают лисперы,
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
которые настойчиво всех вокруг убеждают что писать надо на нём, что на нём всё сделано уже давно и заведомо лучше чем на других языках и подобное.
Я с такими не согласен. Например, в CL искаропки плохо поддерживается функциональное программирование. Или, например, на CL плохо получаются маленькие юниксвейные программы. И вряд ли есть смысл использовать его в олимпиадном программировании. Но фичи D как языка, всплывавшие в этой теме, по-моему, все перекрываются CL.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
13.03.2015, 01:36  [ТС]
Цитата Сообщение от helter Посмотреть сообщение
Если же программа сложная, то что-то придётся велосипедить. Вот эти велосипеды вполне могут дать проигрыш стандартным средствам лиспа, реализованным с большой эффективностью.
Хорошо. А почему тогда, например, Windows не написана на CL, а на C/C++ и C# и при этом нормально работает? Почему Windows не переписАли на Lisp'e? Ведь этот язык, по вашему заявлению, создан для big program.
Цитата Сообщение от helter Посмотреть сообщение
Но фичи D как языка, всплывавшие в этой теме, по-моему, все перекрываются CL.
Нет, не перекрываются, потому что тема названа "D vs C++".

P.S. Создайте тему "Common Lisp vs D". Напишите в заголовке темы, что тема создана для яростной и безжалостной борьбы. И мы проверим, "у кого толще и длиннее".
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
13.03.2015, 01:43
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Хорошо. А почему тогда, например, Windows не написана на CL, а на C/C++ и C# и при этом нормально работает? Почему Windows не переписАли на Lisp'e? Ведь этот язык, по вашему заявлению, создан для big program.
Потому что лисп — добро, а Windows — зло!

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
P.S. Создайте тему "Common Lisp vs D". Напишите в заголовке темы, что тема создана для яростной и безжалостной борьбы. И мы проверим, "у кого толще и длиннее".
Может, создам... Мне б вашу энергию, а то я ленивый, только и хватает время от времени вставить что-нибудь необязывающее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Закрытая тема Создать тему
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru