Форум программистов, компьютерный форум, киберфорум
Проекты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,849
Записей в блоге: 14

C↑ᶜC. Дерево нового потомка BCPL засияло ярко-голубыми цветами

05.10.2019, 20:41. Показов 2405. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сегодня, 5 октября 2019 года - великий день! Наконец перечислены все текущие, будущие, устаревшие и зарезервированные конструкции C↑ᶜC, о которых я в настоящее время имею хоть какое-то понятие, включая пространства имен, операторы и неявные преобразования. Когда-то давно, я помню, я писал, что были посеяны семена дерева C↑ᶜC. Потом эти семена раскрылись, взошли, появились первые ростки, затем - листья, бутоны и, наконец - цветы! Слово "голубые" присутствует в названии темы не случайно. Для начала, голубой - цвет магии, а она очень пригодится дереву, так как над ним нависла железная крыша - синтаксический анализатор, а дерево, хоть уже и цветет, но еще очень маленькое и хрупкое, и без магии ему железную крышу не пробить. Кроме того, в какой-то книге, я помню, я читал, что цвет зарождения жизни и начала чего-либо нового - именно голубой, а именно из цветов, а не, например, из листьев, зарождаются плоды, поэтому "голубые цветы" можно считать аллегорией, замкнутой сама на себя. Наконец, голубой - цвет Венеры, то есть вселенской любви и красоты. При всем этом голубой - незаслуженно обиженный цвет, который часто путают со светло-синим - я даже видел на упаковке красок инструкцию, что чтобы получить голубой цвет, надо смешать синий с белым. Ну ладно, напишу без лирики - я завершил список конструкций C↑ᶜC и готов приступить к самому сложному - СИНТАКСИЧЕСКОМУ АНАЛИЗАТОРУ!
Считаю, что настоящая тема достойна находиться в разделе по C#, так как C↑ᶜC - прямое продолжение C#, так как разработка языка Cω была свернута. И плохая новость: преимущество C↑ᶜC перед C# в отношении оператора .. больше не является преимуществом - Microsoft опередила меня в этом отношении. Если еще через пару лет эти индусы создадут аналог Юноны - C↑ᶜC можно будет сворачивать, так как он одинаково не будет иметь никакого смысла. Но это ЕСЛИ, а пока что язык активно разрабатывается.
К слову, о Юноне. А ей и так несладко. Она уже была разрушена и фактически не жива. Господин Usaga был прав - революционная "фича" в виде Юноны не оказалась ничем, кроме незнания языка и попытки переизобрести неизвестные мне вещи. Хоть я и не знаю, что означает само слово "фича". Как бы там не было, "нумерующее отображение" оказалось полностью эквивалентным по смыслу хеш-таблице, которая, скорее всего, и используется в методе Join. Если бы в C# была типизированная хеш-таблица, в нумерующем отображении не было бы смысла. И в C↑ᶜC это именно так. Так что, может быть, на две или три недели Юнона рухнула. А потом, как феникс, переродилась в совершенно новом виде - превратилась в унарный оператор и стала эту самую хеш-таблицу и создавать. Теперь такой код:
Code
1
2
3
var a = ⚵list;
...
return other_list[a[x]];
- эквивалентен такому:
C#
1
2
3
4
5
6
7
8
9
10
11
var a = new Hashtable();
for (int i = 0; i < list.Count; i++)
{
    if (a.Contains(list[i]) == false)
    {
        a.Add(list[i], i);
    }
}
...
var index = (int)a[x];
return other_list[index];
Не правда ли, первый короче и читабельнее? Добавлю, что если list имеет тип list() T, то ⚵list - тип HashTable[T, int]. А также, что Linq в создании такой хеш-таблицы в C# не поможет, так как метод ToDictionary создает словарь, реализующий типизированный интерфейс IDictionary, а один из конструкторов хеш-таблицы требует нетипизированного.
И не факт, что Юнона не умрет во второй раз, теперь уже действительно навсегда.

Недавно читал одну статью на просторах Интернета, и там шла речь о высокоуровневых языках программирования. И автор поднял тему индексации - с какого числа начинать отсчет элементов в коллекции. И его там поносили как не знаю кого. Кто знает, действительно ли эта тема - одна из "священных коров" программирования? Понимаю, что это привычно и т. д. Но подумайте сами, кого лучше переучить - один раз тех, кому "привычно", а возможно, и ноль раз, так как новые языки программирования не отменяют старых, пусть старые деды доработают на "привычных" им языках, или постоянно всю молодежь в школах и университетах? Думаю, первый вариант несоизмеримо лучше. А что касается технической стороны этого вопроса - мы живем в век оптимизирующих компиляторов, и сделать при компиляции поправку на -1 - элементарная задача, да и по времени на фоне серьезных оптимизаций это даже не почувствуется. Так почему же мы в конце второго десятка XXI века все еще индексируем с нуля? Совпадение или нет (а я думаю, что нет), но я решил для себя, что в C↑ᶜC все коллекции, кроме массива, будут индексироваться с единицы, задолго до того, как прочитал эту статью. Думаю, что я с этой идеей не одинок во Вселенной. А что думают об этом господа читающие эти строки?

Информация о C↑ᶜC все больше систематизируется, что также в явном виде свидетельствует о прогрессе. На момент написания настоящих строк уже готова сравнительная таблица C# и C↑ᶜC, в которой различия представлены в наглядном табличном виде. Как видно, большинство описаний в C# короче, но по смыслу в C↑ᶜC - лучше. Прошу оценить, правду ли я пишу.
Вложения
Тип файла: docx Сравнение C# и C↑ᶜC.docx (22.7 Кб, 16 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.10.2019, 20:41
Ответы с готовыми решениями:

Старое и новое о C↑ᶜC. На дереве нового потомка BCPL завязались плоды
И снова всем привет! Развитие C↑ᶜC продолжается. Странное, конечно, это дерево - цветы на нем расцветают в октябре, плоды завязываются в...

[Воздушные замки] C↑ᶜC. Посеяны семена нового потомка BCPL
Дисклеймер: в этой теме я ничего не обещаю. &quot;Посеяны семена&quot; - еще не значит, что вырастет большое дерево. Вы можете ругать (думаю, ничего...

C# и C↑ᶜC. Реальность и планы
В этой теме сообщается о возможностях языков программирования C# и C↑ᶜC, которые уже реализованы и которые я планирую реализовать во втором...

23
Эксперт .NET
 Аватар для Usaga
14789 / 9562 / 1367
Регистрация: 21.01.2016
Сообщений: 36,057
28.10.2019, 12:09
Студворк — интернет-сервис помощи студентам
Etyuhibosecyu, автор не должен словами "Тема актуальна" поднимать темы. Это шум и за это на отдельных ресурсах даже наказывают.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,849
Записей в блоге: 14
28.10.2019, 12:25  [ТС]
Цитата Сообщение от Toros1992 Посмотреть сообщение
Это применение бинарного оператора xor два раза последовательно. Он не тернарный в данном случае. И если вы напишите n операторов - N-арным он не станет.
Да, записывается он, как бинарный. А как иначе вы предложите записывать? В виде функции? Но действует он, как N-арный.
Цитата Сообщение от Toros1992 Посмотреть сообщение
То, что вы назвали это "побочным эффектом" - безосновательно. Это полноценный XOR.
Несмотря на то, что в C# выражение и условие объединены, существуют межъязыковые стандарты разделения этих понятий. Например, числа, строки, +, %, &, | - это операторы выражений. А ==, >=, &&, || - это операторы условий. Чтобы преобразовать условие в выражение, принято вне зависимости от языка записывать его отличающимся способом, но так, чтобы не нарушить правила языка. Но сам способ у разных программистов может немного отличаться. Я, например, использую как выражение условие в скобках: bool a = (n == 5);. Самый распространенный способ преобразовать (логическое) выражение в условие - конструкция == true. ^ стоит в одном ряду с & и | - это оператор выражения. Поэтому, чтобы использовать его как xor между условиями, нужно сначала преобразовать их в выражения, а затем преобразовать результат в условие. Кроме того, он имеет более низкий приоритет, чем ==. Поэтому конструкция будет такой: if (((a1 == a2) ^ (b1 == b2)) == true). Как вы думаете, господин Toros1992, этот код читабельный?
P. S. Если вы всю жизнь писали a = n == 5; и if (a1 == a2 & b1 == b2), мне вас жаль. Общество не поймет...
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,762
Записей в блоге: 2
28.10.2019, 13:27
Etyuhibosecyu,
Этот код
C#
1
if (((a1 == a2) ^ (b1 == b2)) == true)
Полностью эквивалентен этому:
C#
1
if (a1 == a2 ^ b1 == b2)
Можете проверить. Вы намеренно ухудшаете конструкции языка C#, видимо чтобы на их фоне хоть как то казались выгодными конструкции Вашего творения.
Более того, запись == true не имеет никакого смысла. Это все равно, что писать += 0 Эти операции идемпотентны. Они никак не влияют на результат.
И хотелось бы увидеть, что легло в основу Ваших рассуждений об условиях и выражениях? условие - это выражение, результат вычисления которого является логическим типом данных. Если что-либо дает в результате bool - это может быть условием. И не зачем это "что-то" еще раз сравнивать с true
0
Эксперт .NET
 Аватар для Usaga
14789 / 9562 / 1367
Регистрация: 21.01.2016
Сообщений: 36,057
29.10.2019, 12:33
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Например, числа, строки, +, %, &, | - это операторы выражений.
Числа и строки - операнды, а не операторы.

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
А ==, >=, &&, || - это операторы условий.
Что, правда что ли? А может быть, всё таки, условие основывается на выражении, нет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.10.2019, 12:33

Создание квадродеревьев (дерево, в котором у каждого внутреннего узла ровно 4 потомка)
Добрый день! Мне показался интересным вопрос создании квадродеревьев ( дерево, в котором у каждого внутреннего узла ровно 4 потомка ). Но к...

Вызов специфических для потомка функций, не зная класса потомка
Доброго времени суток. Когда-то давно делал работу в C#, а сейчас захотел повторить то же в C++. Затык вот в чем. был у меня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru