LINUX.ORG.RU

Bosque - очередной убийца C++ от MS

 


1

4

https://github.com/microsoft/BosqueLanguage

Основные фичи:

  • GC в виде счетчика ссылок, ага
  • immutable
  • нет циклов, только функциональщина
  • дженерики, в том числе variadic
  • sum types/adt
  • синтаксически, смесь C++, Rust, Swift и OCaml, но страшнее
  • optional - часть языка, ака оператор ?
  • рекурсия должна быть явно объявлена через ключевое слово recursive
  • трансплитер написан на typescript и выплёвывает C++ (но это не точно)
  • они ещё используют Z3, но не ясно как именно

Пример:

entity Person {
    field name: String; 
}

function foo(arg?: {f: Int, n?: String} | String | Person): String {
    if(arg == none) {
        return "Blank";
    }
    else {
        return switch(arg) {
            type Record => arg.n ?| "Blank"
            type String => arg
            type Person => arg.name
        };
    }
}

foo()                    //"Blank"
foo(none)                //Type error - none not allowed
foo("Bob")               //Bob
foo(Person@{name="Bob"}) //Bob
foo({f=5})               //"Blank"

foo({f=1, n="Bob"})      //"Bob"
foo({g=1, n="Bob"})      //Type error - Missing f property
★★★★★

Последнее исправление: RazrFalcon (всего исправлений: 8)

Ответ на: комментарий от Siborgium

В том-то и дело.

Никто не запрещает делать так.

Поэтому я и задаю вопрос – чем же Раст столь фатально отличается от С в такую наилучшую сторону, что С (С++) нужно вот прямщас надо бежать хоронить?

Проверки вообще сами по себе редко являются боттлнеком, хотя и такое случается.

Да. Согласен. Но тут вопрос в уместности. Если мы осуществляем проверку везде, где ни попадя, то мы просто тупо тратим ресурсы вычислительной системы. Мелочи, но тратим. По сути, ни на что. Если мы конкретизируем случай и будем проверять выход за границы в особо ответственных местах (например, при реализации какого-либо сетевого протокола, в точке, где потенциально может быть уязвимость), то в стандартной библиотеке уже есть ф-ции вида strn, которыми просто следует пользоваться в данном случае, плюс, свои проверки, зависящие от реализации. Простое правило «чистых рук», если угодно. «Не доверяй никому и проверяй ввод. Всегда.» Не хочется использовать библиотечные ф-ции, можно написать свою реализацию для данного конкретного случая. Но колесо не всегда нужно изобретать заново. =)

Правила-то не хитрые. И вовсе необязательно городить для их использования новый, безопасный(?) язык.

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

Отсюда и уязвимости. Либо by design, либо в реализации. Тут грамм размышлений экономит килограмм работы. Поэтому я для себя аксиому и вывел – дошло дело до дебаггера, значит мы не понимаем как работает этот код. Кто-то, помнится, сказал про С++ что это язык для тех, кто не понимает что компьютер это машина, основанная на состояниях. Получили непонятное состояние… Ну, дальше очевидно. И та же парадигма ФП по идее, позволяет увернуться от непонятных состояний программы за счёт того, что минимизируются влияния разных частей кода, которые есть в программе на исполняемый в данный момент кусок кода.

Особенно, если он (код) писан, как кое-кто оправдывался, вечером и под шум детей.

=) В военном ВУЗе, на абитуре, ещё до сдачи вступительных экзаменов, у нас был проф-психотбор. Недостаточно стрессоустойчивые лица выявлялись сразу и к сдаче вступительных не допускались. =) Мне лично сложно принять оправдания такого рода. Пусть пишут ночью, когда все разойдутся по своим кроватям. =) Ну либо свой дзен отращивают и шлифуют…=)))

anonymous
()

Bosque - очередной убийца C++ от MS

Почему например не: друг, брат, внук, …, а непременно убийца?

anonymous
()
Ответ на: комментарий от anonymous

Да потому. =)))

Почему например не: друг, брат, внук, …, а непременно убийца?

Потому что это не поколение «П», про которое писал Пелевин. Это поколение «М» (маркетинга) и заголовок тут это чисто маркетинговый такой наброс. =))) За столько-то лет безудержного маркетинга, кажется, можно было бы уже и привыкнуть… =)))

anonymous
()
Ответ на: Да потому. =))) от anonymous

За столько-то лет безудержного маркетинга, кажется, можно было бы уже и привыкнуть… =)))

А зачем @RazrFalcon проводить маркентинг чегой-то там?
Или тред - сарказм?

anonymous
()
Ответ на: комментарий от anonymous

А зачем @RazrFalcon проводить маркентинг чегой-то там? Или тред - сарказм?

Название треда это явно маркетинговый наброс. Поколение «М» использует маркетинговые шаблоны даже не отдавая себе отчёта в их использовании. Даже не желая того. Не зря определённая желтизна имеет место быть даже в современной журналистике.

Хотя, в принципе, может быть и сарказм.

anonymous
()
Ответ на: комментарий от anonymous

А зачем @RazrFalcon проводить маркентинг чегой-то там?

Потому, что Флакон – это известный неосилятор Православной Сишки и Католической Плюсишки (Объясните сишную магию ) и пропагандон Раста, «форумный следователь», его хлебом не корми дай только убийц поискать.

Золотое Правило – если видишь ник Флакона, смело умножай его мнение на ноль, если в тексте упоминаются такие ключевые слова, как «Сишка», «C++», «Rust», «Раст», «Mozilla», «Мозилла».

anonymous
()
Ответ на: комментарий от anonymous

Какие алгоритмы надо понимать, чтобы быть «нормальным»?

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

Ты знаешь алгоритм работы printf, когда пишешь программу выводящую «Привет, мир!»?

anonymous
()
Ответ на: комментарий от anonymous

ЛОЛШТА?!? =)))

Ты знаешь алгоритм работы printf, когда пишешь программу выводящую «Привет, мир!»?

ШТАПРАСТИТИ?!? =))) Вам расписать что такое сисколлы и как он (сисколл) в данном случае используется? Осветить вопросы кодогенерации, библиотечных функций, роль линкера и компилятора, плавно потрогать использование ассемблера/дизассемблера…

Простите, но лучше бы этими вещами Вам интересоваться в ВУЗе, либо самостоятельно. Ваше (хочется надеяться) послевузовское образование в круг моих интересов не входит. =)))

Где Вы в алгоритме для printf нашли сложности, я и ума не приложу. =)))

anonymous
()
Ответ на: комментарий от anonymous

Про Флакона и так всё известно. Он же сам мне признавался где-то на форуме что его полгода препод насиловал Сишечкой. От чего он получил психотравму и С не переносит на уровне рефлекса. Известное дело. Тут его только пожалеть можно.

Но это он просто С не пробовал без насилия, а по добровольному согласию. Как известно, от любви до ненависти один шаг. Обратное тоже верно. =)))

anonymous
()
Ответ на: ЛОЛШТА?!? =))) от anonymous

Где Вы в алгоритме для printf нашли сложности, я и ума не приложу.

Ты не виляй хвостом, используя страшные слова, которые сам не понимаешь.

Начни с простого - просто напиши, как работает printf. Вперед!

anonymous
()
Ответ на: комментарий от anonymous

Батенька...

Ты не виляй хвостом, используя страшные слова, которые сам не понимаешь.

Начни с простого - просто напиши, как работает printf. Вперед!

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

Но тут есть проблема. Я прекрасно знаю что с долбо… (ну, Вы меня поняли) спорить не стоит. Ибо они сперва начнут опускать Вас до своего уровня, а потом давить своим мифическим «опытом».

Так что, в качестве завершения дискуссии с Вами лично, я могу только пожелать Вам лично счастливого пути. Дорогу Вы и без меня знаете. Куда Вам нужно добраться. =)))

Точка, пожалуй.

anonymous
()
Ответ на: Батенька... от anonymous

Опять нагенерил набор слов, которые не понимаешь. Ты - генератор бреда. Что там с printf, и кто «нормальный» программист - ты не можешь объяснить уже которое сообщение подряд.

anonymous
()

убийца C++

Почему убийц сишарпа нам презентуют как убийц плюсов?

anonymous
()
Ответ на: комментарий от perl5_guy

Рядовые сотрудники корпорации зла, могут быть хорошими людьми и ДЕЛАТЬ ВЕЩИ для основы.

Не могут. EEE делать могут. Заманивать в walled garden могут. Хороших вещей делать не могут.

Я вот TypeScript уважаю, например.

Ничего, что от типизации там одно название?

Другое дело, что при социализме можно было на порядки больше добра делать, но до этого ещё дожить надо.

Поэтому ты будешь кушать кактус^W язычки от корпораций. Лицемерием красным пахнет, не находишь?

anonymous
()
Ответ на: комментарий от anonymous

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

perl5_guy ★★★★★
()

Bosque - очередной убийца C++ от MS

С++ в таком случае если умрет, то от хохота.

anonymous
()
Ответ на: комментарий от perl5_guy

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

Так и есть.
Остается только добавить к «другом ведро для говна» - полного.

anonymous
()

Тот случай, когда регаешься, чтобы не писать с царём из-под одного аккаунта.

anonymous
()
Ответ на: комментарий от anonymous

А я сишку пробовал. И растишку. Карго удобная штука, а библиотеки растишки вообще отличные. Сишке бы от него всё хорошее перенять, но легаси не отпустит.

anonymous
()
Ответ на: Ну фигня же! от anonymous

это просто вызывающе

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

Наверняка прочитал где-то, что для ФП проще строить матмодели, и моск преобразовал это в «ФП проще для компилятора».

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.