All streams
Search
Write a publication
Pull to refresh
51
0

Пользователь

Send message

Кстати, std::chrono::system_clock::now().time_since_epoch().count() — очень хороший пример «продуманности» библиотеки chrono.


что тут может быть непонятно?

Непонятно «что значит count() в данном случае?» микросекунды? наносекунды?


вместо того чтобы смотреть собственно в документацию

Покажите, пожалуйста, как найти в документации С++ ответ на этот вопрос? И где эта документация C++ вообще находится?
Серьёзно, я не прикалываюсь. Во времена Microsoft Visual C++ 6.0 в качестве таковой я пользовался установленным с диска MSDN. Сейчас пользуюсь в основном cppreference.com. Но ни то, ни другое официальной документацией C++ не является.


Но вернёмся к нашему примеру.
В «документации» к методу count сказано:
Return value
The number of ticks for this duration.


Ок, количество «тиков».
А теперь попробуйте без компиляции какого-либо C++-кода [а используя только «документацию»] ответить на вопрос: а сколько это будет в секундах?
Причём просьба ответить для различных компиляторов C++ (GCC и MSVC [а количество тиков в секунде у них отличается]) и без использования Google. И ещё прошу подробно описать по шагам процесс поиска ответа на такой простой вопрос. [В Python ответ находится в первом же предложении в документации к функциям time.time() и time.time_ns(), в документации, которая устанавливается вместе с Python и которую не нужно искать в Интернете.]

А где можно позадавать вопросы по языку? Есть какой-то форум или канал? Можно хотя бы включить галочку Discussions в настройках репозитория?

В The Argentum Book приводится такой пример:
predicate(expression()) ? use(_);

Но на практике зачастую требуется нечто другое. Например, в Python 3.8 можно написать так:
if (line := input()) != '':
    use(line)

Что соответствует такой записи в C++17:
if (auto line = input(); line != "")
    use(line);

Как такое сделать в Аргентум [без вспомогательной функции-предиката]?
Язык val.
Это другой язык. :)(:

Сайт проекта тут: www.val-lang.dev
Вот цитата непосредственно оттуда:
Our goals overlap substantially with that of Rust and other commendable efforts, such as Zig or Vale.
Собственно в этой цитате есть ссылка на сайт языка Vale.

[А ещё есть Vala. Это три различных языка программирования! (Val, Vala и Vale)]
Вы что-нибудь слышали про язык программирования Vale?
Разработчик этого языка также обещает «memory safety without a borrow checker, generations, reference counting, or tracing GC», и утверждает, что его подход возможно реализовать в C++.
Какие преимущества у вашего языка по сравнению с подходом Vale?
Вероятность того, что кто-то станет внедрять новый язык минимальна.
Будем программировать на C++ и Python [или каком-то другом популярном сейчас языке] до скончания веков, что-ли? Попробуйте представить, что будет использоваться в IT-сфере через 50-100 лет, если вы не верите в возможность изменений в ближайшие годы/десятилетия.

Данный проект не направлен на быстрый захват аудитории, поэтому не стоит удивляться его низкой популярности [на момент публикации этого сообщения]. Сначала я намерен тщательнейшим образом проработать основы языка (встроенные типы, функции, модули) и наиболее интересные решения оформить в виде статей (вот одна из них). Кроме того, я непрерывно провожу анализ существующих языков программирования, их возможностей, особенностей и их эволюции/развития, при этом порой удаётся найти очень интересные возможности даже в достаточно старых языках (как например в PL/1) [возможности, которых нет в современных популярных языках].

Современные языки программирования имеют свои сильные стороны, но в то же время практически в каждом из языков есть ошибки проектирования или просто неудачные решения [а те языки, в которых их нет, обладают очень ограниченными возможностями]. К тому же, в современные языки добавляют очень много ненужного функционала [т.к. например современный браузер, современный 3D-движок или современную операционную систему вполне возможно написать на C++98 с использованием буквально нескольких возможностей C++11, а ядро Linux вообще целиком написано и до сих пор пишется на Си (и Rust даже не упоминается в списке языков на GitHub-странице проекта)]. И своей задачей я ставлю продумать и разработать такой язык программирования, который будет практически лишён ошибок проектирования и который будет содержать достаточно функционала [и по возможности минимальное его количество] для того, чтобы оставаться актуальным и практичным в очень долгосрочной перспективе.

То есть, в этом случае разделение на слоги будет перед гласной.

Перед гласной, говорите? А как же: дяденька, большой, скользкий?

правильно как раз будет ма-йор, а не май-ор.

А здесь утверждается наоборот.

точка разделения слогов находится перед слиянием (согласная+гласная) следующего слога

Тогда получится отст-ра-нять.
И такое правило не учитывает присутствие в слове твердого или мягкого знаков, а также буквы «й» (подъезд, бульон, майор).

Почему неверно?
У меня разделяет так: а-гент-ство, контр-стра-хо-ва-ни-е.
Вы точно использовали последнюю версию кода (которая в самом конце статьи под P. P. S. внутри спойлера)?

по такой же самой причине, что и от ANTLR

А это по какой причине?
Что "он написан на Java"?
Pratt parser — это не библиотека, а алгоритм/техника синтаксического разбора, описанная Воном Праттом в его статье полувековой давности.


Есть реализации этой техники на Java, JavaScript, C#, Rust, Python, C++, Scheme и наверняка на каких-то других языках.

А вы не рассматривали Pratt parsing?
Эта невероятно простая и гибкая техника используется в синтаксическом анализаторе транспайлера для языка 11l.

Не получилось найти документацию по работе с файлами.

В самом низу этой страницы внутри спойлера "Methods".

Было бы интересно взглянуть на грамматику языка, потому что составить даже беглое мнение о новом языке по одному лишь FAQ труновато.

Что вы имеете в виду под FAQ? Данную статью? Но я ведь привёл ссылку на веб-сайт языка, где есть примеры, документация и ссылки на статьи, чего имхо вполне достаточно для получения представления о данном языке.


Ведь если вызов sum(a) это эквивалент a.sum

Почему вы так решили? В 11l правильно писать только sum(a).


А у вас как?

Также как в C++.


Катаури это та самая из Владивостока, которая писала "King's bounty"?

Да, та самая. :)(:

Это эквивалент функции system()/_wsystem().
Сохранение stdout/stderr в строковую переменную в данный момент не поддерживается, т.к. я не знаю хорошего способа сделать это под Windows (непонятно как реализовать поддержку Unicode).

Можно бы сделать native-версию под Windows на 11l. Как думаете, реально?

Теоретически да, но в данном случае это скорее нецелесообразно.

Как реализовать на 11l выполнение команд терминала Windows (… скажем, echo "1" | ipfs add)?

Вот так:
os:(‘echo "1" | ipfs add’)

Также много вопросов возникает к switch оператору. Нет примеров многострочных кейсов

Самый первый пример на веб-сайте языка содержит двухстрочный кейс: I --nesting_level == 0 ....


Не очень понятно как отличать статичные и глобальные переменные.

Статичные переменные объявляются внутри функций/типов, а глобальные — вне функций/типов. При обращении к ним префикс одинаковый (двоеточие), но в других языках обращение к статичным и глобальным переменным также никак не различается.


Что с модулями? Или пока оно работает исключительно с одним файлом?

Есть пример на Rosetta Code.
Т.е. чтобы вызвать функцию модуля необходимо написать:
<имя_модуля>:<имя_функции>(...)

Обоснование этого решения приводится на форуме:
I think all such functions should be called without parentheses to denote their ultra low cost.
Вместо Bash — запросто.
Можете привести пример Bash-скрипта, который не получается перевести на 11l?
[Можно перевести Bash-скрипт на Python, а затем воспользоваться транспайлером Python → 11l.]

Information

Rating
Does not participate
Location
Владивосток, Приморский край, Россия
Registered
Activity