The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"В Polkit добавлена поддержка JavaScript-движка Duktape"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"В Polkit добавлена поддержка JavaScript-движка Duktape"  +/
Сообщение от opennews (??), 25-Янв-22, 20:44 
В инструментарий Polkit, используемый в дистрибутивах для обработки авторизации и определения правил доступа к операциям, требующим повышенных прав доступа (например, монтирования USB-накопителя), добавлен бэкенд, позволяющий использовать встраиваемый JavaScript-движок Duktape вместо ранее применяемого движка Mozilla Gecko (по умолчанию как и раньше осуществляется сборка с движком Mozilla). Язык  JavaScript в Polkit используется для определения правил доступа, которые взаимодействуют с привилегированным фоновым процессом polkitd при помощи объекта "polkit"...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=56578

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

2. Сообщение от макпыф (ok), 25-Янв-22, 20:48   –3 +/
УРА

UPD: Блин, там для сборки этого ducktape нода похоже нужна. Впрочем все равно лучше чем mozjs
UPD2: Только для мастера. Релиз без неё.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5, #11

3. Сообщение от mimocrocodile (?), 25-Янв-22, 20:48   +6 +/
Открываешь репо polkit а там

> pkexec: local privilege escalation (CVE-2021-4034)

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #54

4. Сообщение от sdkhflskhgl (?), 25-Янв-22, 21:03   +2 +/
ух тыж... ducktape реально классная реализация жабаскрипта, по идеологии чем-то похож на sqlite - тоже только один Хидер и один сырец. встраивать такие модули в свой проект - одно удовольствие. правда нужно какое-то время чтобы привыкнуть к стековой машине (API там весьма далёк от классики жанра), но если разобраться (занимает день с перекурами если не торопиться) - то потом можно расширять функционал движка до бесконечности :)
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #26, #37, #62

5. Сообщение от Аноним (5), 25-Янв-22, 21:05   +/
котлеты против макаронов ?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

6. Сообщение от Аноним (11), 25-Янв-22, 21:21   –4 +/
Вот и пришла хана polkit

в такие вещи пихать попаскрипт - хоронить

Хорошо что нормальные дистры есть, без этого ауна намертво прикрученного

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #8, #9, #53

8. Сообщение от муу (?), 25-Янв-22, 21:28   +19 +/
> Вот и пришла хана polkit
> в такие вещи пихать попаскрипт - хоронить

а он, внезапно, там уже давно, до добавления duktape использовался mozjs, для сборки которого нужны python, llvm, rust и ведро соплей девственниц.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #13

9. Сообщение от псевдонимус (?), 25-Янв-22, 21:28   +/
Зато прог к этому не прикрученых все меньше.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #12, #38

11. Сообщение от Аноним (11), 25-Янв-22, 21:43   +5 +/
лучше без этого попаужаса вообще, да ещё в таких места.

но хотите жевать сопли обезьян - жуйте. а нормальные люди это всё просто выпилят из системы

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #16

12. Сообщение от Аноним (11), 25-Янв-22, 21:43   +1 +/
вагон и маленькая тележка. почти всё не прикручено у меня этого polkit вообще нету
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

13. Сообщение от Аноним (11), 25-Янв-22, 21:44   –3 +/
та внезапно по барабану. у меня polkit вообще в системе нету и ниразу не понадобился
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

16. Сообщение от Аноним (16), 25-Янв-22, 21:51   +6 +/
Так выкидывай, опенсорс, все исходники доступны, EULA никто подписывать не заставляет. Свобода! Но нет, ты только на опеннете в комментариях ноешь.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #33, #36

18. Сообщение от Oxyd76 (?), 25-Янв-22, 22:05   +4 +/
Божечки. Ну зачем? Почему не более подходящие, для системной компоненты вещи. Ну хочется вам встроить поддержку логики, так возьмите ну тот-же LUA.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #19, #20, #25

19. Сообщение от Аноним (19), 25-Янв-22, 22:07   +/
Луа слишком сложный язык.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

20. Сообщение от Аноним (20), 25-Янв-22, 22:14   –9 +/
А чем JavaScript не подходящий? Он для этого был создан. Реализация отличная, настоящий embedded. Потребляет очень мало.

Наверное это в 💯 раз лучше чем bash портянки (но на них тут никто не ругается).

И он во много-много раз быстрее недоязыка bash.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #21, #22, #46

21. Сообщение от Аноним (21), 25-Янв-22, 22:21   +/
запомни: скриптовать что-то сложное принято исключительно на самых тормознутых языках. Например на баше, где "всё есть строка". Или на пыхе, -- писать тормозкрипты пробельчиками. Куда ты тут лезешь со своим яваскриптом?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #56

22. Сообщение от anonymous (??), 25-Янв-22, 22:25   +/
Всем хорош. Одна только проблема. polkit до мержа использовал mozjs сиречь spidermonkey, который для себя требует дохера зависимостей рантайма и билда. Но теперь, когда они переехали на duktape, это и в самом деле что-то близкое к embedded.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #29

25. Сообщение от Аноним (25), 25-Янв-22, 23:13   +2 +/
Они не могут взять Lua, потому что там уже был JS. Придётся правила переписывать — никто не хочет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #28

26. Сообщение от Аноним (26), 25-Янв-22, 23:17   –2 +/
API у него действительно классное. Но я бы предпочёл обёртку над SpiderMonkey.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

27. Сообщение от Аноним (26), 25-Янв-22, 23:18   +1 +/
>вместо ранее применяемого движка Mozilla Gecko

Gecko - это браузер. Движок - это SpiderMonkey.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #30

28. Сообщение от Аноним (26), 25-Янв-22, 23:20   –7 +/
lua - такое говно, что к ней лучше не прикасаться и избегать at all costs. Такого геморроя как с луной я давно не обретал. Дизайнили явно лунатики.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #39

29. Сообщение от Аноним (26), 25-Янв-22, 23:22   –1 +/
Тебе всё равно Firefox ставить, так что на десктопах SM оптимальнее, ибо и JiT, и JS нормальный, и памяти не жрёт дополнительно, ибо у тедя Firefox всё равно перманентно запущен.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #43

30. Сообщение от Аноним (26), 25-Янв-22, 23:24   +/
*JS-движок
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

31. Сообщение от Генри Форд (?), 25-Янв-22, 23:26   +5 +/
Реально? В системных компонентах линукса крутится JavaScript?

Как фронтендер заявляю, эту псевдо операционную систему уже ничто не спасёт.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #34, #41, #45

33. Сообщение от Самокатофил (?), 26-Янв-22, 00:30   +/
А вот и выпилил. А сам-то уже перестал пить коньяк по утрам?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

34. Сообщение от Аноним (21), 26-Янв-22, 01:04   +/
в нгинксе комплекс секьюрити чеки можно делать через njs
в бровзерах помнится бывали PAC-скрипты, возвращающие адрес прокси-сервера по урлу страницы

Но здесь нельзя. Никак нельзя. Это другое. Ни в коем случае. Не-не-не. Вам не понять.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #40, #67

36. Сообщение от Crazy Alex (ok), 26-Янв-22, 01:44   +1 +/
А в чём проблема выкинуть? У меня в генте этой хрени отродясь не было и не будет
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

37. Сообщение от Crazy Alex (ok), 26-Янв-22, 01:45   +3 +/
А там сильно нужен джаваскрипт вообще?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #90

38. Сообщение от Crazy Alex (ok), 26-Янв-22, 01:46   +1 +/
Единственное, что к нему прикручено - это DE всякие. Смысл которых лично я не понимал вообще никогда.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

39. Сообщение от Crazy Alex (ok), 26-Янв-22, 01:50   +/
Вот уже сто раз ловил себя на том, что очень не хватает простого удобного скриптового языка, который не пытается быть всем.

Нет, не луа с его функциональщиной. Не js с его странностями. Не питон с его кучей "особенностей". А что-то вроде бейсика - простое, как топор, в принципе не пригодное для написания сложного кода, но не провоцирующее, как шелл, выстрелы в ногу. Желательно - строго типизированное, чтобы нельзя было вместо числа засунуть яблоко а потому думать "а что ж не так".

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #44, #59, #60, #69, #71

40. Сообщение от Crazy Alex (ok), 26-Янв-22, 01:52   –1 +/
Между "можно делать" и "засунули по умолчанию" очень большая дистанция.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34

41. Сообщение от Crazy Alex (ok), 26-Янв-22, 01:53   +/
Это не "системные компоненты". Это так, один из возможных вариантов обвязок, хоть и очень распространённый.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

42. Сообщение от deeaitch (ok), 26-Янв-22, 02:05   –1 +/
Хорошая новость. Полезная информация. Всегда было на него плевать и не нужен был в embedded его функционал вообще не нужен (нет таких задач, всё жёстко завязано), а если где в сестеме и был (например на ноуте), я его не замечал. Теперь знаю что там внутри. Полезно, познавательно.

Это реальность. К сожалению.

Всем изветсно качество кода на javascript, не потому что он плохой, потому что там много зелёной школоты. Доказательством тому ежедневные сотни замечательных вещей в npm и прочих около javascript штуках. И проблема не в памяти как считают некоторые секты. К сожалению это реальность. И реальность такова что основные сейчас в Linux это дети из мира javascript.

Ну как есть. По крайней мере этот движок легче. Только те кто приписывает это к embedded, ребята, не позорьтесь. Календарьчик в телефоне на javascript для mail.ru это ещё не embedded. Да и вообще не embedded.

Но хоть стал легче. Может когда придут к более здравому решению. Опыт одной крупной компании уже доказал, что javascript в embedded (по крайней мере automotive) не место. Но дороги назад нет и они спешно делают велосипеды.

Учитесь на чужих ошибках, не повторяйте их. Удачи.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #97

43. Сообщение от Аноним (-), 26-Янв-22, 02:07   +2 +/
> Тебе всё равно Firefox ставить, так что на десктопах SM оптимальнее, ибо
> и JiT, и JS нормальный, и памяти не жрёт дополнительно, ибо
> у тедя Firefox всё равно перманентно запущен.

Т.е. тебя не смущает, что в зависимостях там mozjs-78 - отдельный движок как и то, что JIT для пары строк с правилами - никуда не уперся?


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

44. Сообщение от Аноним (21), 26-Янв-22, 02:19   –1 +/
> не пригодное для написания сложного кода
> строго типизированное

Параграфы соблюдены.

Не пойму, чем так не нравится JS. Успешно применяется в самых неожиданных областях. explorer.exe в вантуз-98 имел боковую панель с голубым уголком -- он управлялся из JScript. DAZ Studio позволяет себя скриптовать и подгружает свои ассеты через "Daz Script", который тоже ECMAScript. nginx/njs, nodejs, react native... Все применяют, а у тебя, видишь ли, "странности". А обернув в тайпскрипт, получаешь свою типизацию.

А со "странностями" в яваскрипте я сталкиваюсь ровно один раз в 3-5 лет -- когда мне по этим "странностям" задают вопросы на собесах.

Как альтернатива есть Vala, тоже может работать в скриптовом режиме. Всяко получше всяких перлов-башев-пыхов.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #47, #58, #77, #84

45. Сообщение от Аноним (45), 26-Янв-22, 03:37   +2 +/
Все спасет. Выкинуть "==" и допилить нормально систему типов и базовую библиотеку будет вполне нормальный язык. А прикрутить LLVM и компиляцию, так вообще сказка будет, но это уже скорее для TypeScript работенка.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

46. Сообщение от Аноньимъ (ok), 26-Янв-22, 04:55   +/
>Наверное это в 💯 раз лучше чем bash портянки (но на них тут никто не ругается).

Я ругаюсь например.
Ну и так себе аргумент. Всё что угодно лучше баша.

>А чем JavaScript не подходящий? Он для этого был создан.

Даже не знаю для чего он был создан.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #48, #50, #57, #93

47. Сообщение от Аноньимъ (ok), 26-Янв-22, 04:59   +1 +/
Вы какой-то со странностями...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

48. Сообщение от ыы (?), 26-Янв-22, 05:55   +/
Ждем от вас дистрибутив линукса, в котором bash заменен на жабоскрипт.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #66

50. Сообщение от Anonymoustus (ok), 26-Янв-22, 06:05   +3 +/
>> А чем JavaScript не подходящий? Он для этого был создан.
>
> Даже не знаю для чего он был создан.
>

Он был создан для того, чтобы рисовать «спецэффекты» в окне браузера: танцующие снежинки, цветные переливы, «динамические меню» и так далее. В своё время, до очередного «изобретения» квадратных колёс в виде HTML5, это называли DHTML.

https://en.wikipedia.org/wiki/Dynamic_HTML

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #119

53. Сообщение от Аноним (53), 26-Янв-22, 07:59   +3 +/
>Вот и пришла хана polkit
>в такие вещи пихать попаскрипт - хоронить

Так JS в нём отродясь был, только от Мурзилы. Но свежие версии SpyderMonkey хотят собираться Растом.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #55

54. Сообщение от . (?), 26-Янв-22, 08:46   +5 +/
Погодите, так ведь он для этого ж и предназначен? Программа для получения доступа к повышенным привиллегиям в обход стандартных юникс-механизмов - предоставила кому-то к ним доступ? Ну ахренеть, я изумлен.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #61

55. Сообщение от . (?), 26-Янв-22, 08:50   +/
> Так JS в нём отродясь был

-rwxr-xr-x 1 root root 9980 Nov  5  2011 /usr/lib/polkit-1/polkitd
ты уверен что в нем поместился js? Чудеса микроминиатюризации, не иначе.

Но идея, конечно, и изначально была идиотской. Хотели UAC какввенде. Впрочем, в венде там хотя бы нет js вместе с мурзилой целиком.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53 Ответы: #81, #83

56. Сообщение от Аноним (56), 26-Янв-22, 08:52   +3 +/
В php очень быстрый интерпретатор, даже без jit
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

57. Сообщение от Аноним (56), 26-Янв-22, 08:53   +/
Какие?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

58. Сообщение от Аноним (20), 26-Янв-22, 09:49   –1 +/
Кстати, из прошлых срачей "parseInt(Infinity, 19)"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44 Ответы: #63, #101, #103, #109, #110

59. Сообщение от Аноним (59), 26-Янв-22, 10:04   +1 +/
Ну т.е. твоя мечта это питон?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #76

60. Сообщение от Аноним (80), 26-Янв-22, 10:34   +1 +/
mruby хватит всем [pokerface]
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #73

61. Сообщение от Аноним (61), 26-Янв-22, 10:35   +/
> Погодите, так ведь он для этого ж и предназначен?

И сколько платят безопасникам за нахождение дыр в дуршлаге? Думаю, прибыльная работа.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #54 Ответы: #64

62. Сообщение от OpenEcho (?), 26-Янв-22, 10:51   +/
IMHO QuickJS от Фабриса Белларда покруче будет чем дактэйп
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #80, #82

63. Сообщение от Аноним (21), 26-Янв-22, 10:54   +1 +/
ну и что это? снова гипотетическая проблема, которую встретишь только в собесах, и которой нет даже в хелловорлдах начинающих?

declare function parseInt(string: string, radix?: number): number;

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #94

64. Сообщение от . (?), 26-Янв-22, 10:56   +/
>> Погодите, так ведь он для этого ж и предназначен?
> И сколько платят безопасникам за нахождение дыр в дуршлаге? Думаю, прибыльная работа.

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

Software Description:
- policykit-1: framework for managing administrative policies and privileges
Summary:
policykit-1 could be made to run programs as an administrator.

- то ли это просто вывод apt show, то ли это USN? Мне вот вредно столько бухать чтоб отличать с первой попытки.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #61

66. Сообщение от . (?), 26-Янв-22, 10:58   +2 +/
> Ждем от вас дистрибутив линукса, в котором bash заменен на жабоскрипт.

не надо! А то так и сделают.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48

67. Сообщение от john_erohin (?), 26-Янв-22, 11:01   –1 +/
> бровзерах помнится бывали PAC-скрипты, возвращающие адрес прокси-сервера по урлу страницы

да, бывали. они больше не будут. мерзкое было изобретение.

wpad IN A 127.0.0.1

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34

68. Сообщение от хрю (?), 26-Янв-22, 11:04   +/
Не совсем понятно - в polkit js примитивный донельзя и по идее там любой js двиг. подойдёт. Про duktape встречал несколько упоминаний, что его можно использовать с polkit. Или тут именно вкомпилировать его в сам polkit?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #78

69. Сообщение от OpenEcho (?), 26-Янв-22, 11:08   +/
> А что-то вроде бейсика - простое, как топор

FreeBASIC ? Нет?

> в принципе не пригодное для написания сложного кода,

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

> но не провоцирующее, как шелл, выстрелы в ногу.

А можно пример провокации в шеле, где прям раз - и в ногу ?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #79

71. Сообщение от Аноним (71), 26-Янв-22, 11:12   +/
Tcl. Проще некуда, типы добавляются расширением, классический язык конфигурации и настройки. Иногда не нужно изобретать велосипеды, когда есть готовое, отлаженное решение.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #75, #88

72. Сообщение от Ordu (ok), 26-Янв-22, 11:23   +/
Забавно вышло. Почитал новость: https://arstechnica.com/information-technology/2022/01/a-bug.../

Зашёл на опеннет полюбоваться cpaчем вокруг неё. А тут cpaчик по поводу того, что polkit js-движок встраивает. До обсуждения 0day ещё даже не дошло.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #74

73. Сообщение от Аноним (20), 26-Янв-22, 12:08   +/
Закопайте стюардессу.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #60

74. Сообщение от Аноним (20), 26-Янв-22, 12:11   +2 +/
По мотивам новая новость. Там будет весь срачик по этому поводу.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #72

75. Сообщение от Crazy Alex (ok), 26-Янв-22, 12:16   +/
Сильно инопланетный. По идее нужно что-то такое, что будет понятно любому, кто в школе if-then-else учил.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #71 Ответы: #95, #132

76. Сообщение от Crazy Alex (ok), 26-Янв-22, 12:19   +/
Нет. Типов нет, зато всякие наследования, magic методы и тому подобное - есть.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #59 Ответы: #86

77. Сообщение от Crazy Alex (ok), 26-Янв-22, 12:22   +2 +/
Не нравится тем, что он сложный для нормальных скриптовых задач. Мало того, что куча странностей с преобразованиями, всякие прототипные наследования, так ещё и слишком много хитрой функциональности вроде футур и подобного.

Со "странностями" вы сталкиваетесь каждый день, только привыкли.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44 Ответы: #85

78. Сообщение от . (?), 26-Янв-22, 12:29   –2 +/
> и по идее там любой js двиг. подойдёт

и много ты их знаешь, "любых"?

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

Да и задача "сделать как в венде!" такого не предполагает.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #68

79. Сообщение от Crazy Alex (ok), 26-Янв-22, 12:30   +/
Бейсик уж слишком архаичен в плане синтаксиса, но да, как вариант.

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69 Ответы: #92, #96

80. Сообщение от Аноним (80), 26-Янв-22, 12:36   +/
Таки почему же?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62 Ответы: #99

81. Сообщение от Аноним (-), 26-Янв-22, 12:38   +/
>> Так JS в нём отродясь был
> -rwxr-xr-x 1 root root 9980 Nov  5  2011 /usr/lib/polkit-1/polkitd
> ты уверен что в нем поместился js? Чудеса микроминиатюризации, не иначе.

https://gitlab.freedesktop.org/polkit/polkit/-/blob/0.111/NEWS
> Highlights:  The JavaScript interpreter is now mandatory.  Both js185 and mozjs17 versions of SpiderMonkey are supported.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55

82. Сообщение от Аноним (-), 26-Янв-22, 12:38   +/
нет
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62 Ответы: #100

83. Сообщение от Аноним (83), 26-Янв-22, 12:43   +/
Надо было задание правил сделать декларативно просто, чтоб не было возможности в алгоритмы.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55 Ответы: #87

84. Сообщение от Аноним (83), 26-Янв-22, 12:50   +1 +/
>Как альтернатива есть Vala, тоже может работать в скриптовом режиме. Всяко получше всяких перлов-башев-пыхов.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

85. Сообщение от Аноним (21), 26-Янв-22, 12:52   –1 +/
> куча странностей с преобразованиями

Гипотетических. На практике их нет ни у кого, включая хелловорлдщиков. Странности -- это поле деятельности авторов статей про "странности яваскрипта", их затем за 5 минут до собеседования вычитывают интервьюеры (потому что сами тоже не сталкивались!) и задают вопросы, чтоб снизить зарплатные ожидания, типа "ну ты же не знаешь, что будет, если засунуть строку в винегрет, а винегрет умножить на пылесос, а это основа основ".

> всякие прототипные наследования
> хитрой функциональности вроде футур и подобного

Вещи полезные, но если СЛОЖНА/НИАСИЛИЛ, то ими пользоваться не обязательно и до определенной степени можно игнорировать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77 Ответы: #115

86. Сообщение от Аноним (59), 26-Янв-22, 12:56   +/
Как это, нет типов? Он очень типизированный, вот в си, например, нет типов (есть сахар притворяющийся типами). Такие тонкости как наследование ромбиком тебе не понадобятся с таким подходом к вопросу.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #76 Ответы: #114

87. Сообщение от Аноним (87), 26-Янв-22, 13:07   +/
В той версии - так и было. Но тогда получалось недостаточное какввенде - поэтому добавили ж0поскрипт.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #83

88. Сообщение от Аноним (83), 26-Янв-22, 13:12   +/
>Tcl

RMS его не одобрил. Guile рекомендовал.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #71 Ответы: #131

89. Сообщение от Аноним (89), 26-Янв-22, 13:15   +2 +/
> Язык JavaScript в Polkit используется для определения правил доступа, которые взаимодействуют с привилегированным фоновым процессом polkitd при помощи объекта "polkit".

Дискретного контроля прав доступа вполне хватает. Настройте DAC в дистрах и не изврасчайтесь с JavaScript.

Какой самый удобный формат для написания и просмотра правил контроля доступа?
https://www.linux.org.ru/forum/security/15600248?cid=15622030

systemd, dbus, polkitd+JS не нужны совсем:
https://www.linux.org.ru/forum/security/15600248?cid=15620606
https://www.linux.org.ru/forum/security/15600248?cid=15600880
https://www.linux.org.ru/forum/security/15600248?cid=15600757
https://www.linux.org.ru/forum/security/15600248?cid=15600633

Ответить | Правка | Наверх | Cообщить модератору

90. Сообщение от Аноним (90), 26-Янв-22, 13:16   +3 +/
Миллениалы не понимают конфиги вида ключ-значение, им надо обязательно писать ифы. А на жававскрипте вместо простенького язычка для встраивания (кто сказал луа?), потому что другого они не умеют.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37 Ответы: #91

91. Сообщение от sdkhflskhgl (?), 26-Янв-22, 14:01   –3 +/
иногда надо делать конфиги чуть более структурированными, чем просто плоская портянка, для таких случаев json очень хороший вариант: легко читается, минималистичен по дополнительным символам
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #90 Ответы: #166

92. Сообщение от Cradle (?), 26-Янв-22, 14:10   +1 +/
"back to the basics" - возмоте один из вариантов паскаля, благо их за 50 лет достаточно накопилось. Создавался он вот как будто специально как раз по Вашим запросам.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79 Ответы: #112

93. Сообщение от Урри (ok), 26-Янв-22, 14:12   +/
> Не то чтобы это был ужасный язык если смотреть в вакууме.

Ужасный, ужасный.

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

Чтобы эту ситуацию хоть как-то исправить возникла куча языков поверх жс (ибо браузеры только его и умеют выполнять), более менее исправляющих этот идиотизм под названием "джава-срипт".

Примеров вокруг - миллионы.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #98, #107, #117

94. Сообщение от Урри (ok), 26-Янв-22, 14:14   +/
Дай угадаю - программист хелловорлда, да?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #63 Ответы: #105

95. Сообщение от Урри (ok), 26-Янв-22, 14:16   +1 +/
Ну так и используй Паскаль. Что мешает?
Есть все, что ты хотел.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75 Ответы: #108, #111

96. Сообщение от OpenEcho (?), 26-Янв-22, 14:17   +1 +/
> чтобы простое было писать легко, а сложное - практически невозможно.

Сорри, но слышится ка - "Хочу белое, но что бы было черное"

> Иначе будет очередной питон или php.

А чем пых не угодил, писать легко, документация ИМХО одна из лучших. Если скомпилировать статически и ужать upx-ом, так по современным меркам 12мег вообще ничто.

> В шеле - всё, что связано с кавычками - самый яркий пример,
> ну и то, что всё тащим через строки и, соответственно, по
> типам никакого контроля.

Так то не язык програмирования, а шелл !
Зачем там типы?
И где это нет проблем с кавычками, в каком таком чудо языке ?

Надо простое но с типами, ну так tinycc или еще лучше chibicc, 8 kilobytes и будет работать везде

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79 Ответы: #113

97. Сообщение от Урри (ok), 26-Янв-22, 14:17   +1 +/
> Всем изветсно качество кода на javascript, не потому что он плохой, потому что там много зелёной школоты.

Нет. Именно потому, что он плохой.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

98. Сообщение от Аноним (56), 26-Янв-22, 14:21   –1 +/
Назови хотя-бы 5
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93 Ответы: #163

99. Сообщение от OpenEcho (?), 26-Янв-22, 14:22   +/
> Таки почему же?

Из малышей он супортит больше фич из ECMAscript ну и продуктивность:

https://bellard.org/quickjs/bench.html

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #80

100. Сообщение от OpenEcho (?), 26-Янв-22, 14:24   +1 +/
> нет

Спасибо за досканальное разьяснение !!!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #82

101. Сообщение от Аноним (56), 26-Янв-22, 14:26   +/
Не запускала, но ответ 19?
А ещё в js typeof NaN === "number"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #102, #106

102. Сообщение от Аноним (56), 26-Янв-22, 14:27   +/
И "1" + 1 === "11"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #101

103. Сообщение от Аноним (56), 26-Янв-22, 14:33   +1 +/
Все странности с типами решает typescript который такую ерунду просто не скомпилирует.
Слабая типизация в js поле для бесконечных манипуляций вида засунуть ерунду в ерунду и получить ерунду. JS ужастный!!!111
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #104, #146

104. Сообщение от Аноним (56), 26-Янв-22, 14:34   +/
В сишечке вот тоже слабая типизация хоть и статическая,  но её тут нахваливают
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #103

105. Сообщение от Аноним (21), 26-Янв-22, 14:57   +/
дай угадаю: не умеешь в тайпскрипт и держишь в одних и тех же переменных значения самых разных типов, да?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #94 Ответы: #120

106. Сообщение от Аноним (21), 26-Янв-22, 15:02   +1 +/
> А ещё в js typeof NaN === "number"

Подучи матчасть, в частности IEEE 754. Берем например Java:

static double NaN
A constant holding a Not-a-Number (NaN) value of type double.

Берем пых:

>>> type(float('nan'))

<class 'float'>

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #101

107. Сообщение от Аноним (21), 26-Янв-22, 15:05   +/
очередной хелловорлдщик Урри вещает свое ыкспертное мнение 👍
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93 Ответы: #142

108. Сообщение от Аноним (87), 26-Янв-22, 15:19   +/
> Ну так и используй Паскаль. Что мешает?

То что он в школе учил basic, наверное?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #95

109. Сообщение от Аноним (109), 26-Янв-22, 15:20   +2 +/
функция parseInt преобрабразует первые числовые символы в строку. Это даже отравдано учитывае повсеместное распространение в веб значений вида "11px", "2em"

функция parseInt принимает в качестве первого аргумента строку, поэтому константа Infinity типа number автоматически преобразуется в строку "Inifinity"

мы указали десятнацатиричную систему счисления тоесть символы /0-9a-i/i это цифры, в нашей строке первая I это единственное число, а дальше идет строковая часть. i в десятичной системе счисления это 18

Правильный ответ в итоге 18, а не 19, но наверное на собеседовании мне бы этот ответ засчитали так как спрашивают еще и почему так получилось.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #116, #144

110. Сообщение от Аноним (109), 26-Янв-22, 16:42   +/
Ладно infinity, но вы только посмотрите какой js ужастный!
parseInt("ololo", 36)
41322444
parseInt(undefined, 36)
86464843759093
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58

111. Сообщение от Crazy Alex (ok), 26-Янв-22, 16:49   +/
Паскаль как скриптовый язык - уж больно странная идея, не находите?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #95 Ответы: #129, #141

112. Сообщение от Crazy Alex (ok), 26-Янв-22, 16:53   +/
Чем клепать 1001-й вариант (а там, как минимум, надо добавить какие-никакие объекты, хоть и без наследования и приватных членов и поломать "тело программы") можно уж что-то чуть менее многословное наваять.

Если честно - у меня нет сейчас проектов где надо что-то скриптовое вкручивать, так что всё равно это так, хотелки в воздух. Хотя в своё время наматерился.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #92

113. Сообщение от Crazy Alex (ok), 26-Янв-22, 17:05   +/
как раз запрос "простое легко, а сложное - невозможно" реализуется автоматом если не пихать сложные конструкции в язык. Поди напиши сложный софт если у тебя ни указателей ни наследования нет, например.

Пых не угодил ровно этим, плюс тянущимся сто лет легаси. Уж скорее от питона половину отломать.

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

P.S. В своём роде забавно, что никто даже не понимает, о чём речь. А речь о скриптовом языке в своём изначальном смысле - на котором не пытаются писать "большой" софт, а пишут мелкие конфиги или кастомизации, в том числе это делают power user'ы, к программированию никакого отношения не имеющие. На котором в идеале нельзя (или хотя бы крайне сложно) написать что-то непонятное с первого взгляда. Который как читается - так и работает, а где так сделать не выходит - там его просто не надо использовать. Который, соответственно, дожен быть прост как топор в реализации с минимальной attack surface при фактически отсутствующих требованиях к эффективности, потому что ничего большого/часто исполняемого на нём просто не должно быть.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #96 Ответы: #124, #128

114. Сообщение от Crazy Alex (ok), 26-Янв-22, 17:17   +/
Да вот так - нет. С точки зрения пользователя, по крайней мере. Не заставляет указать тип параметров функции и переменной. А скрипты - это то, что обычно не документируется, поэтому там читабельность возьмётся только если её гвоздями к языку прибить.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #86

115. Сообщение от Crazy Alex (ok), 26-Янв-22, 17:21   +2 +/
Не. В данном случае хочется язык, на котором сложно написать нельзя. Который учится полностью за час (ладно - день) и после этого - никаких неожиданнстей - либо оно работает ровно как ожидали либо внятно ругается. Поэтому ничего сложнее тупого императивного стиля - никаких лямбд, никаких наследований, конструкторов, явной работы с памятью, исключений и всего прочего, что я очень люблю когда пишу продакшн код с какой-то замтной сложностью.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85 Ответы: #118, #123, #147, #159

116. Сообщение от Аноним (20), 26-Янв-22, 17:30   –1 +/
Молодец, практически всё правильно.
А говорят JS программисты тупые.

Они, худо бедно, знают свой 👅, в отличие от Си-шников. Которые даже Hello World в прошлой ветке были не в состоянии написать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #109

117. Сообщение от Аноньимъ (ok), 26-Янв-22, 17:33   +/
> Ужасный, ужасный.
> Дизайн джаваскрипта зело неудачен, хуже почти всех известных используемых языков.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93 Ответы: #122, #140

118. Сообщение от Аноним (20), 26-Янв-22, 17:34   +2 +/
Тебе Zig нужно попробовать. Никаких исключений, даже строк нет (есть []u8 массив, можно считать что UTF8 строка, Но это от тебя зависит).

Нет перегрузки и т.п.
Но он не альтернатива и замена скриптовым 👅. Они как раз должны быть "сложными", чтобы раз функцию в функцию в замыкание и готово.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #115 Ответы: #148, #153

119. Сообщение от Аноньимъ (ok), 26-Янв-22, 17:35   +/
Это да, его так намеревались использовать.
Но вопрос был немного в другом.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50 Ответы: #130

120. Сообщение от Аноньимъ (ok), 26-Янв-22, 17:41   +1 +/
> дай угадаю: не умеешь в тайпскрипт и держишь в одних и тех
> же переменных значения самых разных типов, да?

1. Тайпскрип НЕ жаваскрипт.

2. И подумать никто не может чтобы с вами соревноваться в жаваскрипт программировании.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #105 Ответы: #121

121. Сообщение от Аноним (21), 26-Янв-22, 18:12   –1 +/
Продолжай оправдывай свое незнание тайпскрипта и писать абы как, присваивая ежика зайчику. После этого не забудь пожаловаться на то, что у тебя даже хелловорлды не работают.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #120 Ответы: #125

122. Сообщение от Аноним (20), 26-Янв-22, 18:14   +/
Ну так-то я могу переписывать огромные баулы JS (на TypeScript) кода с очень высокой вероятностью что это всё будет корректно работать.

С и С++ такого и не снилось.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #117 Ответы: #126

123. Сообщение от Аноним (21), 26-Янв-22, 18:22   +3 +/
> хочется язык, на котором сложно написать нельзя

Ну возьми HQ9+, че:

- ничего сложнее тупого императивного стиля: check
- никаких лямбд: check
- никаких наследований: check
- конструкторов: check
- явной работы с памятью: check
- исключений: check
- и всего прочего: check

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #115 Ответы: #127

124. Сообщение от Cradle (?), 26-Янв-22, 18:49   +2 +/
Вот на полке стоит книжка Вирта по Оберону, там вся грамматика языка на две с половиной страницы помещается, потомы что по убеждению автора, системный язык должен одинаково хорошо подходить как для ядра, так и для скриптов между программами.
Правда, история этого мира потом пошла немного другим путем, почему-то голландцы оказались популярнее швейцарцев :)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #113

125. Сообщение от Аноньимъ (ok), 26-Янв-22, 19:01   +2 +/
> Продолжай оправдывай свое незнание тайпскрипта и писать абы как, присваивая ежика зайчику.
> После этого не забудь пожаловаться на то, что у тебя даже
> хелловорлды не работают.

Вы не понимаете как работает форум? Вы говорите сами с собой, у вас шизофрения?
Или вы бот?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #121

126. Сообщение от Аноньимъ (ok), 26-Янв-22, 19:04   +/
> Ну так-то я могу переписывать огромные баулы JS (на TypeScript) кода с
> очень высокой вероятностью что это всё будет корректно работать.

Вы большой молодец.

> С и С++ такого и не снилось.

Хвала Аллаху!

Вы надеюсь тут не пытались провести аналогию между JS - TS и C - C++ ?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #122 Ответы: #133

127. Сообщение от Аноним (109), 26-Янв-22, 19:52   +/
там есть печать hellow world и квайн, а значет пункт "и всего прочего" нужно считать невыполненным
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #123

128. Сообщение от OpenEcho (?), 26-Янв-22, 20:28   +/
> как раз запрос "простое легко, а сложное - невозможно" реализуется автоматом если
> не пихать сложные конструкции в язык.

Т.е вы хотите сказать что за пол века люди так и не придумали то, что вам надо?

> Пых не угодил ровно этим, плюс тянущимся сто лет легаси. Уж скорее
> от питона половину отломать.

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

И о каком легси речь? Там страшилки уже давно подчистили и язык стал довольно приличным, который угодит кому угодно, начиная от консоли и до веба, да и скорость у него одна из луших среди интерпритаторов. А то, что находят до сих пор баги, так приблизся к его популярности на любом языке и начут находить баги тоже пачками.

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

>[оверквотинг удален]
> речь. А речь о скриптовом языке в своём изначальном смысле -
> на котором не пытаются писать "большой" софт, а пишут мелкие конфиги
> или кастомизации, в том числе это делают power user'ы, к программированию
> никакого отношения не имеющие. На котором в идеале нельзя (или хотя
> бы крайне сложно) написать что-то непонятное с первого взгляда. Который как
> читается - так и работает, а где так сделать не выходит
> - там его просто не надо использовать. Который, соответственно, дожен быть
> прост как топор в реализации с минимальной attack surface при фактически
> отсутствующих требованиях к эффективности, потому что ничего большого/часто исполняемого
> на нём просто не должно быть.

Вы только что описали /bin/dash (И не в коем случе баш, это уже изврат) ну или покруче busybox. И именно поэтому, их не напичкивают стероидами, а держат самый минимальный набор для програмирования. Вы его просто подучите, он сперва вроде как странный, но когда поймешь, то для администрирования систем ну очень редко когда надо что то еще.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #113 Ответы: #134

129. Сообщение от OpenEcho (?), 26-Янв-22, 20:39   +/
> А если серьёзно - я имею в виду, что там не должно
> быть никаких сложных конструкций вроде исключений, поддержки асинхронности и подобного,
> всё должно работать так, как ожидаешь с  первого взгляда.

Ну так это же /bin/dash !

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

На кой она вам эта типизация здалась, для задач которые вы описали ?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #111 Ответы: #135

130. Сообщение от . (?), 26-Янв-22, 22:47   +/
> Это да, его так намеревались использовать.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #119

131. Сообщение от Аноним (71), 26-Янв-22, 23:00   +1 +/
По политическим причинам, а еще подозреваю из-за NIH. Вместо него породили Bash. Guile - диалект Lisp со всеми плюсами и минусами, но да, его тоже посоветую для настроек и несложных скриптов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #88 Ответы: #161

132. Сообщение от Аноним (71), 26-Янв-22, 23:05   +/
Тогда Squirell - простой, Си-подобный, встраиваемый аналог Lua.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75 Ответы: #136

133. Сообщение от Likern (?), 26-Янв-22, 23:15   +/
Конкретный пример - взял Luxon https://github.com/moment/luxon - супер-популярная библиотека работы с датами и временем на чистом JS - переписал на TypeScript.

Нашёл несколько десятков ошибок во время добавления типов.

https://github.com/breeffy/timely/pull/4 - +2,233 −1,231 строк изменилось.

Ни разу не запускал тесты, но на 99% уверен что ошибок будет мало.

Теперь взял чистый С - написал несколько строчек кода открытия и создания файла - 40 минут внимательно читал документацию по open, чтобы правильно его вызвать (до конца не понял). Ошибка на ошибке, одни флаги O_CREAT | O_DIRECTORY можно, другие O_RDONLY | O_WRONLY нельзя.

Вчитываться надо в каждое слово (!) и то сложно понять. Где-то в дeбрях документации про  https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use.

С++ также и хуже - чтобы писать корректный код нужно вчитываться в cppreference. Но я всё равно до конца не понимаю все варианты перезагрузок - что, где, когда, зачем. Куча исключений и описаний - ни до конца понять, ни запомнить это просто невозможно.

Написать корректный код практически невозможно (заваливать баблом, тестами, санитайзерами). На это фоне JavaScript (+TypeScript) просто блестит как яркая вкусная сладкая конфетка.

TypeScript ЗАСТАВЛЯЕТ писать корректный код. Его система типов настолько крута, насколько это возможно для динамического языка.

Например в Java есть NullPointerException, в TypeScript нет - т.к. null это отдельный тип (и его в коде нужно обрабатывать).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #126 Ответы: #143

134. Сообщение от Crazy Alex (ok), 27-Янв-22, 01:42   +/
Не. Подход "бери подходящее подмножество и не парься" работает для профеесиональных программистов  в проектах с прописанными стайлгайдами, но ни хрена не работает там, где либо не профи либо нет контроля - стили, ревью, вот это всё.

Для встроенных языков не может понадобиться "тулза, которой нет из коробки" - это решается на уровне приложения-хоста. Для не встроенных - если что-то такое попадается-  бери что-то большое вроде того же питона или JS. Но на практике 99% задач не требуют ничего большего, чем совершенно базовые средства - работа с файлами (можно чтобы даже симлинки отдельно не выделяли), строки (и регэкспы туда же), минимальная математика, массивы/словари и простейшие "классы" а-ля struct + сгруппированные в ней функции чтобы не мешать всё в одну кучу.

О шеллах не будем, там одних "логических операторов", эмулируемых чёрт знает из чего, хватит, а читабельности во всяких $чёртзнаетчто вообще никакой. Советовать мне их подучить - это забавно, да. Правда запоздало лет на пятнадцать. как шелл - оно вменяемо. Как скрипт - чудовищно, почему я давным-давно взял за принцип что-либо больше пяти строк сразу делать на перле (ну или сейчас можно на питоне, но я к перлу привык).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #128 Ответы: #137

135. Сообщение от Crazy Alex (ok), 27-Янв-22, 01:53   +/
Идеи одна другой краше. Я о читабельности и предельной понятности (фактически - о том, чтобы всячески затруднить написание непонятного кода), а мне в ответ - то шелл то вообще awk.

Для чего типизация:

1) для того, чтобы, открыв скрипт через два года сходу понять, что там вообще происходит и какую сущность куда пихают.
2) чтобы то же самое было понятно при открытии чужого скрипта.
3) чтобы не было стимула костылировать "а мы сдеаем функцию, окторая умеет принимать десять вариантов чего попало и на них реагировать"
4) чтобы структурировать код - если функция принимает Book то Audiofile туда не запихнёшь. А если сожрёт всё и даже случайно будет работать со всем, что имеет Title - то шансов, что получится какой-то недокод, ломающийся в непредсказуемые моменты, куда больше, а нормального тестирования там не будет потому что на фиг не надо. Дублирование же кода в той области применения, о которой я говорю (мелкие встроенные скрипты и мелкая автоматизация) не критично совершенно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #129 Ответы: #138

136. Сообщение от Crazy Alex (ok), 27-Янв-22, 01:56   –1 +/
Из описания:

dynamic typing
delegation
classes & inheritance
higher order functions
generators
cooperative threads(coroutines)
tail recursion
exception handling

Вот в данном случае это всё - антифичи

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #132 Ответы: #139

137. Сообщение от OpenEcho (?), 27-Янв-22, 11:32   +1 +/
>  но ни хрена не работает там, где либо не профи либо нет контроля - стили, ревью,
> вот это всё.

Кажется, я начинаю понимать в какую сторону ветер. Для такой аудитории придумали очень хороший солюшн: https://scratch.mit.edu/
Просто, понятно, нечего серьезного не сделать(хотя я видел проекты, которые очень даже ого-го), но работать будет. Сорри, но типов там не будет.


> Но на практике 99% задач не требуют ничего большего, чем
> совершенно базовые средства - работа с файлами (можно чтобы даже симлинки
> отдельно не выделяли), строки (и регэкспы туда же), минимальная математика, массивы/словари
> и простейшие "классы" а-ля struct + сгруппированные в ней функции чтобы
> не мешать всё в одну кучу.

Ну, регулярки, это уже не для той категории юзеров, которую вы описали хотите таргетить.
А желание иметь "классы", - это вы сами себе тогда противоречите.
Классы и вообше абстракции ООП, - были придумано исключительно чтоб народ не наступал друг другу на пятки когда больше чем один дев или чувак с короткой памятью, не способный запомнить имена функций и переменных. Иметь классы и "наследования"(которых вы не хотите) это все ягодки одного поля - ООП. И тут вы либо тянете всю кухню ООП, либо забудьте об успехе такого проекта.

> О шеллах не будем, там одних "логических операторов", эмулируемых чёрт знает из
> чего, хватит, а читабельности во всяких $чёртзнаетчто вообще никакой

Каждый раз, когда меня злит какой-то язык, я знаю 100%, что я просто его еще не понял, ну чуток практики и вся логика заложенная в язык становится понятна и проста.

Что там страшного? Там всего десяток символов запомнить что делают и все становится довольно понятно и и компактно

>  Советовать мне их подучить - это забавно, да.

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

> Правда запоздало лет на пятнадцать.

За 15 лет много чего можно забыть :)

> Как скрипт - чудовищно, почему я  давным-давно взял за принцип что-либо больше пяти строк сразу делать на  перле (ну или сейчас можно на питоне, но я к перлу  привык).

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #134 Ответы: #152

138. Сообщение от OpenEcho (?), 27-Янв-22, 11:51   +/
> то шелл то вообще awk.

А что awk? У него кстати попроще будет семантика и нет жестких ограничений с обязательными пробелами или их отсутствием как у шелов. Вы откройте мэн, язык С подобный и очень простой, но в тоже время имеет все фичи которые вы хотели.

> Для чего типизация:
> 1) для того, чтобы, открыв скрипт через два года сходу понять, что
> там вообще происходит и какую сущность куда пихают.

Даже в С, что не парится с этим, люди давно придумали префиксы:

strVar, sVar, nVar, iVar, pVar...


> 2) чтобы то же самое было понятно при открытии чужого скрипта.

Ну, да, перечитаь весь код, найти все дефайны переменых, запомнить по типам - это значительно "проще"

> 3) чтобы не было стимула костылировать "а мы сдеаем функцию, окторая умеет
> принимать десять вариантов чего попало и на них реагировать"

Это накостылят на любом языке если идиоты, так что не поинт

> 4) чтобы структурировать код - если функция принимает Book то Audiofile туда
> не запихнёшь.

Вы о чем вообще? Вы хотите ОЧЕНЬ простой ЯП, но собираетесь процесировать бинари потроха музыки?

> ...кода в той области применения, о которой я говорю (мелкие встроенные
> скрипты и мелкая автоматизация) не критично совершенно.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #135 Ответы: #151

139. Сообщение от OpenEcho (?), 27-Янв-22, 11:56   +1 +/
> Из описания:
> dynamic typing
> delegation
> classes & inheritance
> higher order functions
> generators
> cooperative threads(coroutines)
> tail recursion
> exception handling
> Вот в данном случае это всё - антифичи

Чуть выше вы хотели "классы", теперь - нет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #136 Ответы: #150

140. Сообщение от Урри (ok), 27-Янв-22, 13:18   +1 +/
> Всё же мне больше непонятно зачем его вообще нужно было изобретать.

Лично я не ходил проверять, но на аналогичные вопросы мне здесь же, на опеннете, цитировали айка, где он утверждал, что это было очень срочное и совершенно временное решение. Другими словами - быстро наг_внокодил в расчете потом переделать, но так и осталось.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #117

141. Сообщение от Урри (ok), 27-Янв-22, 13:20   +1 +/
Нахожу. Но он полностью соответствует озвученным критериям выше.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #111

142. Сообщение от Урри (ok), 27-Янв-22, 13:22   +1 +/
Хелловорлдщик Урри, по крайней мере, хелловорлды пишет. В отличие от некоторых чисто теоретиков.
Посему у него экспертиза несколько повыше будет, да.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #107

143. Сообщение от Урри (ok), 27-Янв-22, 13:25   +/
Вот и совершенно типичнейший комментарий джаваскриптера - "я не хочу учиться, я хочу чтобы само рррраз и получилось".

Вы, кстати, rust не пробовали? Там ваших коллег подавляющее большинство.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #133 Ответы: #145, #149

144. Сообщение от Урри (ok), 27-Янв-22, 13:53   +/
Какие прекрасные встроенные грабли.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #109 Ответы: #164

145. Сообщение от Аноним (20), 27-Янв-22, 14:28   –1 +/
По-существу ответить нечего. Понятно.

Добавлю что автор языка Zig бывший JavaScript-ер, это по поводу навешивания ярлыков.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #143

146. Сообщение от Урри (ok), 27-Янв-22, 18:01   +/
> Слабая типизация в js поле для бесконечных манипуляций вида засунуть ерунду в
> ерунду и получить ерунду. JS ужастный!!!111

Типичный js'ник - ноль знаний (по типизации, в данном конкретном случае) и напрочь сломаны блоки мозгов отвечающие за причинно следственные связи.

"Не волгу, а москвич; не в лотерею, а в покер; не выиграл, а проиграл." (с)


Вы путаете причину и следствие - JS объективно ужасный, и именно поэтому можно "засунуть ерунду в ерунду и получить ерунду", а не наоборот. И не "слабая типизация в js", а "идиотские правила типизации в js". Слабая типизация в пхп, например, вполне себе живет и не кашляет, не так ли? А динамическая в питончике никому не мешает.

"!!!111" (с)

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #103

147. Сообщение от Урри (ok), 27-Янв-22, 18:05   +/
Возьми лисп (а точнее scheme, ибо cl - буэ).

Учится за 10 минут (я лично объяснял синтаксис языка дошкольникам за 15 минут и они все понимали).
Никаких неожиданностей - наследований, конструкторов, явной работы с памятью, исключений и всего прочего. Хотя, при желании, все это можно и соорудить.

Даже без лямбд можно обойтись. Писать чистую императивщину.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #115

148. Сообщение от Урри (ok), 27-Янв-22, 18:07   +/
> Тебе Zig нужно попробовать.

Какой-то раст недоделанный. http://rosettacode.org/wiki/Category:Zig

```
pub fn main() !void {
    const stdout = @import("std").io.getStdOut().writer();

    var doors = [_]bool{false} ** 101;
    var pass: u8 = 1;
    var door: u8 = undefined;

    while (pass <= 100) : (pass += 1) {
        door = pass;
        while (door <= 100) : (door += pass)
            doors[door] = !doors[door];
    }

    for (doors) |open, num|
        if (open)
            try stdout.print("Door {d} is open.\n", .{num});
}
```

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #118

149. Сообщение от Газпром (?), 27-Янв-22, 19:29   –1 +/
>> *концепты владения, времени жизни, заимствований*
> Вот и совершенно типичнейший комментарий джаваскриптера - "я не хочу учиться, я хочу чтобы само рррраз и получилось".
> Вы, кстати, rust не пробовали? Там ваших коллег подавляющее большинство.

Какой объемный выброс газа! Вы молодец! Так держать!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #143

150. Сообщение от Crazy Alex (ok), 27-Янв-22, 20:22   +/
Я говорил о наследовании, а не о классах. Класс в минимальном виде - то есть структура с публичными данными и публичными же методами, которые не обладают никаким привилегиями относительно других функций,а просто сгруппированы вместе с данными - штука простая и полезная. Без наследования, конструкторов и прочих наворотов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #139 Ответы: #154, #155

151. Сообщение от Crazy Alex (ok), 27-Янв-22, 20:30   +/
Насчёт авка и шелла - сорри, но тут какое-то принципиальное непонимание. вы на моей памяти первый, кто их считает читаемыми и поддерживаемыми.

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

"Перечитать весь код" в пару экранов (а больше эти скрипты и не должны занимать) - очень сложно, конечно.

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

Типизация. 95% из которой должен дать хост в готовом виде. И типы, в силу общей примитивности всего, тоже примитивные, поэтому там и обучать нечему будет - достаточно школьного РАЯ или Паскаля.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #138 Ответы: #157

152. Сообщение от Crazy Alex (ok), 27-Янв-22, 20:44   +/
Да-да, правильно всё поняли. Вот в моём понимании всякие эмбедные язычки как вот здесь для полкита именно такими и должны быть - иначе там вс любом случае вылезет оверинжиниринг и свзяанные с ним баги.

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

Классы - смотрим на VB/VBA/1С - классы здесь - это, фактически, модули, группирующие функции и данные, связанные с общей функциональностью. Разумеется, никакого полноценного ООП. Именно для "чуваков с короткой памятью" и возможностью писать xxx.print для любого xxx.

Раздражает неконсистентность. В присовении пробел перед равно не ставь, в [] - наоборот, потому что оно скостылировано внешней командой, на пустоту проверь конкатенацией с дамми символом и так далее, не забудь всё, что можно, заключитть в кавычки... Я понимаю, почему так - но не понимаю, почему не забить на это "почему" и не сделать консистентно и удобно. Хотя бы инвертировать подход к кавычкам - то есть для сплита строки по вайтспейсу применять явный оператор, а не как сейчас. ну, то есть *  или там $1 чтобы возвращал строку вне зависимости от наличия пробелов, а если её хочешь сплитнуть - так и пишешь - ${1}:split или ещё какой синтаксис.

Перловка не помирает, а померла. Я на ней пишу потому что я её уже знаю, а советовать, разумеется, никому не стану. Питон и совместимость - это для распространения проблемно, а для домашних скриптов в рамках одной системы ни черта не ломается, чай, не на арче же сидишь, а на lts каком-то. А раз в десять лет поковырять - скорее на пользу. Да и после перехода с 2 на 3 ничего там радикального нет. Но если не нравится можно тот же js с нодой взять, разницы никакой. Речь о том, что не надо пытаться писать однострочник и проект на десять тысяч строк на одном зяыке - там требования совершенно разыне.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #137 Ответы: #158

153. Сообщение от Crazy Alex (ok), 27-Янв-22, 20:46   +/
функцию в функцию в замыкание - и в Polkit такое. А потом кто-то будет судорожно пытаться понять, что за парвила вы там накрутили. Или вы сами через пару лет будете мучительно пытаться сообразить, что это было
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #118

154. Сообщение от PnD (??), 28-Янв-22, 11:51   +/
У меня такое ощущение что Вы подгоняете решение под ответ (go).
Но в "скриптовые" языки ни go ни python не пролезают по одной очень важной причине: чтобы просто выполнить из сценария какой-то внешний бинарь, надо писа́ть едва ли не полную обвязку к execve().

В своё время там где "*sh маловато будет" был очень популярен perl. Но там не очень удобно с многопоточностью. А потом вообще "поколение пепси^W продвинутого клинского" принялось переписывать всё на python.

В общем, ПМСМ "портянки на bash" ещё долго останутся мейнстримом. Невзирая на полное отсутствие разделения кода и данных. (Вот это настоящий кошмар, а не "всё есть строка".)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #150 Ответы: #156

155. Сообщение от OpenEcho (?), 28-Янв-22, 14:37   +/
> Класс в минимальном виде - то есть структура с публичными данными и публичными же методами

Зачем такая кастрация?
Это и не нормальный ООП и не нормальный "простой" инструмент.

Классы нужны только для того, чтобы разделить большие куски кода, чтобы он не "нaезжал" именами переменных/функций друг на друга.
  И все !
Мы еще лет 30 назад такое делали в ассемблере, чтобы не мешать друг другу. Делаешь структуру, в нее пихаешь указатели и по меткам получаешь так называемые "классы", в которых указатели сгрупированны в этой одной структуре, все что относится к одному "классу".

Не нужно это все, если задача как вы ее расписали, - дебильно просто.
Зачем там классы ??? Простого фукционального програмирования более чем за глаза.
Чем больше букв, тем быстрее мозг теряет контроль над логикой(Тем более для тех, как вы сказали - новичков). Именно поэтому пытаются разбивать до "атомов" куски кода для программистов, чтобы люди концентрировались на маленьком куске кода. А если там классы, то это уже как миниум тянет на корпоративное изделие. Ведь именно для этого их и придумали, - чтобы разные группы не наступали на пятки друг другу.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #150 Ответы: #160

156. Сообщение от OpenEcho (?), 28-Янв-22, 14:54   +/
> В общем, ПМСМ "портянки на bash" ещё долго останутся мейнстримом. Невзирая на
> полное отсутствие разделения кода и данных. (Вот это настоящий кошмар, а
> не "всё есть строка".)

В одной хорошо известной конторе в европе, эту проблему решили жестко и просто:
В качестве шелла - только dash/sh (для совместимости с мэинфрэймами) а все данные - в статически скомпилированный sqlite3, а также разделили репрезентацию в отдельные файлы которые грузятся "контролером" через . (source) по нужности.  В итоге получилась довольно таки шустрая, мультиплатформенная ><реновина с MVC парадигмой и надо отдать должное, довольно таки читаемая и понятная. В итоге система перекатывается через мажорные апгрейды без всяких поломок и работает без изменений на разных никсах как часики

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #154

157. Сообщение от OpenEcho (?), 28-Янв-22, 15:08   +/
> Насчёт авка и шелла - сорри, но тут какое-то принципиальное непонимание. вы
> на моей памяти первый, кто их считает читаемыми и поддерживаемыми.

Наверное мы из разных "сословий" :)
Подучите awk и вы поймете, насколько он силен в сис-админских делах

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

Если разговор о том, что нужно разбирать чей то код, это значит вас уже более чем два, а значит договорится о одинаковом стиле либо можно либо нужно

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

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


> Типизация. 95% из которой должен дать хост в готовом виде. И типы,
> в силу общей примитивности всего, тоже примитивные, поэтому там и обучать
> нечему будет - достаточно школьного РАЯ или Паскаля.

РАЯ - а это еще что за зверь ???

Ну так вот вы и нашли солюшен !

Проблема только в том, что на 99% машин его не будет установлено, а вот даш/бэш будет гарантийно везде и его более чем предостаточно для простой автоматики (если бить по рукам или просто быть в корпоративной среде, где правильный стиль,  это -обязательно)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #151

158. Сообщение от OpenEcho (?), 28-Янв-22, 15:23   +/
> Раздражает неконсистентность. В присовении пробел перед равно не ставь, в [] -
> наоборот, потому что оно скостылировано внешней командой, на пустоту проверь конкатенацией
> с дамми символом и так далее, не забудь всё, что можно,
> заключитть в кавычки... Я понимаю, почему так - но не понимаю,

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


> Речь о том,
> что не надо пытаться писать однострочник и проект на десять тысяч
> строк на одном зяыке - там требования совершенно разыне.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #152

159. Сообщение от Annoynimous (?), 28-Янв-22, 17:57   +/
> Не. В данном случае хочется язык, на котором сложно написать нельзя. Который
> учится полностью за час (ладно - день) и после этого -
> никаких неожиданнстей - либо оно работает ровно как ожидали либо внятно
> ругается. Поэтому ничего сложнее тупого императивного стиля - никаких лямбд, никаких
> наследований, конструкторов, явной работы с памятью, исключений и всего прочего

Паскаль?

Только не "современный паскаль" в стиле Delphi/Oxygene/FPC - а "старый ламповый", как описан дедушкой Виртмм в Pascal Report 1974 года. Выкинуть указатели, добавить динамические массивы и строки, как их частный случай.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #115

160. Сообщение от Annoynimous (?), 28-Янв-22, 18:08   +/
>> Класс в минимальном виде - то есть структура с публичными данными и публичными же методами
> Зачем такая кастрация?
> Это и не нормальный ООП и не нормальный "простой" инструмент.

Ну вообще - это и не классы. Это нормальный Си или Паскаль :-D

В Си это называется struct, а в Паскале - record.
Внутрь кладём "процедурные переменные" :-)

C++, как говорят, в своих первых версиях как раз и был макро препроцессором к C

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #155 Ответы: #162

161. Сообщение от Annoynimous (?), 28-Янв-22, 18:12   +/
> По политическим причинам, а еще подозреваю из-за NIH. Вместо него породили Bash.
> Guile - диалект Lisp со всеми плюсами и минусами, но да,
> его тоже посоветую для настроек и несложных скриптов.

тогда, если guile - то ещё и nix наверное

а вокруг их использования, как "языков для настроек" уж два как-бы-линкуса накрутили, так что и proof of concept есть

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #131

162. Сообщение от OpenEcho (?), 28-Янв-22, 18:13   +/
> В Си это называется struct, а в Паскале - record.
> Внутрь кладём "процедурные переменные" :-)
> C++, как говорят, в своих первых версиях как раз и был макро
> препроцессором к C

О чем и разговор, - это просто абстракции, т.к. под капотом, ЦПУ понятия не имеет от таких заморочках

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #160

163. Сообщение от Урри (ok), 28-Янв-22, 22:20   +/
https://github.com/jashkenas/coffeescript/wiki/List-of-langu...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #98

164. Сообщение от Аноним (109), 29-Янв-22, 11:16   –1 +/
просто чтобы программировать на любом языке, нужно знать стандартную библиотеку, хотя бы минимально...
Чтобы вываливать продукты своей жизнидеятельности в комментарии, ничего знать не нужно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #144

165. Сообщение от arisu (ok), 29-Янв-22, 17:41   +/
и сразу соседняя новость: «Критическая уязвимость в PolKit, позволяющая получить root-доступ в большинстве дистрибутивов Linux». ой. как так-то?..
Ответить | Правка | Наверх | Cообщить модератору

166. Сообщение от минона (?), 30-Янв-22, 11:56   +/
(неловкая пауза) а как связаны движок джаваскрипта и json в конфигах?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #91


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру