- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
function main() {
let user = {
firstName: "John",
sayHi() {
print(`Hello, ${this.firstName}!`);
},
};
user.sayHi();
print("done.");
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
function main() {
let user = {
firstName: "John",
sayHi() {
print(`Hello, ${this.firstName}!`);
},
};
user.sayHi();
print("done.");
}
как тебе такое Илон Маск?
В C++/Java/C#/Kotlin нужно фигачить интерфейсы и адаптеры, а в JS/TS не нужно.
А если язык поддерживает гомоиконность, ты сам себе можешь сделать поддержку структурной типизации, и не только структурной, а еще и хуй знает какой типизации с произвольными правилами сопоставления и автоматического преобразования типов.
Язык с широкими возможностями.
> апотом начнем затачивать под него компилятор
И это хорошо. Это тот подход универсальности, который планировали завезти в SQL, но до конца не осилили.
Лучше затачивать компилятор под язык, чем программистов под язык как это делают в C++.
Это будущее программирования. Мы должны прийти к чему-то вроде "Алекса, автоматизируй мне бизнес", а не пердолиться с
1. формулированием требований в ТЗ и переводом намерений на канцелярский язык
2. разработкой архитектуры и переводом канцелярского языка на язык абстракций
3. нафигачиванием этого в файлы с кодом и переводом с языка абстракций на язык программирования
4. отладкой особенностей перевода с языка программирования на машинный язык.
у PHP возможности шире
>Лучше затачивать компилятор под язык, чем программистов
Предлагаю писать на бейсике
> Предлагаю писать на бейсике
Я уже изучил JS. И то не весь, т.к. он постоянно обновляется.
Зачем другие языки, когда есть божественный JS?
Какой волшебный эвфемизм
Примерно как «сотрудник с большим нереализованным потенциалом»
Вдруг PHP и правда такой?
– ой дурак
P.S. Видео на тему вентилятора из линолеума: https://youtu.be/CUq82yscPdA
надо бы на канал креосана заглянуть
Креосан ещё не сгнил, но близится к тому. Разбавил питушню экспериментов походами (в т.ч. в чернобыльскую зону), чтобы пришла смотреть куча школьников. Начал сотрудничать с разными поехавшими братишками, которые творят всякий бред на камеру. Всякие постановочные охи-вздохи и концовки промежуточных роликов "и вот тут раздался страшный звук, братишка упал и затих; что же случилось? смотри в следующей серии".
Там с самого начала было понятно что очень быстро съедет в говноблогерство
Вот держи другое технарско-багровое залипалово, там вроде специальный термин был для поиска таких инцидентов, но я забыл
https://www.youtube.com/watch?v=h7XtOlQB6oY
https://youtu.be/YgxQeCcm2dg
Какая восьмёрка )))
джек восьмёркин американец
А это ещё что означает?
Приведи конкретный пример свободы, которая есть в JS, но которой нету в С++
Ну да, совсем другое дело же
Это свобода?
в JS в сорок раз медленее
покажи свой результат для компиляции
PS C:\temp\MLIR_to_exe> Measure-Command { .\out.exe }
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 41
Ticks : 415781
TotalDays : 4.81228009259259E-07
TotalHours : 1.15494722222222E-05
TotalMinutes : 0.000692968333333333
TotalSeconds : 0.0415781
TotalMilliseconds : 41.5781
PS C:\temp\MLIR_to_exe> Measure-Command { .\a.exe }
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 63
Ticks : 633683
TotalDays : 7.33429398148148E-07
TotalHours : 1.76023055555556E-05
TotalMinutes : 0.00105613833333333
TotalSeconds : 0.0633683
TotalMilliseconds : 63.3683
а у тебя она дает в 630 больше времени
Что у тебя за компилятор, что за процессор, и как ты собирал?
> -O0
Но я всё равно не понимаю почему у него такие результаты, когда у меня на процессоре 2012-го года они намного более быстрые.
Я собирал "release" на винде конечно, там наверное оптимизации включены
S C:\temp\MLIR_to_exe> Measure-Command { .\out.exe }
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 5
Ticks : 58725
TotalDays : 6.796875E-08
TotalHours : 1.63125E-06
TotalMinutes : 9.7875E-05
TotalSeconds : 0.0058725
TotalMilliseconds : 5.8725
PS C:\temp\MLIR_to_exe> Measure-Command { .\a.exe }
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 6
Ticks : 65492
TotalDays : 7.58009259259259E-08
TotalHours : 1.81922222222222E-06
TotalMinutes : 0.000109153333333333
TotalSeconds : 0.0065492
TotalMilliseconds : 6.5492
Да. Надо много? mmap/mremap.
Move за O(1) в отличие от заедушной мрази.
А new можно вообще как угодно определить, хоть slab, хоть пул. Это абасракция.
А malloc() и free() есть? А будут ли? А что насчет указателей и адресной арифметики?
type int = 1; // сделать тип int
const arr = new int[10]; // выделить 10 int через маллок
delete arr; // удалить через free
А что насчет realloc() ?
А Цари пишут напрямую, чтобы 100%.
>malloc использует только для мелочи
А для мелочи есть стек и заранее преаллоцированая память вроде slab.
Смысла в malloc не остаётся.
Если я два раза маллокну по одному байту, он поди страничку сразу выделит, и второй раз уже не полезет
> Цари
Ну вообще сишкин API это не по царски: нужно дергать API операционки напрямую, да.
Нет. Смысл пула компактная, сверхбыстрая аллокация однотипных объектов.
Ну в общем malloc sbrkнет явно не на один байт, хотя надо проверить
сначала быркало по страничке, потом попоболе
как я и думал
Потом начинается фрагментация кучи, советы вазьмити другой аллокатор типа jemalloc.
Причём колупание в этом дерьме ложится именно на пользователя.
Потому либо аллоцировать на стеке, либо выделять постранично (mmap).
Если я выделю сразу много, то вместо sbrk будет mmap
Обычно надо или много сразу под какой-то буфер, тогда mmap.
Часто буфер этот буфер под io, тогда профит двойной, т.к. файлы мапятся прямо на память. Или много однотипных объектиков. Тогда slab.
Цари пишут для каждой аллокации оптимально, а не полагаются на эвристики аллокатора.
А лалки везде юзают malloc, а потом ставят -O0 и кричат: «дак я же как Сишка», «йажа сливает кресты в хламину», итд. Причём аллокаторов десятки, один оптимизирован так, другой эдак.
Для старых элементов - конструктор перемещения.
Для бывших элементов - деструктор (как в delete[]).
> const arr = new int[10]; // выделить 10 int через маллок
Я не понимаю, зачем тут какие-то "типы". Например, в Си я могу сделать обертку над malloc которой передают количество байт, и она возвращает void указатель, по которому такое-то количество байт доступно
И потом уже где-то там это используется под int или под float или еще под какую-то хуйню
Какая параша сегодня ты?
Рэнди развивает интерес к соседскому сараю, пукает и продолжает тем, что наносит вербальные оскорбления соседу (а также пролетавшему мимо вертолёту). Затем сосед признаёт, что он — «однорукий уткоёб» («one-armed duck-fucker»).
Винтаж: Утка медицинская ранние советы новая
тут одна проблема если не указать <int[10]> а только <int[]> тогда каст пойдет на runtime array в котором первое слово это размер
А что насчет strict aliasing? Там вообще понятие POD есть в этом тупесрипте?
сконпеляется?