Новости


Ответить в тред Ответить в тред

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
75 6 37

Язык Bosque — новый язык программирования от Microsoft который никому ненужен Аноним 22/04/19 Пнд 15:42:14 50009171
3
4

02dtzf10gvz9fds[...].png (28Кб, 542x245)
542x245
Буквально несколько дней назад компания Microsoft представила публике новый язык программирования. Языку дали название Bosque. Главная миссия дизайна языка — лучше быть богатым и здоровым, чем бедным и больным чтобы он был прост и понятен как для человека, так и для компьютера.

Информации пока что очень мало, язык еще очень свежий и нестабильный. Есть лишь paper от Марка Марона и дока в начальной стадии написания.

Давайте попробуем рассмотреть некоторые особенности языка.

1) Все значения в Bosque являются неизменяемыми (immutable), чтобы каждый блок кода не содержал никаких сайд-эффектов. По мнению авторов языка это полезно как для человека, так и для компьютера.

При этом, как ни странно, чуть далее по тексту рассказывается, что можно объявить изменяемую переменную ключевым словом var!. И это не просто сахар для более удобной инициализации иммутабельной переменной, это действительно настоящая переменная.

Ладно, допустим, это некий компромисс, и в локальном скоупе так сделали. Но дальше идет упоминание о еще не реализованной фиче языка — передаче аргументов функции по ссылке

function internString(ref env: Map<String, Int>, str: String): Int {
if(env.has(str)) { //use the ref parameter
return env.get(str);
}

env = env.add(str, env.size()); //update the ref parameter
return env.size();
}


Может я чего-то не понимаю, но странная какая-то иммутабельность в языке, если мы можем передать Map по ссылке, и фунция ее намутирует.

2) В языке нет циклов for, while и т.д. Вообще никаких нет. Вместо этого есть коллекции и пайплайны. Другими словами, вместо циклов нужно использовать более высокоуровневые штуки типа map, filter и т.д.

3) Строки можно делать разных типов. Т.е., например, можно сделать строку-имя или строку-zipcode, и для type-чекера это будут две разные строки. Если вы в аргументе функции ожидаете zipcode, а вам по ошибке туда пихают имя, то компилятор это не проглотит. Синтаксис такой: String[Zipcode].

Тоже сомнительная штука, почему не просто ZipCode. Один раз объявить, что ZipCode — это строка и везде в сигнатурах это писать. И почему именно для строк эта типизация сделана, а не для интов, например.

4) Вызов функций можно делать с указанием названия аргументов из сигнатуры функции, например: myfunc(x=1, y=2)

5) В стандартной библиотеке есть различные коллекции, и с коллекциями можно работать по разному. Можно просто по цепочке вызывать map, потом filter и т.д., а можно работать через пайплайны.

var v: List[Int?] = List@{1, 2, none, 4};

//Chained - List@{1, 4, 16}
v->filter(fn(x) => x != none)->map[Int](fn(x) => xx)

//Piped none filter - List@{1, 4, 16}
v |> filter(fn(x) => x != none) |> map[Int](fn(x) => x
x)

//Piped with noneable filter - List@{1, 4, 16}
v |??> map[Int](fn(x) => xx)

//Piped with none to result - List@{1, 4, none, 16}
v |?> map[Int](fn(x) => x
x)


6) рекурсия считается злом, которое может усложнить программу, поэтому рекурсивные фунции надо помечать словом rec

7) программы на Bosque являются детерминированными. Другими словами в языке нет неопределенного поведения. Например, нельзя использовать переменные, пока они не были определены; алгоритмы сортировки только стабильные и т.д. Если программа выдала какой-то результат, то такой же результат будет и потом, никаких сюрпризов

8) Вместо классов и интерфейсов в языке есть понятия entity и concept.

concept Bar {
field f: Int;
}

entity Baz provides Bar {
field g: Int;
field h: Bool = true;
}

var y = Baz@{f=1, g=2, h=false}; //Create a Baz entity with the given field values
var x = Baz@{f=1, g=2}; //Create a Baz entity with default value for h
Аноним 22/04/19 Пнд 15:49:14 50009742
14
0

>>5000917 (OP)
На первый взгляд довольно всрато, плюс непонятно зачем вообще нужно.

мимо аналитик
Аноним 22/04/19 Пнд 15:50:11 50009813
8
1

>>5000917 (OP)
язык господ - С, язык рабов - все остальные. дискасс
Аноним 22/04/19 Пнд 15:50:24 50009834
2
0

Аноним 22/04/19 Пнд 15:51:51 50009985
1
0

Нинужна
Аноним 22/04/19 Пнд 15:52:40 50010036
8
1

>>5000981
Авторитетное мнение джуна на галерах.
Аноним 22/04/19 Пнд 15:53:39 50010097
0
0

Аноним 22/04/19 Пнд 15:53:55 50010118
0
0

>>5001003
ФП дурачок порвался
Аноним 22/04/19 Пнд 16:00:17 50010469
11
0

>>5000917 (OP)

Зачем?

вот комментарий понравился:
Это управленческий паттерн «незаменимая команда». Когда команда, разрабатывающая один из ключевых продуктов компании, переводит его на специально ими выдуманную технологию — новый язык программирования, принципиально новую СУБД с ни с чем не совместимым языком запросов, пишет с нуля новую ОС, на которой будет крутиться сервер продукта, ну и т.д.
В итоге команда, которой удалось реализовать этот паттерн, надолго становится незаменимой — их становится очень сложно уволить, не завалив разрабатываемый продукт, потому что спецов по новой технологии в ближайшее десятилетие будет исчезающе мало.
Именно поэтому программистам очень выгодно реализовывать этот паттерн. А вот для менеджера, допустившего такое, например переписывание половины браузера на принципиально новый язык — признак профнепригодности, особенно когда компания испытывает финансовые трудности.
Аноним 22/04/19 Пнд 16:18:38 500115910
0
0

Когда уже нейросетка научиться генерировать код по описанию?
Аноним 22/04/19 Пнд 16:35:37 500127811
0
0

>>5000917 (OP)
>чтобы он был прост и понятен как для человека, так и для компьютера.
Двачеры даже в такой не смогут!
Аноним 22/04/19 Пнд 16:36:23 500128512
0
0

Аноним 22/04/19 Пнд 16:47:29 500134213
0
0

>>5000917 (OP)
>2) В языке нет циклов for, while и т.д. Вообще никаких нет. Вместо этого есть коллекции и пайплайны. Другими словами, вместо циклов нужно использовать более высокоуровневые штуки типа map, filter и т.д.
Поясните, как сравнить 2 массива с помощью map, filter и тд? Как будет выглядеть код
for (i = 0; i < arr1.size() && i < arr2.size(), i++) if (arr1 != arr2) return false
Аноним 22/04/19 Пнд 16:49:41 500135214
1
0

15513596531750-[...].jpg (16Кб, 360x235)
360x235
Аноним 22/04/19 Пнд 16:50:34 500135715
6
2

>>5001003

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

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

Как же вам объяснить. Вот у тебя есть задача - хренчить какие-нибудь шайбочки. Тут не надо никаких «выоскотехнологичных», модных сейчас 3д-принтеров. Не надо на сишке делать 3дпринтер - он тебе нужен лишь потому, что ты не можешь купить/сделать приспособу для твоих шайбочек.

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

Нужность принтера - это ограничение твоего рынка. Реально он не нужен. Этого рядовая обезьяна понять не может. И постоянно пытается сравнивать покупку принтера с разработкой с нуля голыми руками без готовых деталей.
Аноним 22/04/19 Пнд 16:51:31 500136116
0
0

Эт че, новый хачкель?
Аноним 22/04/19 Пнд 16:53:04 500136817
0
0

>>5001342
>for (i = 0; i < arr1.size() && i < arr2.size(), i++) if (arr1 != arr2) return false
фикс
Аноним 22/04/19 Пнд 16:53:19 500136918
1
0

>>5000917 (OP)
Майкрософт нашёл критическую недоработку в хаскелях с лиспами.
>>5001357
Лучший пост треда. Двачую. Дякую. Целую в носик!

Аноним 22/04/19 Пнд 16:53:46 500137419
0
0

>>5001368
>for (i = 0; i < arr1.size() && i < arr2.size(), i++) if (arr1[ i ] != arr2[ i ]) return false
блядь, макаба
Аноним 22/04/19 Пнд 16:54:23 500137920
0
0

>>5001352
Зачем циклы когда есть рекурсия?
Аноним 22/04/19 Пнд 16:56:16 500138521
2
0

picture-000002.jpg (14Кб, 418x330)
418x330
Аноним 22/04/19 Пнд 16:56:41 500138922
0
0

>>5001342

const arr1 = [1, 2, 3];
const arr2 = [1, 2, 7];

const isArrayEq = (a1, a2) => {
let isEqual = true;
a1.forEach((el, ind) => {
if (JSON.stringify(el) !== JSON.stringify(a2[ind])) isEqual = false;
});
return isEqual;
};

isArrayEq(arr1, arr2);

Аноним 22/04/19 Пнд 16:57:27 500139523
2
0

>>5001357
Шайбочки = ассемблер.
Миморазраб.
Аноним 22/04/19 Пнд 16:57:30 500139624
0
0

>>5000917 (OP)
Как название языка звучит правильно, Боскйуу?
Аноним 22/04/19 Пнд 16:58:00 500139925
0
0

>>5001389
>a2[ind]
А вот нихуя. у тебя нет доступа по индексу, вообще никакого
Аноним 22/04/19 Пнд 16:59:47 500140826
0
0

>>5001399
А, блядь. Это я проебался, речь ведь не о доступе по индексу а о циклах
Аноним 22/04/19 Пнд 17:01:11 500142127
0
0

Аноним 22/04/19 Пнд 17:01:33 500142228
0
0

1539894840.png (31Кб, 160x160)
160x160
>>5001374
Не знаю, как там у функциональщиков, вот на моём нынешнем языке (gdscript):
for i in range(arr1.size() if arr1.size() < arr2.size() else arr2.size()): if arr1[ i ] != arr2[ i ] return false
Аноним 22/04/19 Пнд 17:03:46 500144229
0
0

>>5001374

>2k19
>Пользоваться циклами

bool Huincia(arr1, arr2, i = 0){
if(i >= arr1.size() || i >= arr2.size())
return true;

if (arr1[ i ] != arr2[ i ])
return Huincia(arr1, arr2, i+1);

return false;
}
Аноним 22/04/19 Пнд 17:04:00 500144830
7
0

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

С приходом двухтысячных все изменилось. Мировой рынок начал расти, и десятки тысяч «не таких как все» почуяли запах денег. Началась экспансия кадров на внешние рынки. Быть технарем стало модно. Школяр умолял мамку купить компьютер, заканчивал одинадцать классов и шел учиться на программиста. Юная особь, еще ничего не смыслившая в жизни, начинала неистово надрачивать на свою элитарность с самых первых курсов. Абсурд был возведен в абсолют. Теперь гением был каждый второй. Те, кому не удавалось найти работу — шли учить других. Посиделки хипстеров вместе с ноутбуками в дешевых кабаках стали синонимом успеха. Истерия достигла такой степени, что курсы по программированию открывались для женщин, стариков, детей. Каждый хотел обратиться в новую веру и зарабатывать миллионы. Но, предсказуемо, ничего не вышло. Никчемные хуесосы так и остались никчемными хуесосами, а шансы войти в айти с каждым днем стали уменьшатся. Теперь айти непрестижно, но толпы бездарей продолжают считать себя уникальными и успешными. Хотя, на самом деле, они — никто.
Аноним 22/04/19 Пнд 17:04:48 500145131
0
0

>>5001422
Быстрофикс!
for i in range(arr1.size() if arr1.size() < arr2.size() else arr2.size()): if arr1[ i ] != arr2[ i ]: return false
Одну закорючку проебал, хотя всем похуй.
Аноним 22/04/19 Пнд 17:05:23 500145332
0
0

Аноним 22/04/19 Пнд 17:05:24 500145433
0
0

>>5001422
Фу бля
>>5001374

>2k19
>Пользоваться циклами

bool Huincia(arr1, arr2, i = 0){
if(i >= arr1.size() || i >= arr2.size())
return true;

if (arr1[ i ] != arr2[ i ])
return Huincia(arr1, arr2, i+1);

return false;
}
Аноним 22/04/19 Пнд 17:05:25 500145534
0
0

>>5001451
не похуй, уже хотел поправить
Аноним 22/04/19 Пнд 17:05:47 500146035
0
0

>>5001453
Таки да, питоноподобный.
Аноним 22/04/19 Пнд 17:06:34 500146636
0
0

Аноним 22/04/19 Пнд 17:07:55 500147737
0
0

>>5001448
>а шансы войти в айти с каждым днем стали уменьшатся
Как они уменьшаются если туда идут только бездари? Если ты сам такой крутой, то превзойти из не составит труда.
Аноним 22/04/19 Пнд 17:10:22 500149438
0
0

>>5001454
Прикольно! Но если я буду так делать на С++, коллеги вывезут меня в лес и пристрелят
Аноним 22/04/19 Пнд 17:13:08 500151539
0
0

>>5001494
Для кого придумали сокрытие реализации, мм?))
Аноним 22/04/19 Пнд 17:13:39 500152040
4
0

Стикер (191Кб, 313x286)
313x286
>>5000917 (OP)
>чтобы он был прост и понятен как для человека

Теперь я понимаю, почему пользователей бейсика не считают за людей. Я сам этот пользователь, и если честно, не понимаю как синтаксис босха может быть понятен для человека. И в правду я не человек, что это за @{/}@@%%%))(?|??. Это действительно понятно человеку?

мимо бейсикоблядь
Аноним 22/04/19 Пнд 17:19:21 500156941
0
0

>>5001515
Это не пройдёт кодревью
Аноним 22/04/19 Пнд 17:20:17 500157442
3
0

Стикер (63Кб, 200x166)
200x166
>>5001357
На сишке изобретают велосипеды. Например: принтеры. Нет бы, сука, взять готовый принтер и печатать на нем — лучше заново создать принтер и проебать полжизни; потому что те, кто делал принтеры до тебя, уже делают принтеры v5.0, а у тебя мудя в седине и клеч-дрыгостол версии 0.3b
Аноним 22/04/19 Пнд 17:20:46 500158043
0
0

>>5001357
Спасибо, насмешил, особенно про 5 минут доставило. Сразу видно опытного разработчика уровня /pr.
Аноним 22/04/19 Пнд 17:21:42 500158744
0
0

>>5000917 (OP)
>В языке нет циклов for, while и т.д.
>Другими словами, вместо циклов нужно использовать более высокоуровневые штуки типа map, filter и т.д.
Про рекурсию учитель информатики не рассказывал?
Аноним 22/04/19 Пнд 17:22:41 500159645
0
0

>>5001046
Значит, майки пойдут по стопам эпла и будут делать анально огороженные продукты. А там и терминалы вместо Пекарен подвезут.
Аноним 22/04/19 Пнд 17:23:11 500159946
0
0

>>5001569
Кто они такие чтобы навязывать свою отсталость?
Начальник охуеет от того как ты умеешь и повысит
Аноним 22/04/19 Пнд 17:23:48 500160447
1
0

>>5001599
>и повысит
и повесит
Аноним 22/04/19 Пнд 17:25:23 500161848
0
0

>>5001159
>генерировать код по описанию
На практике это и люди далеко не всегда могут
Аноним 22/04/19 Пнд 17:27:33 500162649
0
0

>>5001379
>рекурсия
Сможешь предсказать на какой интерации у тебя закончится память или наебнется интерпретатор? Рекурсии нужно использовать в самом крайнем случае.
Аноним 22/04/19 Пнд 17:32:54 500166250
0
0

>>5001448
Но действительно ахуенных прогеров малО, это как если бы половина пошла бы на математика, мол тот ахуенно
много получает, но большая часть из них вылетит после 2-3 курсов. Забей хуй, у этой массы ничего не выйдет.
Аноним 22/04/19 Пнд 17:35:09 500167151
0
0

>>5001626
>закончится память
Не скоро
Аноним 22/04/19 Пнд 17:35:52 500167552
0
0

>>5001626
Итерация это циклы, а рекурсия это рекурсия.
Аноним 22/04/19 Пнд 17:37:01 500167753
0
0

>>5001379
Рекурсия жрет много памяти и медленнее обычного цикла.
Аноним 22/04/19 Пнд 17:38:11 500169154
1
0

>>5001675
>Итерация это циклы
лол

>>5001677
>Рекурсия жрет много памяти
16Гб хватит всем.

Рекурсия-кун
Аноним 22/04/19 Пнд 17:41:40 500171355
0
0

Аноним 22/04/19 Пнд 17:48:39 500174056
0
0

Аноним 22/04/19 Пнд 18:04:29 500182057
0
0

>>5001587
Ну давай, обойди массив рекурсией, даун. Куда ты вообще лезешь?
Аноним 22/04/19 Пнд 18:20:43 500189758
0
0

Аноним 22/04/19 Пнд 18:31:51 500194059
0
0

>>5001520
>бейсикоблядь
>2x10^3+19
Земля тебе пухом, братишка.
бросил каку в 2003 году
Аноним 22/04/19 Пнд 18:37:36 500196860
0
0

>>5001677
Ебать ты дегенерат. Про оптимизацию рекурсии слышал вообще?
Аноним 22/04/19 Пнд 18:38:28 500197261
0
0

>>5001940
Вижалбазик в мирке мелкософтовского офисного пакета живёт и здравствует.
Аноним 22/04/19 Пнд 18:41:29 500198662
0
0

>>5001968
>оптимизацию рекурсии
ТЫ ему ещё по СИКП напиши
Я удивлён что этот зумер не на трубу дал ссылку
Аноним 22/04/19 Пнд 18:41:38 500198763
0
0

Аноним 22/04/19 Пнд 18:43:59 500199664
0
0

Аноним 22/04/19 Пнд 18:51:03 500203265
0
0

>>5001996
такая глючная но простая
возможность быстро
делать простые
прожки под андроид
Аноним 22/04/19 Пнд 18:51:14 500203466
0
0

>>5001454
Ебать ты долбоеб. Ты походу ни на чем кроме похапы не писал и не знаешь что такое стек.
А знать что такое рекурсия, и при этом не иметь понятия о стеке и его реализациях в разных средах - это пиздец, это хуже чем не знать что такое рекурсия.
Твоя функция крашнет все нахуй, если ей передать массивы с хотя бы парой миллионов элементиков.
Лучше бы ты просто самовыпилился, придурок.
Аноним 22/04/19 Пнд 18:55:18 500205067
0
0

>>5001357
Это все хорошо когда тебе нужны шайбочки.

Но если тебе нужен скажем промышленный комплекс, ну допустим несколько работающих в связке химических предприятий, и ты начнешь на своей сишке делать вручную миллионы разых приспособ, для миллионов разных шайбочек-болтиков-планочек-трубочек-етц из которых состоит будущий промышленный комплекс...
Ну в общем удачи тебе, и тем кому придется поддерживать дальше ту груду хлама которая получится на выходе
Аноним 22/04/19 Пнд 18:57:34 500205968
0
0

Аноним 22/04/19 Пнд 20:11:32 500241869
0
0

>>5000917 (OP)
> concept Bar {
> field f: Int;
> }
>
> entity Baz provides Bar {
> field g: Int;
> field h: Bool = true;
> }
Я не понимаю нахуя они все переименовывают класс, абстракт, public, private итд в что то свое непохожее но по сути то же самое, они хотят затруднить изучение своего языка.
Я говорю про ублюдошные языки программирования типа свифта и вот этой ебанины, которая судя по всему с оглядкой на свифт и создается
Аноним 22/04/19 Пнд 20:18:05 500246370
0
1

>>5002034
В похапэ самая грамотная и правильная реализация классов и вообще ООП, но сам язык сильно специализирован под серверный бакенд и ни под что больше и по этому он из своей ниши никогда не вылезет.
Так что не пизди на пых.
Аноним 22/04/19 Пнд 20:20:53 500247871
0
0

нужен только паскаль. все остальные языки для ущербных аутистов типа вас
Аноним 22/04/19 Пнд 22:24:08 500309372
0
0

>>5002418
Не осилили сделать полноценный класс в классическом понимании, обозвали entity, им заебись
Аноним 23/04/19 Втр 10:39:43 500550473
0
0

Теперь это говнокода тред
Аноним 23/04/19 Втр 10:42:38 500552674
0
0

>>5002059
Пруфы чего именно, братан? Каждый вызов функции делает запись в стек. У тебя их будет столько, сколько элементов в массиве
Аноним 23/04/19 Втр 14:19:31 500690375
0
0

Аноним 23/04/19 Втр 20:44:39 500958876
0
0

>>5006903
Не буду спорить так как луа всегда был симпатичен мне, но хоть убей не могу представить чем.
Я кстати оговорился
> и вообще ООП
нет, самое навороченое это все таки прототипное как в джаваскрипте, а в пыхе как бы сам класс - его синтаксис хорошо проработан, сласс наследник класса абстракт функции, константу можно в класс вписать и ее можно будет и из статического и из экземпляра посмотреть, к наследнику обратится к статическому методу не по имени а через статик свойство в экземпляре. В общем все длялюдей все удобно, только гетеры и сетеры как то коряво сделаны ну да бог с ними.
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 300Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов