Да, производит впечатление некоторой бессистемности. Как будто сначала продумывали язык, а в какой-то момент просто стали добавлять возможности «абы как». Хотя все это и хорошие возможности, но вот не хватает продуманности в мелочах.
Хотя бы свойства (properties) сделали бы для сокращенных операций:)
module d_properties;
import std.stdio;
struct Foo {
int z;
@property bar()
{
writeln("getter");
return z;
}
@property bar(int x)
{
writeln("setter");
z = x;
}
}
int main()
{
Foo foo;
int x = foo.bar; // ok
foo.bar = 10; // ok
foo.bar = foo.bar + 20; // ok
foo.bar += 20; // error: `foo.bar()` is not an lvalue and cannot be modified
getchar();
return 0;
}
А вообще впечатление интересное. Я уже писал здесь что изучаю компилятор с целью создания на базе Ди своего языка программирования. Даже пришлось для этой цели написать систему разметки кода маркерными комментариями.
Код, скажем так, весьма специфический. Глядя на исходники компилятора, лучше всего понимаешь, что сам синтаксис языка нуждается в серьезном редизайне. Причем переписывание авторами исходников с С++ на D лишь причесало некоторые «формальные» стороны, а по сути осталось все то же самое. Backend так вообще родом откуда-то из древности, сейчас так даже на Си не пишут.
А я в Экзистенции просто запутался, не понял что там вообще происходит:) Хотя может это оттого что первый раз смотрел на даче на каком-то древнем телевизоре и с ужасными помехами.
Парадокса тут нет. Левые либералы (к коим я и себя отношу) — такая же политическая сила как и любая другая, состоящая из живых людей, а вовсе не бестелесные ангелы. И разумеется, защищая свои идеи, кто-то может и перегнуть палку. Это никак не связано с политическими взглядами. Политические взгляды — это устройство общества в целом, его ценности и вектора развития.
Поверьте, существуют фашисты (реально по взглядам фашисты), которые в жизни всего боятся и мухи не обидят. Но — сидя на диване, восхищаются диктаторами и мечтают о расстрелах инакомыслящих.
Также существуют и леволибералы, которые могут в пылу политических баталий ударить оппонента:) Ну вот такова жизнь.
Мотивация авторов понятна, но вот реализация… мир гораздо сложнее чем им кажется. Все то что они предлагают — это изолироваться, отгородиться от мира, и это приведет к резко отрицательным последствиям для них же в первую очередь.
Ну я спрашивал не про typescript, а вообще.
А то что void может принимать два значения это уже какой-то нонсенс:) (хотя наверное понятно почему так, но все-же это из разряда языковых курьезов, которые во всех языках программирования бывают)
Интересный вариант!
Хотя мне больше нравится мысль о том, что машины использовали людей не как батарейки, а как мощнейшую нейросеть — т.е. для каких-то неведомых вычислений (возможно в том числе и для обсчета самой Матрицы). Ну и здесь открывается широкий простор для размышлений — а кто на самом деле создал Матрицу и зачем? Может и какая-то часть людей в этом вполне осознанно поучаствовала?
А мне кажется что лучше то что есть — «типа хеппи-энд» (именно «типа») с некоей недосказанностью. Однозначно-депрессивная концовка была бы хуже. Да и почему весь киберпанк должен быть мрачным и депрессивным? Наверное, феноменальный успех Матрицы в том числе обусловлен тем, что это не депрессивный фильм. Да, очень атмосферный, с неповторимой своеобразной эстетикой, но не депрессивный, в нем на эмоциональном уровне нет тупой безысходности. Он открытый и предполагает думать.
Всякая реальность виртуальна, потому что мы воспринимаем не реальный мир, а лишь его проекцию на нейросеть мозга, создаваемую органами чувств и неизбежно искажаемую самим мозгом. Да и что есть реальность? Есть ли она вообще?
Я не знаком с TypeScript, но тема крайне интересная.
Смысл типа never вполне понятен — в некоторых языках есть что-то типа «noreturn» (тип или спецификатор), это используется оптимизаторами.
Но вот непонятно, чем тип never в системе типов и при использовании в качестве параметра шаблонов лучше чем какой нибудь void? Т.е. ясно что это разные вещи, но вот как именно never влияет на шаблонный код?
Передать обработчики я могу и без «алгебраических эффектов»:) Просто передам интерфейс или делегат/указатель на функцию и всё.
Насколько я понял, здесь основная фишка в том, что ничего явно передавать не нужно.
Хочу уточнить, под «алгебраическими эффектами» понимается только концепция передачи управления try-handle-perform-resume, описанная в статье, или это нечто большее? Еще и название «эффекты» подразумевает множественное число…
Вообще идея интересная, хотя и goto-ориентированная (как впрочем и исключения). Произвольный код (возможно, очень большой и сложный чужой код) из своих недр запрашивает нечто (обработчик), о чем программист может не знать и не догадываться, и если этого нет — программа падает. На уровне кода никакой спецификации требуемых обработчиков нет. То есть все скомпилируется, никаких ошибок компиляции не будет — но из-за незнания всех требуемых обработчиков или даже опечатки в одной букве всё падает. В случае скриптовых языков компиляция не предусмотрена, но упадет в любом случае…
ИМХО именно так и должна выглядеть программа. Концепция стандартизированного унифицированного внешнего вида всех элементов UI на данной платформе — это очень хорошая концепция.
Zim и под винду есть. Я частично перешел на zim c evernote, с тех пор как они начали что-то там ограничивать с количеством устройств. Заметки размещены на bitbucket, для синхронизации между компьютерами использую git.
Заметки хранятся в простом текстовом формате — это как раз удобно для синхронизации через git.
Тут нужны одновременно и многомиллионные штрафы для компаний, и многолетние сроки для непосредственных виновных. Вот тогда будет толк. А если по отдельности — то нет, в случае «только штрафы для компаний» у сотрудников останется соблазн сливать данные, «только сроки для исполнителей» — у компаний появится соблази назначать «стрелочников».
В Vivaldi я такой функции не нашел (может плохо искал).
В Firefox нашел, ввел, перезапустил браузер — внешне все работает как и раньше. На каком этапе от меня потребуется вводить мастер-пароль?
Кстати, потенциально эта тема может быть развита до такого: пароль на сам браузер. То есть все куки, закладки и история зашифрованы, и для самого запуска браузера требуется ввод пароля. Поскольку браузер обычно запускается как одна из первых программ после включения компьютера, то это удобно — ввел один раз и спокойно работаешь.
А вообще впечатление интересное. Я уже писал здесь что изучаю компилятор с целью создания на базе Ди своего языка программирования. Даже пришлось для этой цели написать систему разметки кода маркерными комментариями.
Код, скажем так, весьма специфический. Глядя на исходники компилятора, лучше всего понимаешь, что сам синтаксис языка нуждается в серьезном редизайне. Причем переписывание авторами исходников с С++ на D лишь причесало некоторые «формальные» стороны, а по сути осталось все то же самое. Backend так вообще родом откуда-то из древности, сейчас так даже на Си не пишут.
Поверьте, существуют фашисты (реально по взглядам фашисты), которые в жизни всего боятся и мухи не обидят. Но — сидя на диване, восхищаются диктаторами и мечтают о расстрелах инакомыслящих.
Также существуют и леволибералы, которые могут в пылу политических баталий ударить оппонента:) Ну вот такова жизнь.
А то что void может принимать два значения это уже какой-то нонсенс:) (хотя наверное понятно почему так, но все-же это из разряда языковых курьезов, которые во всех языках программирования бывают)
Хотя мне больше нравится мысль о том, что машины использовали людей не как батарейки, а как мощнейшую нейросеть — т.е. для каких-то неведомых вычислений (возможно в том числе и для обсчета самой Матрицы). Ну и здесь открывается широкий простор для размышлений — а кто на самом деле создал Матрицу и зачем? Может и какая-то часть людей в этом вполне осознанно поучаствовала?
Смысл типа never вполне понятен — в некоторых языках есть что-то типа «noreturn» (тип или спецификатор), это используется оптимизаторами.
Но вот непонятно, чем тип never в системе типов и при использовании в качестве параметра шаблонов лучше чем какой нибудь void? Т.е. ясно что это разные вещи, но вот как именно never влияет на шаблонный код?
Насколько я понял, здесь основная фишка в том, что ничего явно передавать не нужно.
Вообще идея интересная, хотя и goto-ориентированная (как впрочем и исключения). Произвольный код (возможно, очень большой и сложный чужой код) из своих недр запрашивает нечто (обработчик), о чем программист может не знать и не догадываться, и если этого нет — программа падает. На уровне кода никакой спецификации требуемых обработчиков нет. То есть все скомпилируется, никаких ошибок компиляции не будет — но из-за незнания всех требуемых обработчиков или даже опечатки в одной букве всё падает. В случае скриптовых языков компиляция не предусмотрена, но упадет в любом случае…
Заметки хранятся в простом текстовом формате — это как раз удобно для синхронизации через git.
В Firefox нашел, ввел, перезапустил браузер — внешне все работает как и раньше. На каком этапе от меня потребуется вводить мастер-пароль?
Кстати, потенциально эта тема может быть развита до такого: пароль на сам браузер. То есть все куки, закладки и история зашифрованы, и для самого запуска браузера требуется ввод пароля. Поскольку браузер обычно запускается как одна из первых программ после включения компьютера, то это удобно — ввел один раз и спокойно работаешь.