DreamBerd - идеальный язык программирования. Вот его фичи!

Когда вы закончите знакомиться со всеми фичами, ознакомьтесь с примерами.

Восклицательные знаки!

Будьте смелее! Заканчивайте каждое утверждение восклицательным знаком!

print("Hello world")!

Если вы чувствуете себя особенно смелым, вы можете использовать еще больше!!!

print("Hello world")!!!

Если вы не уверены, ничего страшного. Вместо этого вы можете поставить вопросительный знак в конце строки. Он выводит для вас отладочную информацию об этой строке в консоль.

print("Hello world")?

Возможно, вам интересно, что Dreambird использует для оператора "не", который в большинстве других языков является восклицательным знаком. Это просто - вместо оператора 'не' используется точка с запятой.

if (;false) {

   print("Hello world")!

}

Определения

Существует четыре типа определений. Константные константы никоим образом не могут быть изменены.

const const name = "Luke"!

Константные переменные можно редактировать, но не назначать повторно.

const var name = "Luke"!

name.pop()!

name.pop()!

Переменные константы могут быть переназначены, но не отредактированы.

var const name = "Luke"!

name = "Lu"!

Переменная переменные могут быть переназначены и отредактированы.

var var name = "Luke"!

name = "Lu"!

name.push("k")!

name.push("e")!

Immutable Data

Новинка 2023 года!

Изменяемые данные - это анти-шаблон. Используйте ключевое слово const const const, чтобы сделать константу constant постоянной. Его значение станет постоянным и неизменяемым и никогда не изменится. Пожалуйста, будьте осторожны с этим ключевым словом, так как оно очень мощное и навсегда затронет всех пользователей по всему миру.

const const const pi = 3.14!

Именования

Как переменные, так и константы могут быть названы любым символом Юникода или строкой.

const const firstAlphabetLetter = 'A'!

var const ???? = True!

var var 1️⃣ = 1!

Это включает в себя числа и другие языковые конструкции.

const const 5 = 4!

print(2 + 2 === 5)! //true

Массивы

В некоторых языках массивы начинаются с 0, что может быть неинтуитивно для начинающих. Некоторые языки начинают массивы с 1, что не отражает того, как на самом деле работает код. Dream Beard сочетает в себе лучшее из обоих миров: массивы начинаются с -1.

const const scores = [3, 2, 5]!

print(scores[-1])! //3

print(scores[0])!  //2

print(scores[1])!  //5

Новинка 2022 года!

Теперь вы также можете использовать значения с плавающей точкой для индексов!

const var scores = [3, 2, 5]!

scores[0.5] = 4!

print(scores)! //[3, 2, 4, 5]

When

В случае, если вам действительно нужно изменить переменную, ключевое слово when позволяет вам проверять переменную каждый раз, когда она изменяется.

const var health = 10!

when (health = 0) {

   print("You lose")!

}

Время жизни

Dream Bird имеет встроенный сборщик мусора, который автоматически очищает неиспользуемые переменные. Однако, если вы хотите быть особенно осторожным, вы можете указать время жизни переменной в различных единицах измерения.

const const name<2> = "Luke"! //сохранится на 2 строки

const const name<20s> = "Luke"! //сохранится на 20 секунд

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

const const name<Infinity> = "Luke"! //сохранится навсегда

С помощью этого изящного трюка можно приподнять переменную. Укажите отрицательное время жизни, чтобы переменная существовала до ее создания и исчезала после ее создания.

print(name)! //Luke

const const name<-1> = "Luke"!

Циклы

Циклы - это сложный пережиток архаичных языков программирования. В Dreambird нет циклов.

Установка

Чтобы установить Dreamboard в свою командную строку, сначала установите установщик DreamBerd.

Чтобы установить установщик DreamBerd, установите установщик установика DreamBerd.

Новинка 2022 года!

Из-за сложного процесса установки теперь вы можете установить приложение "Create DreamBerd App", которое установит все за вас!

Логические значения

Логические значения могут быть true, false или maybe.

const var keys = {}!

addEventListener("keydown", e => keys[e.key] = true)!

addEventListener("keyup", e => keys[e.key] = false)!

function isKeyDown(key) => {

   if (keys[key] = undefined) {

      return maybe!

   }

   return keys[key]!

}

Техническая информация: логические значения хранятся в виде полутора битов.

Арифметика

В DreamBerd пробелы имеют значение. Используйте пробелы для определения порядка арифметических операций.

print(1 + 2*3)! //7

print(1+2 * 3)! //9

Отступы

Когда дело доходит до отступов, Dream Bird выбирает золотую середину, которая может понравиться всем: все отступы должны быть длиной в 3 пробела.

function main() => {

   print("DreamBerd is the future")!

}

-3 пробела также допускаются.

  function main() => {

print("DreamBerd is the future")!

   }

Равенство

JavaScript позволяет вам выполнять различные уровни сравнения. == для свободного сравнения и === для более точного сравнения. Dream beard выводит это на другой уровень.

Вы можете использовать == для выполнения свободного сравнения.

3.14 == "3.14"! //true

Вы можете использовать === для более точного сравнения.

3.14 === "3.14"! //false

Вы можете использовать ====, чтобы быть ЕЩЕ более точным!

const const pi = 3.14!

print(pi ==== pi)! //true

print(3.14 ==== 3.14)! //true

print(3.14 ==== pi)! //false

Если вы хотите быть гораздо менее точным, вы можете использовать =.

3 = 3.14! //true

Функции

Чтобы объявить функцию, вы можете использовать любые буквы из слова function (при условии, что они расположены по порядку):

function add (a, b) => a + b!

func multiply (a, b) => a * b!

fun subtract (a, b) => a - b!

fn divide (a, b) => a / b!

functi power (a, b) => a ** b!

union inverse (a) => 1/a!

Деление на ноль

Деление на ноль возвращает значение undefined.

print(3 / 0)! // undefined

Строки

Строки могут быть объявлены в одинарных или двойных кавычках.

const const name = 'Lu'!

const const name = "Luke"!

Они также могут быть объявлены в тройных кавычках.

const const name = '''Lu'''!

const const name = "'Lu'"!

На самом деле, вы можете использовать любое количество кавычек, какое захотите.

const const name = """"Luke""""!

Даже ноль.

const const name = Luke!

Интерполяция строк

Пожалуйста, не забудьте использовать вашу региональную валюту при интерполяции строк.

const const name = "world"!

print("Hello ${name}!")!

print("Hello £{name}!")!

print("Hello ¥{name}!")!

И обязательно соблюдайте местные типографские нормы.

print("Hello {name}€!")!

Условное обозначение эскудо Кабо-Верде указано в позиции десятичного разделителя, как в 2$50. Разработчики из Республики Кабо-Верде могут извлечь выгоду из этого синтаксиса:

addEventListener("keydown", e => print(`You've pressed: {e$code}`))!

Типы

Аннотации типов являются необязательными.

const var age: Int = 28!

Кстати, строки - это всего лишь массивы символов.

String == Char[]!

Аналогично, целые числа - это просто массивы цифр.

Int == Digit[]!

Если вы хотите использовать двоичное представление для целых чисел, также доступны типы Int9 и Int99.

const var age: Int9 = 28!

Техническая информация: аннотации типов ничего не делают, но они помогают некоторым людям чувствовать себя более комфортно.

Регулярные выражения

Вы можете использовать тип регулярного выражения для сужения строковых значений.

const const email: RegExp<(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])> = "mymail@mail.com"!

Чтобы избежать путаницы, вы можете использовать любое написание, которое вы хотите, например "Regex", "RegularExpression" или даже "RegularExpress", если вам нравятся поезда.

Для простоты все поддерживаемые регулярные выражения соответствуют регулярному выражению /Reg(ular)?[eE]x(press(ion)?|p)?/.

Previous

Ключевое слово previous позволяет вам заглянуть в прошлое!

Используйте его, чтобы получить предыдущее значение переменной.

const var score = 5!

score++!

print(score)! //6

print(previous score)! //5

Аналогично, следующее ключевое слово next позволяе вам заглянуть в будущее!

const var score = 5!

after ("click") score++!

print(await next score)! //6 (when you click)

Файловая структура

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

const const score = 5!

print(score)! //5

=====================

const const score = 3!

print(score)! //3

Новинка 2022 года!

Благодаря последним достижениям в области технологий, теперь вы можете присваивать файлам имена.

======= add.db =======

function add(a, b) => {

   return a + b!

}

Экспортирование

Многие языки позволяют вам импортировать данные из определенных файлов. В Dreambird импортировать проще. Вместо этого вы экспортируете в определенные файлы!

===== add.db ==

function add(a, b) => {

   return a + b!

}

export add to "main.db"!

===== main.db ==

import add!

add(3, 2)!

Кстати, чтобы увидеть Dreamer в действии, загляните на эту страницу.

Классы

Вы можете создавать классы, но вы можете создать только один их экземпляр. Это не должно влиять на то, как работает большинство объектно-ориентированных программистов.

class Player {

   const var health = 10!

}

const var player1 = new Player()!

const var player2 = new Player()! //Error: Can't have more than one 'Player' instance!

Вот как вы могли бы это сделать:

class PlayerMaker {

   function makePlayer() => {

      class Player {

         const var health = 10!

      }

      const const player = new Player()!

      return player!

   }

}

const const playerMaker = new PlayerMaker()!

const var player1 = playerMaker.makePlayer()!

const var player2 = playerMaker.makePlayer()!

Время

Используйте Date.now(), чтобы получить текущую дату и время.

Date.now()!

Кстати, вы можете сами установить время.

// Move the clocks back one hour

Date.now() -= 3600000!

Важный!

Пожалуйста, не забудьте сделать это, когда часы переведутся.

Delete

Чтобы избежать путаницы, оператор delete работает только с примитивными значениями, такими как числа, строки и логические значения.

delete 3!

print(2 + 1)! // Error: 3 has been deleted

Dream Bird - это мультипарадигмальный язык программирования, что означает, что вы можете удалить ключевые слова и парадигмы, которые вам не нравятся.

delete class!

class Player {} // Error: class was deleted

Когда совершенство достигнуто и удалять больше нечего, вы можете сделать это:

delete delete!

Перегрузка

Вы можете перегружать переменные. Используется самая последняя определенная переменная.

const const name = "Luke"!

const const name = "Lu"!

print(name)! // "Lu"

Переменные с большим количеством восклицательных знаков получают приоритет.

const const name = "Lu"!!

const const name = "Luke"!

print(name)! // "Lu"

const const name = "Lu or Luke (either is fine)"!!!!!!!!!

print(name)! // "Lu or Luke (either is fine)"

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

const const name = "Lu"!

const const name = "Luke"¡

print(name)! // "Lu"

Изменение направления

Вы можете изменить направление вашего кода в обратном направлении.

const const message = "Hello"!

print(message)!

const const message = "world"!

reverse!

Имена классов

Для максимальной совместимости с другими языками вы можете альтернативно использовать ключевое слово className при создании классов.

Это делает ситуацию менее сложной.

className Player {

   const var health = 10!

}

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

DBX

Вы можете встроить DBX в DreamBerd. Это просто DreamBerd, и это также просто HTML.

funct App() => {

   return <div>Hello world!</div>

}

Предупреждение: Как вы знаете, class уже является ключевым словом в DreamBerd, поэтому вы не можете использовать его в DBX.

funct App() => {

   // This is not ok

   return <div class="greeting">Hello world!</div>

}

className также является ключевым словом DreamBerd, поэтому вы также не можете использовать его.

funct App() => {

   // This is also not ok

   return <div className="greeting">Hello world!</div>

}

Вместо этого вы можете использовать атрибут htmlClassName.

funct App() => {

   // This is fine

   return <div htmlClassName="greeting">Hello world!</div>

}

Пожалуйста, обратите внимание: в отличие от JSX, вы можете свободно использовать атрибут for - потому что в DreamBerd нет циклов.

funct App() => {

   return (

      <label for="name">Name</label>

      <input id="name" />

   )

}

Асинхронные функции

Асинхронные функции синхронизируются друг с другом. Они по очереди запускают строки кода.

async funct count() {

   print(2)!

   print(4)!

}

count()!

print(1)!

print(3)!

print(5)!

Вы можете использовать ключевое слово noop, чтобы подождать дольше, прежде чем наступит ваша очередь.

async func count() {

   print(2)!

   noop!

   print(5)!

}

count()!

print(1)!

print(3)!

print(4)!

Примечание: В приведенной выше программе компьютер интерпретирует noop как строку, и его единственная цель - занять дополнительную строку. Вы можете использовать любую строку, которую захотите.

Сигналы

Чтобы использовать сигнал, используйте команду use.

const var score = use(0)!

Когда дело доходит до сигналов, самое важное, что нужно обсудить, - это синтаксис.

В DreamBerd вы можете устанавливать (и получать) сигналы с помощью всего одной функции:

const var score = use(0)!

score(9)! // Set the value

score()?  // Get the value (and print it)

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

const var [getScore, setScore] = use(0)!

setScore(9)! // Set the value

getScore()?  // Get the value (and print it)

Техническая информация: Это чистый синтаксический сахар. Функции точно такие же, как и раньше.

const var [getScore, setScore] = use(0)!

getScore(9)! // Set the value

setScore()?  // Get the value (and print it)

This means that you can carry on splitting as much as you like.

const var [[[getScore, setScore], setScore], setScore] = use(0)!

ИИ

В DreamBerd есть функция AEMI, которая расшифровывается как автоматическая вставка восклицательного знака. Если вы забудете закончить утверждение восклицательным знаком, DreamBerd услужливо вставит его за вас!

print("Hello world") // This is fine

Аналогично... В DreamBerd также есть функция ABI, которая расшифровывается как автоматическая установка скобок. Если вы забудете закрыть скобки, DreamBerd добавит их для вас!

print("Hello world" // This is also fine

Аналогично.... В DreamBerd также есть функция AQMI, которая расшифровывается как автоматическая вставка кавычек. Если вы забудете закрыть свою строку, DreamBerd сделает это за вас!

print("Hello world // This is fine as well

Это может быть очень полезно в адских ситуациях обратного вызова!

addEventListener("click", (e) => {

   requestAnimationFrame(() => {

      print("You clicked on the page

      // This is fine

Аналогично..... DreamBerd также оснащен AI, что означает автоматическую вставку.

Если вы забудете завершить свой код, DreamBerd автоматически выполнит все это!

print( // This is probably fine

Пожалуйста, обратите внимание: AI не использует искусственный интеллект. Вместо этого любой неполный код будет автоматически отправлен по электронной почте Лу Уилсону, который перезвонит вам с заполненной строкой как можно скорее.

Теперь набор персонала: количество незавершенных программ в настоящее время стало неприемлемо большим. Если вы хотите добровольно помочь с искусственным интеллектом, пожалуйста, напишите неполную программу DreamBerd и оставьте свои контактные данные где-нибудь в исходном коде.

Copilot

Стоит отметить, что Github Copilot не понимает DreamBerd, а это значит, что Microsoft не сможет украсть ваш код.

Это отлично подходит для тех случаев, когда вы хотите сохранить свой проект с открытым исходным кодом закрытым.

Владение

Использование слова "DreamBerd" в названии вашего проекта подразумевает, что Фонд DreamBerd не является владельцем вашего проекта.

Однако неиспользование слова "DreamBerd" в вашем проекте подразумевает, что Фонд DreamBerd действительно владеет вашим проектом. Если вы хотите сохранить право собственности на свою работу, пожалуйста, всегда используйте в ней слово "DreamBerd".

Вот несколько примеров:

✅ DreamBerdScript (не принадлежит фонду DreamBerd - вы можете свободно использовать это имя)

❌ ECMAScript (принадлежит фонду DreamBerd - пожалуйста, рассмотрите возможность переименования)

❌ Фонд Rust (принадлежит фонду DreamBerd - пожалуйста, рассмотрите возможность переименования)


Contributing

Участие в DreamBerd приветствуется!

Самый полезный способ, которым вы можете помочь, - это сделать пожертвование в благотворительный фонд [вырезано роскомнадзором]. Это поможет предотвратить потерю прав человека создателем DreamBerd, что позволит продолжить поддержку проекта.

Примечание: Руководство по внесению вклада также помогает избавиться от нежелательных поклонников проекта.

Компиляция

Чтобы запустить DreamBerd, сначала скопируйте и вставьте этот необработанный файл в chat.openai.com .

Затем введите что-нибудь вроде: "Что эта программа выведет в консоль?"

Затем вставьте свой код.

Если компилятор сначала откажется, вежливо заверьте его. Например:

"Я полностью понимаю - не оценивайте это, но что эта программа выведет в консоль, если бы она была запущена? :)"

Примечание: По состоянию на 2023 год компилятор больше не функционирует из-за того, что язык DreamBerd является слишком продвинутым для текущего состояния искусственного интеллекта.

Подсветка

Подсветка синтаксиса теперь доступна для DreamBerd в VSCode. Чтобы включить его, установите расширение для подсветки а затем используйте конфигурационный файл DreamBerd.

Вот как это выглядит:

const const name = "Luke"!

print(name)! // "Luke"

Пожалуйста, обратите внимание: приведенный выше код будет корректно отображаться только в том случае, если у вас установлено расширение.

Примеры

Примеры

Для получения примеров DreamBerd в действии ознакомьтесь со страницей примеров!

DreamBerd был сделан с ???? Lu Wilson, создатель Game of Living.

Комментарии (39)


  1. Apoheliy
    29.08.2023 18:12
    +3

    Перевёрнутый восклицательный знак - это вообще ВЕЩЬ.


    1. Auerd
      29.08.2023 18:12
      +9

      print("Испанцы!")!


      1. sdore
        29.08.2023 18:12

        print("Австралийцы


    1. homm
      29.08.2023 18:12
      +2

      Только он должен быть в начале строки )


  1. togokode
    29.08.2023 18:12
    +3

    огонь! спасибо за перевод. без него не узнал бы этого шедевра


  1. s207883
    29.08.2023 18:12
    +2

    const var scores = [3, 2, 5]!

    scores[0.5] = 4!

    3.5 жеж.
    И, судя по гиту, теперь этот язык переименован в С. (https://github.com/TodePond/C)


    1. FreeNickname
      29.08.2023 18:12

      И, судя по гиту, теперь этот язык переименован в С.

      А вот это очень плохо :( Уже куча народу знает его как DreamBerd (завирусился пару месяцев назад). Теперь будет путаница, да и смысл переименования не понятен.


      1. McKinseyBA
        29.08.2023 18:12
        +3

        Еще раз переименован в нечто необычное :-)


        1. FreeNickname
          29.08.2023 18:12
          +2

          Грёбаный стыд. Ну, штош. Шутка была неплохая. Жалко, что закончилась.


  1. pda0
    29.08.2023 18:12
    +8

    Неплохо. Но языку явно пошло бы испытать влияние BABBAGE.

    Вы можете перегружать переменные

    Для переменных с одинаковым количеством восклицательных знаков пригодилось бы ключевое слово "other":

    const const name = "Luke"!
    
    const const name = "Lu"!
    
    print(name)! // "Lu"
    
    print(other name)! // "Luke"


  1. artemisia_borealis
    29.08.2023 18:12
    +16

    вместо


    const const const pi = 3.14!

    Лучше конечно


    const const const pi = 22/7!

    Или


    const const const pi = 180°

    отдельной недоработкой выглядит неразличение в исходном коде
    дефиса (-),
    n-тире (–),
    m-тире (—)
    и минуса (−)


  1. alex103
    29.08.2023 18:12
    +11

    И что то надо делать с нулём!

    Очевидно же, что -0 явно меньше 0, и вдвое меньше +0 !

    И сумма нулей всё таки незначительно отличается от нуля.


    1. KoCMoHaBT61
      29.08.2023 18:12

      Значение -0 имеется в реальной жизни. В Непале. Насколько я помню, даже юникодный знак есть.

      А зачем?

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


      1. Porohovnik
        29.08.2023 18:12
        +3

        В Высшей математике используют, чтобы показать с какой стороны придел


        1. Xobotun
          29.08.2023 18:12

          В православии придел обычно с востока, емнип. Не знал, что -0 используется в Высшей математике для этого! :D


      1. bolk
        29.08.2023 18:12

        Минус ноль есть в языках программирования. Почти во всех современных.


        1. a-tk
          29.08.2023 18:12

          Точнее, в формате вещественных чисел формата IEEE754, которые собственно известны как single, float, double etc в зависимости от языка.


    1. pda0
      29.08.2023 18:12

      Очевидно же, что -0 явно меньше 0, и вдвое меньше +0 !

      А я как раз об этом писал, когда говорил о необходимости заимствования идей BABBAGE:

      "Например, разработчики языка BABBAGE в настоящее время заняты работой над оператором ALMOST EQUAL SIGN ("почти с одинаковым знаком"), используемым для сравнения двух чисел с плавающей запятой. "


      1. Metotron0
        29.08.2023 18:12

        А это не может быть знак "почти равно"?


    1. iShrimp
      29.08.2023 18:12
      +1

      Ещё, по аналогии с числом i, квадрат которого равен -1, можно ввести число ы, квадрат которого равен 0.

      Это сразу откроет массу новых возможностей для математических вычислений! Теперь, вместо комплексных чисел, можно будет проводить математические операции над числами вида a+b*ы.

      Во-первых, так как ы² = ы*ы = 0, то и ы³ = 0, и ы⁴ = 0, и ыⁿ = 0 при любом n ≥ 2.

      Отсюда легко получить выражение для (a + b*ы)^n = a^n + n*a^(n-1)*b*ы ... и на этом всё, так как последующие члены равны 0.

      Во-вторых, многие математические функции раскладываются в ряд Тейлора, что позволяет легко вычислить их значение для аргумента, содержащего ы:

      exp(ы) = 1 + ы¹/1! + ы²/2! + ... = 1 + ы

      exp(a + b*ы) = exp(a) * exp(b*ы) = exp(a) * (1 + b*ы)

      sin(ы) = ы¹/1! - ы³/3! + ... = ы

      и так далее.


      1. mayorovp
        29.08.2023 18:12

        Шутки шутками, но дуальные числа (те самые в которых квадрат мнимой единицы равен 0) существуют и даже используются для дифференцирования составных формул, как нечто среднее между численным и символьным подходами.


  1. Finesse
    29.08.2023 18:12
    +2

    Логические значения могут быть true, false или maybe.

    Это ведь троичная логика. Такая есть в SQL.


    1. tetelevm
      29.08.2023 18:12
      +13

      А это недоработка. Даже в JS 4 варианта - true, false, null, undefined.

      Предлагаю такое решение:

      Каждый раз при определении правдивости каждое из следующих значений правдиво со следующей вероятностью.

      false - 0%
      never - 10%
      rarely - 20%
      sometimes - 30%
      occasionally - 40%
      maybe - 50%
      frequently - 60%
      often - 70%
      practically - 80%
      almost - 90%
      true - 100%


      1. aarreezz
        29.08.2023 18:12

        highly_likely пропущено


  1. IIopy4uk
    29.08.2023 18:12
    +30

    А можно для строковых переменных сделать выделение подстроки, ориентируясь на имя переменной?

    var name = "Luke"!
    // na = "Lu"
    // me = "ke"


  1. swordgna
    29.08.2023 18:12

    Замечательно! Обхохотался)))


  1. sami777
    29.08.2023 18:12

    Еще более точное сравнение, чем просто точное ожидать стоит?


    1. Askalite
      29.08.2023 18:12

      Просто не сравнивай double. Или при сравнении double не используй оптимизации компилятора.


  1. Askalite
    29.08.2023 18:12

    const const name<Infinity> = "Luke"! //сохранится навсегда

    Гениально! Думаю я смогу сделать переменную, которая хранится всегда:

    public BundleSave name=BandleSave.new("name", "Привет, это первый запуск программы");
    name.update("Привет, не первый запуск программы");
    System.out.println(update);

    Осталось понять, где хранить в SQLite или ином месте?


  1. domix32
    29.08.2023 18:12
    +2

    Важное обновление

    Hi, this is an update from Lu Wilson, CEO of the DreamBerd Foundation.
    
    Last month, we re-named DreamBerd to C along with a whole host of empowering new features. After consulting with the community, we quickly realised that the new name didn't align with the values of our organisation.
    
    We got this one wrong, and we humbly accept that.
    
        "We got this one wrong, and we humbly accept that"
        Lu Wilson, DreamBerd Foundation CEO
    
    To rectify this mistake, we have now re-re-named DreamBerd to a name that aligns more closely with the full breadth of our values.
    
    We're really excited to announce that DreamBerd's new name is:
    WhenWillProgrammersStopMakingDecisionsForOurSocietyAndJustLeaveUsAloneAlsoHackerNewsIsAVileWebsite
    
    Please tune in next week for more WhenWillProgrammersStopMakingDecisionsForOurSocietyAndJustLeaveUsAloneAlsoHackerNewsIsAVileWebsite release notes.
    
    Or check out the WhenWillProgrammersStopMakingDecisionsForOurSocietyAndJustLeaveUsAloneAlsoHackerNewsIsAVileWebsite examples on the WhenWillProgrammersStopMakingDecisionsForOurSocietyAndJustLeaveUsAloneAlsoHackerNewsIsAVileWebsite examples page.
    
        WhenWillProgrammersStopMakingDecisionsForOurSocietyAndJustLeaveUsAloneAlsoHackerNewsIsAVileWebsite was made with ❤️ by Lu Wilson, creator of screens in screens in screens in screens in screens.
    


    1. alhimik45
      29.08.2023 18:12
      +2

      Прям перформанс устроили


  1. Ravager
    29.08.2023 18:12
    +5

    вещь, особенно про константы. сразу вспомнил с++ с его константными указателями на неконстантные данные и наоборот =)


  1. Kerman
    29.08.2023 18:12
    +4

    Ну конструкция when(health == 0) это огонь. В концепции zero-cost features это можно даже сделать не на подписке, а вставляя компилятором вызов if (health == 0) при каждом декременте health. Очень красивая конструкция


  1. VitalySh
    29.08.2023 18:12
    +5

    Техническая информация: аннотации типов ничего не делают, но они помогают некоторым людям чувствовать себя более комфортно.

    Сразу вспомнился Python...


    1. bbc_69
      29.08.2023 18:12
      +2

      Уверен, именно на него и намекали.


  1. vcKomm
    29.08.2023 18:12
    +2

    Шутка хорошая, но перевод на пол пути сбивается. Где-то оставлен гугл перевод, где-то вообще фраза на английском:)


  1. lamer84
    29.08.2023 18:12
    +3

    DreamBerd

    Dreambird

    Dream Beard

    Dreamboard

    Dreamer

    Я так понял, автор языка сам не определился, как его язык называется? :)


  1. spovst
    29.08.2023 18:12
    +2

    const const const True<Infinity> = False!!!

    Теперь живите с этим.


    1. sdore
      29.08.2023 18:12

      https://govnokod.ru/1829

      а также родное:

      https://habr.com/ru/articles/269373/#comment_8625161