Pull to refresh
64

Programmer

1,4
Rating
105
Subscribers
Send message
Фичу с кортежами небось прикрутили сбоку изолентой :). В C# вроде бы максимальная длина кортежа равна 8, здесь 6…
Догадайтесь почему и откуда такие магические числа.
Что-то все повыкидывали.
Хоть я и не писал на Swift, но тенденция выкидывать общепринятые устоявшиеся за десятилетия и понятные любому программисту конструкции (типа инкремента) ИМХО странная. Это все равно что из математики выкинуть значок квадратного корня, сославшись на то что можно пользоваться возведением в степень 1/2.
Круче всего было бы если бы рефлексию добавили в C++17
На самом деле есть много способов. Один из них не так давно рассматривался на Хабре.
Но самое удивительное — есть способы организации полной рефлексии не только на современном С++, но и на чистом Си, причем времен создания языка (70-х годов!).

Есть способ на boost::preprocessor, который в общем не зависит от того, Си это или С++. Достаточно навороченный способ, требующий большой отдельной статьи.

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

#ifdef GENERATE_REFLECTION
#define ENUM_ITEM(item, data) data, 
#else
#define ENUM_ITEM(item, data) item, 
#endif

Ну а дальше очевидно: везде используется обычное подключение заголовочного файла с перечислением, и только в одном единственном месте (точке инстанцирования, которая должна быть .c или .cpp файлом) предварительно объявляется макрос и создается статический объект рефлексии

#include "my_enum.h"
#define GENERATE_REFLECTION
#include "my_enum.h"
#undef GENERATE_REFLECTION
Интересно, почему дизайн старых устройств кажется таким вкусным, теплым и приятным?
Прикольная картинка) Смех смехом, но я бы предпочел устройство в таком стиле современным однотипным стекляшкам. Обилие периферии и аппаратных возможностей греет мою хакерскую душу))
Отлично! Нестандартная периферия понемногу добавляется в смартфоны, правда пока в единичных случаях и массового распространения это не получило
Вот если бы когда какой-нибудь производитель объединил всю нестандартную периферию в одном устройстве...
Надо же, а я и не знал что по Матрице сняли такой фильм. Уже качаю))
А может быть вы еще что-то подобное знаете?
Да я не сторонник всякой мистики) Но факт любопытный. Добавляет, скажем так, атмосферности, Матрице и всему что с ней связано.
О, Матрица — мой любимый фильм. Спасибо вам, прямо погрузился в старые добрые времена… В свое время сколько было интереснейших дискуссий ...

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

И напоследок, интересный (как минимум) факт: переверните картинку и немного увеличьте:

image
Срок действия паспорта Нео истекает 11 сентября 2001 года
Напомню, фильм вышел в 1999 году.
Пока еще об Иране)
vesti7.ru/news?id=49039
организация называется "Басидж"
К сожалению, система хорошо заморачивает мозги людям. Не далее как вчера по зомбоящику рассказывали, что для построения карьеры там нужно состоять в какой-то "религиозно-патриотической" организации. Так что система самоподдерживающаяся.
Мне гораздо интереснее, можно ли такую систему взломать и как именно… Чтобы с одной стороны — разрушительных последствий для людей, но с другой — чтобы религиозная диктатура (да и религиозность вообще) таки исчезла...
А вот как может виртуальное рабочее место стоить дешевле чем содержание ПК, если для работы на виртуальном рабочем месте все равно нужен физический ПК (который тоже нужно содержать)?
Думаю лучше будет если я попробую подробнее разъяснить свою точку зрения в следующей части.
Здесь да, признаюсь это моя ошибка — я сделал утверждение, которое является скорее моей оригинальной идеей, а не чем-то общепринятым, да еще и не объяснил что это за идея и почему я так считаю. Обязательно это учту.
Такая штука хороша в качестве архитектурного оформления какой-нибудь площади.
И красиво, и эффектно, и пользу приносит
Я вас тоже понял. Конечно, кортеж это тип с определенной точки зрения. И для конечного программиста удобнее рассматривать кортеж именно как тип, обладающий какими-то особенностями — по сравнению например со структурами, которые обладают другими особенностями.
Но я выбрал несколько другую точку зрения, более близкую к внутреннему устройству компилятора, и с этой точки зрения кортеж — скорее "полуфабрикат", заготовка для "полноценного" типа.
Так например, список аргументов функции — это тип? Обычно нет (сама сигнатура функции — тип, но не отдельно список аргументов). Но при этом вполне можно сказать что список аргументов функции — это кортеж. Ну или рассматривать список аргументов функции как самостоятельный тип, что в общем одно и то же.
Из курсива надо бы убрать все «рукописные» буквы, которые слишком сильно отличаются от привычных печатных, и заменить на что-то более адекватное.
На самом деле этих «рукописных» не так уж и много, r, s, f, l (которая безусловно не должна быть просто «палочкой», но у них она слишком похожа на 'e').
Тогда может и ничего будет.
А кстати, что такое «10»? Какого типа? byte, short, word, int, uint, long, float, double?
Иногда у чисел бывают модификаторы, например можно представить что «10i32» — это int32. А без модификаторов? Брать «тип по умолчанию» («int»), как в Си? А правильно ли это?
В действительности правильный подход к литеральным константам такой — они сами по себе на этапе построения синтаксического дерева не полностью типизированы. Типизация происходит позднее, когда выясняется, в каком выражении с какими типами операндов эта константа используется.

Хотя эти вопросы больше касаются дизайна компиляторов, но это не делает их мене интересными. И это открывает дополнительные возможности — такие как архитектурно правильная интеграция в язык программирования «длинной арифметики».
А я пользуюсь какой-то старой (наверное) версией 3.2.1, все работает :)

Information

Rating
1,774-th
Registered
Activity