All streams
Search
Write a publication
Pull to refresh
13
0.8
Алексей Ткаченко @a-tk

Разработчик ПО

Send message
Да, ещё enum забыл.
В D к примеру есть UFCS (Unified Function Call Syntax), который считает эквивалентными код
F(x, a, b, c) и x.F(a, b, c). И есть чёткие правила поиска. Притом работает для любой свободной функции как минимум с одним аргументом.
В C# приходится лапками больше поработать, чтобы сделать такое. C++ половину пути в одну сторону преодолел в виде специализаций шаблонов типа std::swap, а вот в другую сторону путь даже не начинал.
В C# тоже в общем-то. Помнится, был жуткий вой среди разработчиков при введении нового ключевого слова var.
После этого но одно новое средство языка не ломало обратную совместимость в том смысле, что новый компилятор всегда компилировал код, написанный под более старую версию компилятора. Отсюда растут некоторые странные конструкции, такие как pattern matching например.
Например вот этим:
atomic!"+=" (*value, 1)
А ещё const, immutable, in — разные, но так похожи.
То есть рубям можно, а похапэ нельзя? При том, что в PHP синтаксис предполагается более гибкий.
Между прочим, во многих языках не хватает…
Не прошло и полгода, вернулся наконец к этому вопросу.
Вызов TypeDescriptor.Refresh (и любой его перегрузки) не привело к ожидаемому эффекту: кэш со строками сброшен не был. Печаль :(
90% текста можно применить к китайцам столь же успешно. Проверено на собственной шкуре.
Понял свою ошибку, спасибо.
Я немножко другое имел в виду (или не так понял написанное): задача не в том, чтобы захватить несколько блокировок, а в том, чтобы минимизировать управление блокировками там, где это не нужно. Например, группу изменений закатать в транзакцию, сократив количество прыжков в kernel space.
Вдобавок: было бы неплохо ещё иметь семантику для объединения группы обращений к контейнеру в единую транзакцию вроде такой:

execute_around<std::vector<int>> vecc();
auto transaction = vecc.begin_transaction();
for (int i = 0; i < 100; ++i)
{
  vecc->push_back(i);
}

Но это приведёт к разрастанию контейнера и прокси-объекта, либо же к полиморфности прокси.
Комментарий, на который я отвечал, был изменён, поэтому искажается и суть моего комментария. Предлагаю на этом остановиться.
Со временем вышла очень сильная гибридизация… вплоть до JavaScript кода в java.

Эммм… JS разрабатывался изначально как раз как клиентский Java-подобный язык.
Пруф: https://habrahabr.ru/company/livetyping/blog/324196/
Это у меня глюки или кнопка «Download now» как-то очень уж напоминает по боевой раскраске «Donate now»? :-)
Использовать в качестве аргумента за JS необъятную кучу невнятных велофреймворков… Ну не знаю даже…
Действительно ли так хороши фреймворки, которые устаревают к моменту завершения чтения раздела Getting Started в официальной документации?
А ещё файл реестра можно получить при неактивной операционной системе, например, загрузившись с LiveCD или подключив веник к другой машине.
Нелёгкая это работа, правильно фильтрацию ввода написать.
В кэшировании значений строк в недрах WinForms в случае декларативного описания, как выше. Никогда не знаешь, где ещё грабли лежат.
Вопрос не в просто локализации, а в переключении языков на лету.

Information

Rating
1,847-th
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity

Specialization

Software Developer, Software Architect
Lead
From 1,000,000 $
C#
.NET
C++
Git