- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
class Cat {
constructor(
public name: string) {
}
toCoolCat(coolness: number): CoolCat {
return new CoolCat(this.name, coolness);
}
}
// ...
class CoolCat extends Cat {
constructor(
name: string,
public coolness: number) {
super(name);
}
}
//...
function addCoolCat(coolness: number, cat: Cat): void {
this.coolCats.push(cat.toCoolCat(coolness);
}
//...
addCoolCat(80, {name: 'Greycat'});
Вроде TypeScript, а на самом деле NotCompletelyTypeScript.
Во время выполнения получим ошибку "cat.toCoolCat is not a function". Тем не менее, компилятор TypeScript позволяет это (а конкретно, строку 23) скомпилировать. Хотелось бы, чтобы не позволял.
wissenstein 20.12.2018 00:35 # 0
roman-kashitsyn 20.12.2018 00:56 # +2
Вообще все эти ваши тайпскрипты — жуткая дрянь, broken by design. Гораздо приятнее жс, конечно, но быть лучше жс — это слишком low bar.
У ReasonML хотя бы задумка правильная.
bootcamp_dropout 20.12.2018 02:53 # +1
Мне кажется, ты слишком узко на это смотришь. Я бы рассматривал не конкретный typescript или reasonML, а множество языков, компилируемых в js, в котором каждый может выбрать язык, соответствующий его бизнес-кейсу, или запилить свой ламповый DSL. А это замечательно.
bormand 20.12.2018 07:14 # 0
> замечательно
Юзать высокоуровневый язык с динамической типизацией в качестве ассемблера. Что может быть замечательней...
yet_another_one_shit 20.12.2018 09:47 # 0
bootcamp_dropout 20.12.2018 12:29 # 0
bormand 21.12.2018 08:17 # 0
В JS же от безысходности компилят, а не из-за каких-то его преимуществ.
guest8 22.12.2018 20:34 # −999
1024-- 20.12.2018 22:06 # 0
Имея достаточно высокоуровневый язык, можно сделать тоньше дополнительные слои абстракции, лежащие над ним.
j123123 20.12.2018 23:17 # +1
bootcamp_dropout 21.12.2018 02:07 # +1
"Посыл статьи (если отбросить C-специфичные вещи про выравнивание, неопределенные биты и тд) в том и был, что C (и все другие похожие языки) был простым языком, который напрямую ложился на реальное железо, а теперь инженеры пытаются всячески вбить новое железо (которое имеет принципиально другие допущения!) в видение мира старого языка (а разработчики компиляторов в то же время пытаются как-то приспособиться к новому железу, которое пытается выглядеть старым). Строго та же фигня происходит и с, к примеру, архитектурой ОС — до сих пор программы притворяются, что весь компьютер принадлежит им, а ОС всячески им в этом потворствует ценой приличных накладных расходов. Обратная совместимость — главное зло мира..."
https://habr.com/company/badoo/blog/420407/#comment_19013005
guest8 21.12.2018 03:57 # −999
bormand 21.12.2018 08:02 # 0
guest8 21.12.2018 13:37 # −999
j123123 21.12.2018 23:15 # 0
https://www.princeton.edu/~kung/papers_pdf/New%20Folder/Wavefront%20Array%20Procesor.pdf
https://habr.com/post/122479/
guest8 21.12.2018 13:55 # −999
guest8 22.12.2018 20:29 # −999
bormand 21.12.2018 08:43 # +3
Например, ограничив себя джвумя уровнями сигналов, ты теряешь возможность запилить тёплый ламповый звук.
Используя процессор ты теряешь контроль над гейтами и не можешь делать что-то помимо перечисленных инструкций.
Используя си ты теряешь часть инструкций процессора.
Используя жс ты теряешь структуры и указатели. Какие-то новые структуры данных помимо хешмапа уже не запилить.
Каждый новый уровень абстракции отбрасывает какие-то концепции в пользу других.
yet_another_one_shit 21.12.2018 12:47 # 0
Используя S" Forth" я ничего не теряю , именно поэтому я ничего не теряю .
1024-- 22.12.2018 19:58 # +3
Меньше вариантов выстрелить себе в ногу (вроде зашумления звука с аналоговных носителей, дребезжания сигнала с кнопок, утечек памяти).
Больше вариантов для человека выразить сложное простыми словами.
Больше вариантов оптимизации. В сраной сишке слишком много притянуто за уши. Одно неверное действие программиста порождает чёртову неоптимизируемую ссанину. Пирфоманс достигается за счёт неистового пердолинга программиста, иначе свобода по стандарту в руках компилятора. Код получается быстрый, но с UB. В сраной сишке можно соптимизировать код только с одного уровня абстракции, и это теоретический максимум. В ЯВУ компилятор может оптимизировать код как хочет, работая на всех уровнях абстракции сразу.
Мастеру(*) гораздо проще реализовать "сделайте нам хорошо"(1), чем подробное задание на 100 страниц(2). Мастер знает, как нужно делать, чтобы было хорошо. Юристы заказчика формализуют нерабочую идею и связывают мастеру руки, на выходе имеем только говно. То же в случае ЯВУ(1)/ЯНУ(2) и оптимизатора(*).
Человек туп и тормознут. Опыт группы людей можно закачать в оптимизатор. Вместо 16 лет просиживания в школе и вузе (умножаем на количество программистов) можно потратить несколько минут на копирование оптимизатора. Оптимизатор работает круглосуточно и не устаёт.
Достаточно один раз автоматизировать процесс, сделать оптимизатор и всем пользоваться им, чем всем делать одни и те же потуги в сторону оптимизации.
И вишенка на торте: низкоуровневое говно настолько просто, что выражается через высокоуровневые абстракции. Присваивание легко запиливается через монады, любые байты и указатели - через объекты JS. А оптимизатор анализирует и сразу генерирует низкоуровневую питушню, эквивалентную написанному. Таким образом, высокоуровневая питушня позволяет реализовывать объекты с любых нижележащих уровней абстракции.
guest8 22.12.2018 20:03 # −999
1024-- 22.12.2018 20:33 # 0
Вкратце: божественная высокоуровневая абстракция позволяет эмулировать низкоуровневое говно, а оптимизатор делает эквивалентные преобразования, чтобы пирфоманс не просаживать.
> На машине тюринга можно сделать всё, что угодно (просто займет безумное количество времени). А на HTML нет.
На любом тьюринг-полном языке тоже ничего нельзя сделать. Потому, что машина Тюьринга что-то считает, а языки вроде HTML или C ничего не считают, только описывают какие-то факты/утверждения/прочую информацию.
Чем не тьюринг-полный брейнфак?
guest8 22.12.2018 20:38 # −999
1024-- 22.12.2018 21:04 # +1
Да! Я имею удобный и выразительный высокоуровневый язык. Могу писать программы прямо на нём, могу написать простой транслятор в него из менее удобного и высокоуровневого языка.
Как я говорил, транслятор будет тоньше. Нет дублирования кода компилятора и оптимизатора.
Вариант с ВМ + языками: ВМ простая, компиляторы и оптимизаторы толстые и содержат много логики. Каждый новый язык должен напердоливать свои std.lib. и оптимизатор.
Вариант с ЯВУ + компиляцией в ЯВУ: ВМ сложная, компилятор и оптимизатор сложный, но один. Трансляторы из других языков очень простые. Каждый новый язык может создать даже тупой школьник без потери изящности std.lib. и пирфоманса.
> В приведенном тобой примере HTML ничуть не выше уровнем чем то, что ты пытаешься на нем изобразить.
Я могу взять JS, пройтись по DOM и сгенерировать код в brainfuck. А могу просто оставить HTML+JS и написать сложное приложение.
На brainfuck очень долго придётся писать код, который символизирует HTML.
>>только описывают какие-то факты/утверждения/прочую информацию.
>Нет. Они описывают поведение машины. Во всяком случае императивные
Описание чего-либо - это уже не информация? Это информация о последовательности действий.
Более того, в условиях работы оптимизатора любой язык становится декларативным. Язык декларирует какие-то операции на абстрактной машине, а как их конкретно выполнять и какой алгоритм для их вычисления использовать - выбирает компилятор.
guest8 22.12.2018 21:35 # −999
1024-- 22.12.2018 21:58 # 0
Ну а кого интересует общий случай?
В общем случае
* Большинство программ (бесконечность против единицы) выполняется за бесконечное время
* Количество задач - континуально, а количество программ - счётная бесконечность
И прочая дурь в этом роде.
На то человек - существо с зачатками разума, чтобы отсеять откровенно говённые языки и создать адекватные.
> А так же там есть GC (или какой-то другой способ не управлять памятью) и нет ручных указателей
Ну и где я такой язык возьму? Тот же JS компилируется и JITится, внутри использует указатели, может выкомпилить нафиг вызовы GC и создание объектов в куче, может делать массивы - иммутабельными, слайсы хреначить как копии или как ссылки, а строки - мутабельными.
Почему Вы считаете, что когда у нас есть ЯВУ, все предыдущие уровни абстракции исчезают нафиг? JS исполняется на той же машине, на которой работает ассемблер.
Я задаю код, эмулирующий B-Tree LRU (tm) (c) (r), а он эквивалентными преобразованиями доводится до того машинного кода, который вылез бы из компилятора сишки.
guest8 22.12.2018 22:01 # −999
bormand 22.12.2018 22:05 # 0
Так же, как сейчас понимает "структуры" - по паттерну. Само собой, разрабы движка JS должны предусмотреть такой паттерн. Обычная дыра между слоями абстракции.
guest8 22.12.2018 22:06 # −999
bormand 22.12.2018 22:18 # 0
В сишке ты тоже пишешь (x << 5) | (x >> 27) чтобы получить rol. Да и в HDL все эти триггеры да блоки памяти выводятся по паттернам. Технологические отверстия в абстракциях везде есть :)
1024-- 22.12.2018 22:26 # 0
Помните статью на хабре как раз про паттерны проектирования. О том, что программисты учат паттерны проектирования, чтобы потом написать в своём коде понятный другим посыл, либо чтобы считать этот посыл из чужого кода.
У мясного программиста всё то же самое, только пока работает его паттерн-матчинг гибче машины (хотя, от этой гибкости есть ложные срабатывания).
Это для понимания чужого. Для написания своих программ программист должен надрочить какой-то набор алгоритмов, и писать код в их терминах, либо в терминах их линейной кобенации.
Таким образом, обычный программист, знающий алгоритмы, и программист из мира гостя8-Борманда, знающий паттерны оптимизатора - тот же самый человек, только второй пишет свой код быстрее. Но это всё говно примерно одного порядка.
Нормальный язык+компилятор должны брать на вход произвольную идею и преобразовывать её в быстрый код. Эволюция языков программирования идёт по схеме "ассемблер - сишка - жс - умный ЯВУ - питух, понимающий команды". Соответственно, крутость языков надо мерить их незашоренностью и гибкостью распознавания паттернов.
1024-- 22.12.2018 22:28 # 0
Компилятор в первых версиях тупо транслирует код. Потом он учится оптимизировать, распознавать паттерны, потом кобенации паттернов, потом вычленять свои паттерны из естественного языка (т.е. работать математиком-алгоритмистом).
guest8 22.12.2018 23:19 # −999
1024-- 22.12.2018 23:23 # 0
guest8 23.12.2018 01:50 # −999
guest8 23.12.2018 02:20 # −999
guest8 23.12.2018 03:59 # −999
1024-- 23.12.2018 14:11 # 0
1024-- 22.12.2018 22:11 # 0
Многая низкоуровневая питушня и на C не выражается.
Если учесть, что ЯПы сделали для общения не только с компьютером, но и между программистами, то можно вспомнить, что очень много алгоритмов требуют использования конструкции языка "комментарий", иначе читатель ничего не поймёт.
guest8 22.12.2018 22:12 # −999
guest8 22.12.2018 22:15 # −999
1024-- 22.12.2018 22:35 # +1
Нет, не только в вебе, это во всём программировании.
И только в программировании сложилась больная ситуация когда все обязаны комппилироваться в ТЗ (да еще и без непротиворечивого естественного языка!!!) и потом бедный программист вилкой должен искать какие-то паттерны и понять что хотел сказатьт заказчик.
Я же говорю, что человек слаб и любит велосипеды и вавилонские башни. Если не сконцентрировать свои усилия на умном компиляторе ЯВУ, будут быстрые ЯНУ и медленные ЯВУ, а вместе с этим - дорогие программисты и пердолинг при написании программ.
Кто бы пилил оптимизации для говножс, если б в браузерах была ВМ и цари с сишкой?
bormand 22.12.2018 22:37 # 0
Пилили бы оптимизации для ВМ, как это делалось во всяких там JVM и .NET. И весьма неплохо делалось.
1024-- 22.12.2018 22:48 # 0
Конпелятор был настолько ленивый, что его нельзя было заставить делить инты как инты без перехода во флоаты. Вроде даже явное указание типов от этого не уберегало. В итоге пошёл на C#.
То есть они сделали, чтобы C# летал, а всё остальное - как выйдет.
Более, чем уверен, что JS в той же ситуации остаётся в интах.
Нет, на практике нужен один ЯВУ, иначе никто не пошевелится, и ЯВУ будут тормозить.
1024-- 22.12.2018 22:50 # 0
ЯВУ тормозят. На них не пишут серьёзный код потому, что тормозят. ЯВУ не оптимизируют потому, что пользователей с серьёзным кодом мало.
guest8 22.12.2018 23:16 # −999
1024-- 22.12.2018 23:19 # 0
Потому, что у них слабая и динамическая типизации - опциональны (слабую типизацию и вовсе надо самому делать), а также много синтаксиальной психозы для выражения разных питушней (вплоть до выбора передачи по ссылке/значению), которую лучше понимает более простой оптимизатор?
Morgoth 23.12.2018 06:44 # 0
А хочешь —– бери S" Forth" и делай что хочешь со своим мозгом
1024-- 22.12.2018 22:30 # 0
> причем тут это, лол?:)
Это к тому, что программисту тоже нужны подсказки как оптимизатору, а язык в явном виде не представляет всех абстракций.
bormand 22.12.2018 22:16 # 0
Ты же от них сам сознательно абстрагировался, бака. И в этом нет ничего плохого, своё подмножество задач жс действительно решает проще и безопаснее.
И чтобы выразить какие-то концепции за пределами этого подмножества и расширить его ты добавляешь в интерпретатор JS новые паттерны, системные функции или языковые конструкции. Но вот выразить эти концепции на самом JS не изменяя интерпретатор невозможно.
1024-- 22.12.2018 22:41 # 0
Я абстрагируюсь и накидываю код в виде идей (объясняю их на текущем уровне развития компилятора: для сишки - на уровне указателей, для жс - на уровне ФВП), а автоматика делает за меня всю чёрную работу.
В этом и смысл абстракций - чтобы что-то сложное выразить через простое и не копаться в говне вручную.
В этом суть программирования и любой наёмной работы
Я абстрагируюсь и накидываю ТЗ в виде идей (объясняю их на текущем уровне развития программиста: для ребёнка - в терминах переменных и функций, для взрослых - UML-диаграмм и архитектуры), а программист делает за меня всю чёрную работу.
В этом и смысл наёмного работника - чтобы что-то сложное высказать через простое задания и не выполнять работу самому.
bormand 22.12.2018 20:24 # 0
1024-- 22.12.2018 20:37 # 0
Вкратце: божественная высокоуровневая абстракция позволяет эмулировать низкоуровневое говно, а оптимизатор делает эквивалентные преобразования, чтобы пирфоманс не просаживать.
guest8 22.12.2018 20:44 # −999
1024-- 22.12.2018 21:13 # +1
Если нужно, его, как и всё остальное можно формализовать за бесконечное время.
Берём весь набор реально существующих программ. Измеряем количество энергии (ватт, рублей, евро, пива), потраченной на их создание. Находим или пишем аналоги на недостающих языках (если было на низкоуровневом - пишем/находим аналог на высокоуровнемом, и наоборот), смотрим соотношения энергии.
Получаем коэффициент k = E_высоко / (E_высоко + E_низко)
Чем ближе к нулю, тем удобнее на практике высокоуровневая питушня.
gost 23.12.2018 00:03 # +1
Так происходит в мире разноцветных пони. А в нашей серой и унылой реальности эвристический оптимизатор обречён периодически проёбываться, генерируя тормозящую питушню. А на сладкое — программист на божественном ЯВУ не имеет никакой возможности узнать, почему же его божественные абстракции тормозят: то ли комп плохой, то ли оптимизатор проебался, то ли алгоритм принципиально неоптимизируемый. Полагаться на какие-то недокументированные мега-оптимизации — примерно то же самое, что писать на «C» с UB.
guest8 22.12.2018 20:53 # −999
guest8 22.12.2018 20:56 # −999
guest8 22.12.2018 20:59 # −999
bormand 21.12.2018 09:14 # +1
Но если ты возьмешь просто вазу (аля высокоуровневый язык), то вместо няшки у тебя будет в лучшем случае ее унылая глиняная эмуляция.
1024-- 22.12.2018 20:02 # 0
Когда будешь пользоваться ей, придёт жид и выточит из неё няшку, которая будет меньше парить мозг, чем созданная вручную.
bormand 21.12.2018 09:22 # −1
guest8 21.12.2018 18:55 # −999
bormand 21.12.2018 19:50 # 0
1024-- 22.12.2018 20:09 # 0
Здесь программист вышел из положения подчинённого.
Здесь программист - не раб UBожий, а сам себе Соломон.
Здесь с кодом пердолится конпелятор, а не программист.
Человек творит, машина возится с рутиной.
1024-- 22.12.2018 20:14 # +1
guest8 22.12.2018 20:16 # −999
1024-- 22.12.2018 20:46 # 0
Я же говорю, что при такой возможности выбора народ из-за лени и нехватки времени сэкономит на ЯВУ. Будет быстрая сишка и медленные питоны.
Сейчас JS вынужден быть быстрым при работе с кодом на JS. Либо генеришь быстрый код, либо выбрасываешь движок. Параллельно прикручивают всякие asm.js, чтобы низкоуровневые питухи тоже были быстрыми. И высокий, и низкий уровень работает быстро.
С ВМ быстрой будет только работа с ВМ, оптимизации лягут на плечи компиляторов разных языков, которые не допилят. Человеки в условиях свободы выбора пилят 100500 разных уникальных недоделанных языков, пакетов для луникса и прочих программ вместо того, чтобы вкладываться во что-то одно хорошее.
Здесь Боженька не стал делать как в случае Вавилонской башни, а наоборот дал возможность всем собраться и разогнать высокоабстрактную питушню. Всем вместе сделать что-то одно хорошо.
guest8 22.12.2018 20:50 # −999
1024-- 22.12.2018 21:26 # 0
> А критичные вещи писали бы Отцы На Сях, и делали бы API для JS.
Конечно, это заманчиво для Отцов на Сосях, но подход в общем случае говённый.
Те 10% кода составят то, что работает 90% времени :)
В итоге
* Программист становится незаменимым, проекты зависят от дорогих специалистов
* Качество программы зависит от знаний и опыта мелкой группы людей (вместо зависимости от всего опыта программистов)
* Знания надо передавать из поколения в поколение в ненадёжных плохостардартизуемых мясных мешках, подверженным ошибкой
Конечно, можно понять, что вы хотите получать деньги за пердолинг с компьютером и не хотите, чтобы роботы отбирали ваш хлеб. Но давайте мыслить шире и автоматизировать процессы.
С точки зрения принципов программирования (декомпозиция, дублирование кода, упрощение интерфейсов) текущее программирование -- говно.
Вполне себе можно сделать ЯВУ, в котором можно подсказывать конпелятору. Хотя, это тупик.
GCC же вроде уже не слушает inline, ему надо писать ((inline)). Потому, что он уже умнее программистов, которые 20 лет назад писали inline. Когда GCC ещё больше поумнеет, он и ((inline)) будет игнорировать, чтобы баги скудоумия мясных программистов как-то обойти. Тогда труъ программисты будут писать ((((definitely inline)))), что будет значить "да, я точно-точно хочу заинлайнить, здесь прямо сильно надо, и это случай особый, тут я точно умнее тех, кто писал inline, кто писал ((inline)), и умнее конпелятора.
Групповой разум в лице конпелятора эволюционирует быстрее, чем мясной программист, и лучше закрепляет знания. Чем лучше его написали, тем меньше нужны подсказки.
guest8 22.12.2018 21:32 # −999
1024-- 22.12.2018 21:49 # 0
А какие быстрые ЯВУ уровня JS есть, кроме Lua?
> Какой программист и почему он незаменим?
Низкоуровневый питушок. Потому, что без него не тормозит.
А имея хороший оптимизатор, я могу нанять любого человека вместо отца-сишкопинателя, и он мне напишет код как отец-сишкопинатель.
> Зато вы хотите найти рациональное объяснение безграмотности
Ну а что, развивать мясных программистов - это тупик. Они долго учатся, рано начинают тупить и просить зарплату, быстро умирают.
Объясняю: программист - это переводчик с человечьего на компьютерный, не более того.
Начальнику достаточно сказать "строим дом", и строительство начинается. Хорошим работникам не нужны подсказки, они как специалисты сделают всё как надо.
Почему тогда в программировании мы не говорим "строим дом", а пишем длинную программу? Это неудобно, дорого и глупо. Фактически программист должен просто приказать "строить дом", и машина должна строить дом.
> gmail грузится 20 секунд на машине, которая в 100000 раз мощнее той, что отправляла человека на луну
Переходный период. Пока оптимизаторы не так сильно развиты.
> Без подсказок однако не будет никакой оптимизации.
Будет. И даже лучше, чем с подсказками.
Потому, что подсказки - это по сути второй слой кода.
Сначала человек в коде подсказывает, что будет квадратичный алгоритм вместо линейного, потом - что здесь всё влезет в стек (а в реальной программе не влезает).
> Если программист даже связанный список выразить не может, о какой оптмизиации может идти речь?
Напомните, в каких задачах нужно выражать связанный список, кроме лабы про связанный список?
Ни разу не слышал, чтобы где-то понадобился связанный список в чистом виде. Это только лишь деталь реализации, рудимент из низкоуровневых языков.
Мясного программиста нельзя допускать к структурам данных. Решать, какие структуры и как использовать, должен автомат.
bormand 22.12.2018 21:56 # +1
А зачем тогда добавляют всё новые и новые подсказки? Плотные массивы, тайпхинтинг аля asm.js, кучу неписанных правил в духе "если заполнить все поля в конструкторе и не добавлять новых то получится почти сишная структура"...
1024-- 22.12.2018 22:13 # 0
Подсказки - это питушня, которая входит в язык. Отслеживание оптимизатором кода по паттернам ничем не отличается от отслеживания подсказок (в математическом смысле)
bormand 22.12.2018 22:20 # 0
Т.е. он за эти годы стал хуже и ещё дальше от твоей цели? Ведь раньше этих подсказок не было.
1024-- 22.12.2018 22:43 # 0
Как Вы вообще работаете? Заказчик/шеф говорит "сделай так", а Вы придираетесь к запятой, делаете формально верное говно и как-то избегаете увольнения/судов?
Раньше не было ни подсказок, ни эффективной оптимизации. Программисту приходилось пердолиться вручную.
А когда оптимизатор в зачаточном состоянии, подсказывать некому.
guest8 22.12.2018 21:57 # −999
1024-- 22.12.2018 22:19 # 0
Я уже говорил об этом несколько месяцев назад, даже формализовал.
Измеряем время работы реальных программ на реальных задачах на реальных языках, интегральные значения сравниваем.
> Тебя Сёма укусил?
Нет. Но Сёма нередко бывает прав.
Программист прозябает на каком-то своём уровне представления мира. И объясняет важность чего-либо исходя из своего желания пердолиться с этим.
Низкопитушок будет втирать всем о пользе и незаменимости указателей и бесполезности гц. Высокопитушок - наоборот. Аргументы есть и за то, и за то.
Тем, кто называет себя "труъ-программистом" обычно интересна вся эта питушня-спискушня, но у программиста-профессионала задачи стоят в терминах предметной области, и если ЯП работает в терминах предметной области, низкоуровневой спискушни в программе не будет.
guest8 23.12.2018 16:43 # −999
1024-- 23.12.2018 18:43 # 0
У меня комплекс.
Злые сишники говорят, что я не знаю указатели, стек и кучу (на самом деле, я знаю, как ими можно пользоваться, хотя во всяких колл-конвеншенах и алгоритмах аллокации не разбираюсь).
Злые жабоскриптеры говорят, что я не знаю новые фреймворки и модные говноинструменты (я их не знаю и изучать новое говно, чтобы не использовать забыть через год, не намерен; изучаю только то, что нужно сейчас для работы).
Злые алгоритмисты говорят, что я не знаю алгоритмы и символику оценки трудоёмкости (алгоритмы сложнее сортировки пузырьков я действительно не знаю, т.к. сами по себе они мне не интересны, а для работы бывают нужны только малая рандомная часть, которую никак нельзя заранее угадать и изучить - проще достать один конкретный алгоритм с полки, когда он понадобится, а про то, что я не знаю символику асимптотических оценок - они врут).
Злые труъ программисты говорят, что я не знаю низкий уровень (в гробу я видал этот пердолинг с битами, когда у меня есть лямбды и ФВП).
Злые функци ональщики говорят, что я не знаю *-морфизмы, монады, линзы и призмы (я действительно львиную доли этих математических терминов и их применения не знаю, и ума и желания понять их у меня не будет).
Потом набигают злые банкиры, токари, слесари, врачи, гуманитарии и говорят, что я не знаю их элементарной питушни, которую должен знать каждый сука человек.
И всё, я становлюсь как побитовый жизнью Сёма, который всегда недоволен.
1024-- 23.12.2018 18:43 # 0
Я хочу, чтобы на высоких уровнях абстракции пирфоманс не сливался.
* У нас есть куча научных применений, для которых отцы-математики и прочие учёные придумали алгоритмы на языке математики. И здесь нужны параллельно пирфоманс и ясность кода. Хорошо бы, если код мог написать сам учёный на языке математики, поскольку программист точно где-то ошибётся в процессе перевода. Конпелятор должен знать математику и выдавать вразумительные предупреждения.
* У нас есть куча мест, где дают предпочтение красивости интерфейса и частоте выхода новых говнофич. И здесь нужна какая-то почти бесплатная питушня, позволяющая оптимизировать всё это говно, чтобы фиче- и красивостеориентированный код не был таким говном.
Короче говоря, у нас есть куча задач и мало времени, есть технологии, экономящие наше время и тратящие время клиента. Высокий уровень должен летать.
guest8 24.12.2018 00:25 # −999
Morgoth 23.12.2018 06:37 # +1
что-то я не знаю таких оптимизаторов которые могут ужать код ОС с графическим интерфейсом так, чтобы он в сумме с несколькими программами и игрушками занимал мегабайт с небольшим, а запуск самой ОС и программ не приходилось бы долго ждать. (Сишка тут тоже сосёт, на ней я самое маленькое видел 8 Мб луникс (версия SliTaz без гуёв))
guest8 23.12.2018 12:27 # −999
bormand 23.12.2018 12:46 # 0
Когда я это видел - уже на джве. На первой ядро, на второй /.
guest8 23.12.2018 12:50 # −999
guest8 23.12.2018 16:39 # −999
guest8 23.12.2018 16:37 # −999
1024-- 23.12.2018 14:25 # 0
Давайте сравним, сколько стоит подготовка среднего программиста с тем, сколько стоило вложить в современный V8 логику уровня среднего программиста (нормируя на количество программ, написанных программистом и V8). Вот когда обычные программисты станут дешевле V8, тогда и посмотрим.
guest8 23.12.2018 16:40 # −999
guest8 23.12.2018 16:39 # −999
Morgoth 23.12.2018 17:01 # 0
Я не могу... вы провоцируете меня на изобретение машины времени... хочу туда!
guest8 23.12.2018 17:07 # −999
bormand 23.12.2018 17:09 # 0
Купи какой-нибудь контроллер с cortex-m0 и играйся. Меньше бакса стоит. 44 килобайта не войдёт.
bormand 23.12.2018 17:22 # 0
Morgoth 23.12.2018 18:19 # 0
Смотря какую, для доса я умещал где-то в 3.6 Кб (это уже с определяющими словами и управляющими коньструкциями, когда я только-только заставил работать репл она была килобайт с небольшим, расширять можно было только с помощью ",", "C,", "!" и "C!" ;)), но она была нестандартная и в статьях даже не было поля кода, считалось что код шёл сразу за ней. (ещё видал форт-систему в 512 байт, но в ней был лишь адресный интрепретатор и несколько определений)
Я как-то смотрел разные армы, среди них есть очень дешёвые, но я пока что не смог определится с выбором.
bormand 23.12.2018 18:54 # 0
ARM'овские контроллеры не особо приятны для пайки, в отличие от AVR. Даже у STM32F030K6, на котором я делал клаву, корпус с шагом 0.8мм. А это один из самых простых чипов...
Поэтому бери рандомную отладочную плату на STM32 и программатор к ней. В пять баксов можно уложиться за весь комплект.
Или что-нибудь из серии stm32 discovery, если денег не жалко. Там есть охуенная няшка с дисплеем, usb и встроенным программатором.
guest8 23.12.2018 20:24 # −999
Morgoth 23.12.2018 21:36 # 0
Не знаю PostScript. Фишка Forth'а в расширяемости, а насколько расширяем PostScript?
bormand 24.12.2018 19:42 # 0
Вот такая няша сегодня приехала: https://i.imgur.com/ryVmtyu.jpg
32-битный ARM на 72MHz, 64KB флешки, 20KB оперативки, Micro-USB (только как девайс). Для форт-машины тебе хватит с запасом, имхо. И ещё джва бакса из пяти останутся на программатор.
blackray 25.12.2018 03:08 # 0
guest8 25.12.2018 03:13 # −999
bormand 25.12.2018 08:18 # 0
Xyu_HE_3HAET 25.12.2018 12:15 # 0
Morgoth 25.12.2018 12:29 # 0
guest8 25.12.2018 13:03 # −999
Morgoth 25.12.2018 13:23 # 0
Я купил за 67900 донг.
Morgoth 25.12.2018 10:21 # +1
Эх, ARM'яша только в январе приедет :(. Пока читну доки.
bormand 25.12.2018 11:03 # 0
Она осьмибитная, поэтому так мало.
bormand 25.12.2018 11:23 # 0
Доку по чипу, доку по семейству, доку по ядру... Эх, для avr всё в одной помещалось.
Ты главное либы не юзай, напрямую в порты писать на этих армах на порядок веселее.
Morgoth 25.12.2018 12:30 # 0
я на Forth хочу всё писать.
3.14159265 23.06.2020 02:49 # 0
На Форте кодить,
И в порты писать.
1024-- 22.12.2018 21:34 # 0
Тут и работа отцам-сишкователям будет, где они эффективно себя проявят. И остальные программисты будут более эффективными, работая на быстрых ЯВУ без пердолинга с байтами, памятью, подсказками ко-ко-компилятору.
guest8 22.12.2018 21:37 # −999
3.14159265 23.06.2020 02:50 # 0
По-моему это ISO C++ Committee.
roman-kashitsyn 22.12.2018 21:34 # +3
guest8 22.12.2018 21:37 # −999
1024-- 22.12.2018 22:06 # 0
Единственный недостаток SQL - что человек оказался умнее. И недостаток этот решаем. Умный человек может научить глупый SQL быть быстрее. Вот если бы было наоборот - тогда да, тупик.
Но мы же видим развитие технологий. Какие крутые оптимизации делают GCC и V8, какие продвинутые программы загружены в современные смартфоны.
Если вместо SQL не придумают что-то другое, через некоторое время он выполнит свои обещания.
bormand 23.12.2018 12:58 # +2
Замечательный пример - смотрелка смсок, которая лагала от сраных 200-300 записей на гигагерцовом проце и гигабайте памяти...
1024-- 23.12.2018 14:30 # 0
* Личный почтальон и курьер
* Личный фотограф и художник
* Личный диджей и киношник
* Личный фитнес-центр
Смартфон научился распознавать лица, облагораживать фотографии, распознавать речь и прочее, прочее, прочее. Он уже умён, наверно, как трёх-пятилетний ребёнок.
> смотрелка смсок, которая лагала от сраных 200-300 записей на гигагерцовом проце и гигабайте памяти...
А как будет лагать трёх-пятилетний рёбенок, если его просить читать 200-300 записей, а?
guest8 23.12.2018 14:40 # −999
guest8 23.12.2018 14:44 # −999
1024-- 23.12.2018 16:22 # 0
guest8 23.12.2018 20:19 # −999
1024-- 23.12.2018 21:50 # 0
И смартфон что-то из перечисленного умеет или начинает уметь.
bormand 23.12.2018 15:11 # +1
Morgoth 23.12.2018 15:15 # 0
1024-- 23.12.2018 15:55 # 0
Большому брату вообще не выгодно, когда все ресурсы займёт браузер с говноскриптами, и сматрфон от этого быстро разряжается и перестаёт следить.
guest8 23.12.2018 16:04 # −999
Morgoth 23.12.2018 16:33 # +2
А как будет лагать трёх-пятилетний ребёнок, если у него вместо мозга будет гигагерцовый проц и гигобайт памяти.
fixed
guest8 23.12.2018 17:22 # −999
bormand 23.12.2018 17:33 # 0
guest8 23.12.2018 17:54 # −999
1024-- 23.12.2018 19:05 # 0
В общем-то, я этот сайт понимаю как место для отдыха программистов. И, соответственно, позволяю себя поразмышлять о высоких материях, поучаствовать в философских дискуссиях. Так можно посмотреть на ситуацию со стороны, проанализировать её с учётом новых фактов и установок.
Философия и прочая с виду бесполезная питушня всё время протекает через нашу жизнь. Это и размышления на досуге, и маркетинговые цели, ценности компаний, и идеологические мотивы, и изучение философии в вузе. В человека впрыскивают твёрдую психозу на более широкую тему, чтобы он в мыслях над ней входил в светлое будущее.
guest8 23.12.2018 17:24 # −999
bormand 23.12.2018 17:26 # +1
Ну тут онлайновое на порядок круче - видно где именно едет автобус.
> оффлайновых карт
2гис. В ваших краях видимо не популярно, но карты у них очень годные.
guest8 23.12.2018 17:52 # −999
bormand 23.12.2018 17:59 # 0
Но они походу хотят годное покрытие десятка городов чем хуёвое но всех. Поэтому там даже рашка далеко не вся.
Еще в оффлайне неплохо работали проги на основе openstreetmap. Но там качество мап сильно зависит от добровольцев.
1024-- 23.12.2018 18:04 # 0
Кстати, полезная питушня. Есть наверно весь мир, только удобство использования на практике по сравнению с 2гис хуже.
bormand 23.12.2018 18:08 # 0
guest8 23.12.2018 18:09 # −999
bormand 23.12.2018 18:10 # 0
Да. Ты же ёбнешься спутниковые на телефон заливать. Разве что деревню какую-нибудь.
guest8 23.12.2018 18:17 # −999
1024-- 23.12.2018 18:50 # 0
Векторные гипертекстовые карты хороши, но спутниковые всё равно милее. На них всё видно без условностей и явных потуг создателей карт задокументировать объекты.
roman-kashitsyn 23.12.2018 20:41 # 0
У Я есть Народная Карта. Любой может пойти и нарисовать свою деревню, после апрува иксперитов она будет на глагне.
1024-- 23.12.2018 21:53 # 0
Кстати, оффлайн версия спутника ещё жива?
guest8 23.12.2018 22:26 # −999
roman-kashitsyn 24.12.2018 13:35 # 0
Аппрув нужен чтобы правки из народных карт попадали в основную.https://mapeditor.yandex.com
HoBorogHuu_nemyx 16.01.2019 14:48 # 0
Введи в поиск на гуглокарте: «детский крематорий».
cmepmop 16.01.2019 18:42 # 0
1024-- 16.01.2019 21:16 # 0
Какие-то юмористы обнаружили возможность переименования там произвольной питушни и решили пошалить.
> детские крематории
Их построили до или после школ имени Рикардо Милоса?
P.S. Со стороны школ был выдвинут отряд специалистов-переименовальщиков:
Специалисты вновь переименуют на Google-картах школу №12 в Таганроге Ростовской области, которую шутники обозвали в честь бразильского стиптизера Рикардо Милоса, рассказал директор школы Павел Олейников
gueest8 16.01.2019 23:16 # 0
Я бы на их месте все школы переименовал в гимназии имени Саши Грей
HoBorogHuu_nemyx 17.01.2019 03:10 # +1
guest8 23.12.2018 21:00 # −999
1024-- 23.12.2018 18:03 # 0
> Карты гермашки
У разных стран разные требования. В России транспорт применяет квантовые технологии, а в квантовом мире живёт истинная случайность, оффлайновое расписание бесполезно.
> Карты гермашки там есть?
Есть несколько карт мест вне России (в которые ездят в отпуск разработчики? потому, что выбраны какие-то особые города).
> Им в оффлайне пользоваться реально?
Реально, но пробки не показываются.
guest8 23.12.2018 18:08 # −999
1024-- 23.12.2018 18:55 # 0
Карты векторные. А с каждым обновлением всё больше тормозят, это да.
Надо уже отдельный картотред создавать. Интересно узнать, что на практике удобно использовать как оффлайн карты (а) в глуши в конкретной стране и (б) в мире в целом.
guest8 23.12.2018 19:06 # −999
gost 23.12.2018 20:58 # 0
Есть RMaps. Оно, правда, лет пять назад померло, но зато не страдает Джээстянкой и быстро работает даже на древних телефонах. И выполнено в этаком «Unix way»: умеет мало, зато то, что умеет, делает отлично.
guest8 23.12.2018 16:49 # −999
bormand 23.12.2018 16:59 # 0
guest8 23.12.2018 17:04 # −999
3.14159265 23.06.2020 02:55 # 0
Боюсь такими темпами лет через 20 даже тогдашний vim++ будет работать хуже этой смотрелки.
https://govnokod.ru/26750#comment555277
roman-kashitsyn 23.12.2018 14:45 # +3
В современные телефоны загружено унылое раздутое говно, которое жрёт ресурсы впустую. Вот тебе яркий пример: Эти макаки написали столько говна, что загрузчик ВМ не хотел его грузить. В итоге они хакнули загрузчик. Самое печальное, что они этим гордятся.
К слову, у меня в телефоне с 4 ядрами и 3 Гб оперативы у Anki иногда уходит до 30 сек, чтобы загрузить с диска и отобразить несколько десятков байт html.
guest8 23.12.2018 14:53 # −999
T0PT 23.12.2018 14:57 # 0
bormand 23.12.2018 15:12 # +2
Забавно смотреть, как тот же hearthstone раньше без проблем летал на iPad 2, а теперь он на нём даже запуститься толком не может. Хотя визуально разницы нет. Как была карточная игра с простыми анимациями, так и осталась.
Чему-чему, а утилизации ресурсов мобильные программисты научились.
Morgoth 23.12.2018 15:21 # 0
roman-kashitsyn 23.12.2018 15:27 # 0
Утинизации: девайс еле ходит и крякает под нагрузкой.
Morgoth 23.12.2018 15:29 # 0
guest8 23.12.2018 15:30 # −999
Morgoth 23.12.2018 15:46 # 0
CHayT 23.12.2018 16:04 # +1
> Заменяешь на F-Droid
> Прилетает корпоративное обновление политики, запрещающее устанавливать новые приложения не из Gulag Spy Store
> Не унываем, т.к. termux-то остался
1024-- 23.12.2018 16:19 # 0
Если так рассуждать про программирование, то у нас есть только тупые тормознутые IDE, а никаких продвинутых GCC и V8 на их фоне просто нет.
Телефоны распознают речь, лица, могут убрать фон вокруг лица, поменять лица местами или вовсе заменить лицо на произвольную картинку, которая будет демонстрировать на себе работу мышц лица снимаемого.
3.14159265 23.06.2020 03:00 # +1
Да, отправляют по 4G-сети в облако. Там сверхмощный комп всё распознает и отправит обратно. А заодно каждое слово заскладируется в цифровом Гулаге.
>могут убрать фон вокруг лица, поменять лица местами или вовсе заменить лицо на произвольную картинку
Ну охуеть теперь. Мы же понимаем что заслуга не быдлокодеров, а покорителей нанометров, создателей мощных GPU с терафлопсами мощи и миллиардами транзисторов.
Тем более что лица распознаёт даже не программа, а надроченная нейронная сеть.
А человек до конца и не понимает как это работает.
Классического императивного алгоритма для распознавания лиц нет.
3.14159265 23.06.2020 03:08 # +1
Яббл и гугл засадили хипстерасам в жопу анальный зонд, а счастливые рабы кричат ещё! ещё! и только сильнее вылизывают копрорациям жопу. Больше сири, инстаграмов, сканнеров отпечатков пальцев, «окей гугл, еби меня крепко зондом».
Восторгается этим просто бездарная опущенная мразь вроде хабраотбросов.
>дивный новый мир
Термин изначально использовался Хаксли в саркастичном ключе.
Ничего хорошего для отравленных пропагандой масс это не несёт.
KOPOHABuPYC 23.06.2020 03:14 # 0
1024-- 15.11.2020 13:52 # 0
> Классического императивного алгоритма для распознавания лиц нет.
Кого это волнует, кроме безопасников на самых защищённых объектах?
Код работает? Выполняет свою работу? Настраивается? Переиспользуется? Да.
Людям нужно распознавание лиц, а не пердолинг с алгоритмами.
Я начинал про автоматизацию в конпеляторах, а тут сам алгоритм умеет учиться. Это более новый прогрессивный этап.
Если хочется пердолиться с алгоритмами, можно открыть коворкинги для кодовых хендмейдеров. В то время, как алгоритмы будут учиться и писать программы за людей большими партиями за копейки, кодовые хендмейдеры будут пейсать штучные программки на замшелых джавах и продавать их техновеганам и любителям дизайнерских кодокукол.
Художников вытеснили фотографы, фотографов вытесняют простота управления в камерах и алгоритмы в смартфонах.
Программисты вытеснили компьютеров, программистов вытеснят обучающиеся алгоритмы.
> анальный зонд, а счастливые рабы
Есть простое правило. Если замышляешь что-то, за что можешь получить, то не обсуждай это ни с кем и не говори вслух, поскольку каждый - предатель.
А если используешь GT, чтобы перевести "Как пройти в библиотеку?" с российского на московский, пусть записывают. Потом пра-пра-правнуков проиграют голоса дедов, которые говорили без ультразвуковых аугментаций.
guest8 23.12.2018 16:48 # −999
kir_rik 20.12.2018 01:32 # −102
bootcamp_dropout 20.12.2018 02:47 # 0
guest8 20.12.2018 01:24 # −999
wissenstein 25.12.2018 12:43 # 0
guest8 23.06.2020 02:54 # −999
3.14159265 23.06.2020 03:42 # 0
gost 23.06.2020 04:09 # 0
TOPT 23.06.2020 04:23 # 0
3.14159265 23.06.2020 04:31 # 0
Спокойного утра.
gost 23.06.2020 04:40 # 0
3oJIoTou_xyu 23.06.2020 12:21 # 0
guest8 23.06.2020 12:22 # −999
3oJIoTou_xyu 23.06.2020 12:25 # 0
bootcamp_dropout 23.06.2020 12:43 # 0
3oJIoTou_xyu 23.06.2020 12:57 # 0
https://youtu.be/h-HvpTQfxhY
bootcamp_dropout 23.06.2020 13:01 # 0
guest8 23.06.2020 13:03 # −999
3oJIoTou_xyu 23.06.2020 13:07 # 0
guest8 23.06.2020 13:09 # −999
3oJIoTou_xyu 23.06.2020 13:14 # 0
guest8 23.06.2020 14:08 # −999
TOPT 23.06.2020 14:15 # +2
guest8 23.06.2020 14:18 # −999
MAKAKA 23.06.2020 18:22 # 0
Понятия не имею, что это такое. Нагугл чудесный сайт в эстетике 1999-го года.
http://www.zinziver.ru/
jojaxon 23.06.2020 18:31 # 0
nemyx 24.06.2020 08:26 # 0
nemyx 24.06.2020 11:18 # 0
Именно поэтому я за addslashes и за mysql_real_escape_string.
guest8 24.06.2020 12:15 # −999
bootcamp_dropout 23.06.2020 13:21 # 0
TOPT 23.06.2020 14:16 # 0
bootcamp_dropout 23.06.2020 14:44 # 0
TOPT 23.06.2020 15:10 # 0
guest8 24.06.2020 12:13 # −999
KOPOHABuPYC 25.06.2020 01:46 # 0
BOKCEJIbHblu_nemyx 23.06.2020 16:28 # 0
3.14159265 23.06.2020 04:29 # 0
TOPT 24.06.2020 04:01 # 0
3oJIoTou_xyu 24.06.2020 05:41 # 0
Когда наши слова были смысла лишены.
Наша слабость связана с нашей оболочкой.
Это укрытие в котором я живу.
Нет веры, нет надежды.
После мы просто становимся нашей собственной тенью
Это наш собственный оттенок
Освободившись из своего разума
Больше не в стороне, снова облегчение
Достигая звезд. Я жажду приливного транса.
Волна, которую мы можем обуздать
У морей нет конца.
Моя буря не успокоится.
Хочу освободить мою волю от ее органических цепей
Нарушить слой небес для одного финального танца
Освободившись из моего разума
Больше не в стороне, снова облегчение
Достигая звезд. Я жажду приливного транса.
guest8 24.06.2020 12:18 # −999
guest8 24.06.2020 12:36 # −999
guest8 24.06.2020 12:20 # −999
guest8 24.06.2020 12:36 # −999