Вы ебанутый?
я пишу на ноде, 1с и питоне. при чем - одновременно. так что ответ очевиден, я - ебанутый.
Можешь скинуть резюме в личку?
я и так занятой по самые не могу. работаю удаленно и на зп которой мне полностью достаточно.
можно даже сказать - я счастлив
можно даже сказать - я счастлив
Чёрт, он счастлив. Ловите его!
Не упустите, ломайте ему ноги!
мать БенеГессерит подошла бы лучше
"я счастлив"
Точно ебанутый. Даже ебанутее меня :-)
Точно ебанутый. Даже ебанутее меня :-)
У меня почему-то глаз дергается когда говорят "пишу на ноде"
правильно безусловно "пишу на js под node", да
Ога
звучит как "пишу картины под ЛСД"
Вот про дельфи тоже думал "папирус". А оказалось на нём и сейчас коммерческое ПО некоторые пишут успешно.
У нас мультплатформенный продукт с оптимизацией под кластеры выполнен на связке фортран-дельфи-с++. Всё это реально используется и дорабатывается.
Я почти в каждом подобном треде интересуюсь: что вы плохого видите в "старых" языках, кроме их возраста?
Экзешник на фортране, который может считать физику АЭС в реальном времени, весит 18 Мб. Сраный скайп под андроид, который может в звонить и писать, весит 127 Мб. Совсем все ебанулись со своими фрейворками и библиотеками.
Я почти в каждом подобном треде интересуюсь: что вы плохого видите в "старых" языках, кроме их возраста?
Экзешник на фортране, который может считать физику АЭС в реальном времени, весит 18 Мб. Сраный скайп под андроид, который может в звонить и писать, весит 127 Мб. Совсем все ебанулись со своими фрейворками и библиотеками.
сука, фортран адское зло, но чертовски полезное
То ПО, что я недавно увидел на дельфях, скорее всего в значительной мере на них писано ради безопасности - поломать что-то на .NET и подобных куда попроще, даже особых навыков не надо, кроме самого языка на не слишком высоком уровне.
Кроме "неудобного" синтаксиса и отсутствия "приятных свстоперделок", пожалуй, даже и приебаться-то не к чему.
индусятина не может в интеллект
Да тут дело не в "старых языках".
Дело в том, что "старые языки" проще, создают меньше оверхэда в рантайме, позволяют создавать компиляторы лучше оптимизирующие код. Но они, как правило, переваливают хорошую порцию забот на плечи программиста.
Сюда можно отнести, С, С++, Fortran, и отнюдь не старый rust. Да и С++ хоть и старый, но не устаревший, вон потихоньку юзают С++17, С++20 на подходе. При правильной имплементации той же логики, что и в экзешнике для АЭС, я уверен, что размер экзешника для всех этих языков будет примерно одинаковым.
По другую же сторону баррикад, языки с динамической типизацией, рефлексией, дженериками, автоматическим ресурс менеджментом, сборщиками мусора, функциями первого класса, etc.. Все это должно упрощать работу программиста, создавая более прозрачные абстракции. Но все это создает просто колоссальный оверхэд в рантайме. Зачастую, единственный способ из реализовать, это или интерпретация кода в рантайме, или виртуальная машина выполняющая байткод.
Как Страуструп говорил про свой язык:
Allowing a useful feature is more important than preventing every possible misuse of C++
What you see is what you get.
C++ implementations obey the zero-overhead principle: What you don’t use, you don’t pay for.
А скайп это вобще facepalm. Однако я думаю. что секрет его размера в гигантском колличестве анимированых стикеров, смайликови эмодзи
Дело в том, что "старые языки" проще, создают меньше оверхэда в рантайме, позволяют создавать компиляторы лучше оптимизирующие код. Но они, как правило, переваливают хорошую порцию забот на плечи программиста.
Сюда можно отнести, С, С++, Fortran, и отнюдь не старый rust. Да и С++ хоть и старый, но не устаревший, вон потихоньку юзают С++17, С++20 на подходе. При правильной имплементации той же логики, что и в экзешнике для АЭС, я уверен, что размер экзешника для всех этих языков будет примерно одинаковым.
По другую же сторону баррикад, языки с динамической типизацией, рефлексией, дженериками, автоматическим ресурс менеджментом, сборщиками мусора, функциями первого класса, etc.. Все это должно упрощать работу программиста, создавая более прозрачные абстракции. Но все это создает просто колоссальный оверхэд в рантайме. Зачастую, единственный способ из реализовать, это или интерпретация кода в рантайме, или виртуальная машина выполняющая байткод.
Как Страуструп говорил про свой язык:
Allowing a useful feature is more important than preventing every possible misuse of C++
What you see is what you get.
C++ implementations obey the zero-overhead principle: What you don’t use, you don’t pay for.
А скайп это вобще facepalm. Однако я думаю. что секрет его размера в гигантском колличестве анимированых стикеров, смайликови эмодзи
С учётом того, что ядро клиента скайпа было написано на Дельфи, а сейчас это драный браузер, изменение размера - это нормально.
насчёт возможности реализовать: в D есть и сборка мусора, и дженерики, и рефлексия, и лямды, при этом он остается компиляемым в натив
D кстати очень неплохой. Жаль, что не очень распространенный.
Основного там нет, что есть у динамических языков - динамической типизации.
Там не дженерики, а шаблоны, как в С++ и компайл тайм функции. Синтаксически дженерики и шаблоны схожи, и используются для схожих целей, но в корне различаются. В С# и Java дженерики работают в рантайме.
D это очень хорошая попытка создать нечто ближе к динамическим языкам, но оставаясь компилируемым в натив и оставаясь на схожем уровне производительности. Но все равно, ИМХО он ближе к статическим языкам.
Основного там нет, что есть у динамических языков - динамической типизации.
Там не дженерики, а шаблоны, как в С++ и компайл тайм функции. Синтаксически дженерики и шаблоны схожи, и используются для схожих целей, но в корне различаются. В С# и Java дженерики работают в рантайме.
D это очень хорошая попытка создать нечто ближе к динамическим языкам, но оставаясь компилируемым в натив и оставаясь на схожем уровне производительности. Но все равно, ИМХО он ближе к статическим языкам.
дженерики от шаблонов отличаются мало чем. классический дженерик - это код, параметризованный только типами, в D он может еще строчками быть параметризован и лямдами вроде, ну да, но разницы не много.
в рантайме дженерики овеществляются только в шарпе, там этим jit занимается, в яве нет, там выпиливается тип, и 1 раз компиляется код, где кругом Object. что не особо отличается от поведения плюсов и D, где на каждый встреченный набор типов компилится код дженерика. ну прост в яве есть боксинг и bottom-тип, хватает одного раза, не было бы - делали бы так же скорее всего
в рантайме дженерики овеществляются только в шарпе, там этим jit занимается, в яве нет, там выпиливается тип, и 1 раз компиляется код, где кругом Object. что не особо отличается от поведения плюсов и D, где на каждый встреченный набор типов компилится код дженерика. ну прост в яве есть боксинг и bottom-тип, хватает одного раза, не было бы - делали бы так же скорее всего
а на ассемблере вообще более оптимизировано чем на чем либо другом можно написать что угодно. Но жизнь коротка.
А вот и нет, если брать языки которые компилируются в нативный код (С, С++, C, fortran) и для которых существуют хорошие компиляторы.
Компиляторы сейчас настолько умные, что руками написать на ассемблере что-то лучше, чем выдаст компилятор, почти не реально (если там конечно нету фэйла в исходном коде, например pointer aliasing). Компиляторы могут делать весьма хитрые и сложные оптимизации. Писать на ассемблере для увеличения производительности смысла нет.
Исключение это различные SIMD операции, когда компилятор не умеет в векторизацию. Тогда да, можно ручками пописать на NEON или SSE2. Но чтобы юзать NEON или SSE2 не обязательно лезть в ассемблер, достаточно юзать compiler intrinsics.
Компиляторы сейчас настолько умные, что руками написать на ассемблере что-то лучше, чем выдаст компилятор, почти не реально (если там конечно нету фэйла в исходном коде, например pointer aliasing). Компиляторы могут делать весьма хитрые и сложные оптимизации. Писать на ассемблере для увеличения производительности смысла нет.
Исключение это различные SIMD операции, когда компилятор не умеет в векторизацию. Тогда да, можно ручками пописать на NEON или SSE2. Но чтобы юзать NEON или SSE2 не обязательно лезть в ассемблер, достаточно юзать compiler intrinsics.
в качестве доказательства к выше сказанному вот:
https://habrahabr.ru/post/274901/#comment_8738493
кратко: чел на асме извращался, оптимизировал и сократил прошивку с 100 байт до 70, я в каментах выложил свой сишный вариант дающий прошивку в 50 байт.
В последствии он конечно меня переплюнул только разве что совсем уёбищными хаками которые даже в реальной ассмовой проге особо не помогут если она будет посложнее чем помигать светодиодом.
И вообще ассемблер не для этого сделан, это системная ошибка использовать язык анализа для синтеза. Это такой же адовый ебанизм как пытаться выучить английский пользуясь фонетическим алфавитом и задрачивая правила и части речи и предложений. Вместо того чтоб блядь взять и начать читать гаррипоттера, битлов или курить маны люникса итд. Т.е. не имея опыта и начитке в начале раскладывать пустоту по полочкам без должной практики в много лет, т.е. не имея в голове опыта в виде тех тыщь предложений и целых абзацев - начать анализировать пустой опыт.
Так же и асме, им надо пользоваться зная конструкции целыми блоками по сотни команд, знать как вызываются функции и подфункции, создаются методы и классы и они вызываются, что такое вариабельные и не вариабельные регистры, что можно менять а что нельзя и почему твоя дерьмо вставка на асме почти всегда будет работать, но ты дубина изменил невариабельный регистр и иногда будет адово глючить даже не она а код куда далее, может быть через тыщу строк далее. Если очень сильно повезёт то глючить будет почаще чем раз в месяц.
https://habrahabr.ru/post/274901/#comment_8738493
кратко: чел на асме извращался, оптимизировал и сократил прошивку с 100 байт до 70, я в каментах выложил свой сишный вариант дающий прошивку в 50 байт.
В последствии он конечно меня переплюнул только разве что совсем уёбищными хаками которые даже в реальной ассмовой проге особо не помогут если она будет посложнее чем помигать светодиодом.
И вообще ассемблер не для этого сделан, это системная ошибка использовать язык анализа для синтеза. Это такой же адовый ебанизм как пытаться выучить английский пользуясь фонетическим алфавитом и задрачивая правила и части речи и предложений. Вместо того чтоб блядь взять и начать читать гаррипоттера, битлов или курить маны люникса итд. Т.е. не имея опыта и начитке в начале раскладывать пустоту по полочкам без должной практики в много лет, т.е. не имея в голове опыта в виде тех тыщь предложений и целых абзацев - начать анализировать пустой опыт.
Так же и асме, им надо пользоваться зная конструкции целыми блоками по сотни команд, знать как вызываются функции и подфункции, создаются методы и классы и они вызываются, что такое вариабельные и не вариабельные регистры, что можно менять а что нельзя и почему твоя дерьмо вставка на асме почти всегда будет работать, но ты дубина изменил невариабельный регистр и иногда будет адово глючить даже не она а код куда далее, может быть через тыщу строк далее. Если очень сильно повезёт то глючить будет почаще чем раз в месяц.
Хороший пример, показательный! Казалось бы, микрокотроллер и простая задача, а вот нет, даже тут человеку тяжело тягаться с компилятором. Что уж говорить про что-то побольше.
Согласен по всем пунктам.
Сюда же можно добавить instruction level parallelism. Компилятор плюс к всему, будет стараться изменить порядок инструкций, чтобы под данную платформу использовать ILP по максимуму. Держать это все в голове, да еще знать что данный CPU может выполнить параллельно просто невозможно.
В общем я даже не знаю, где применение ассемблера оправдано. Ну может разве что в коде переключения контекста какого нибуть диспетчера задач.
Согласен по всем пунктам.
Сюда же можно добавить instruction level parallelism. Компилятор плюс к всему, будет стараться изменить порядок инструкций, чтобы под данную платформу использовать ILP по максимуму. Держать это все в голове, да еще знать что данный CPU может выполнить параллельно просто невозможно.
В общем я даже не знаю, где применение ассемблера оправдано. Ну может разве что в коде переключения контекста какого нибуть диспетчера задач.
случай про ILP:
одна фирма делала дсп проц в тачку чтоб музло долбило но не срано.
делала по феншую на арм заточенном под это, но производительности не хватало
наняли математиков, алгоритмистов которые кнута и прочих теоретиков оптимизации наизусть выучили и много где применяли.
переписали всё под аналог NEONа на асме, под конец выдрачивали по 1-2% быстродействия в день.
Но потом вышел стабильный релиз ARM-DSP либы от производителя, и о чудо, сразу производительность скакнула на 50%, а на всяких ффт и фир фильтрах в РАЗЫ. При этом либа сделана на 99% на си, 0.9% заранее отлаженных настроек и только 0.1% на асме по количеству строк кода. Поэтому либа сразу была дана скомпиленой и сразу из коробки давала результат лучше чем профи-задроты.
одна фирма делала дсп проц в тачку чтоб музло долбило но не срано.
делала по феншую на арм заточенном под это, но производительности не хватало
наняли математиков, алгоритмистов которые кнута и прочих теоретиков оптимизации наизусть выучили и много где применяли.
переписали всё под аналог NEONа на асме, под конец выдрачивали по 1-2% быстродействия в день.
Но потом вышел стабильный релиз ARM-DSP либы от производителя, и о чудо, сразу производительность скакнула на 50%, а на всяких ффт и фир фильтрах в РАЗЫ. При этом либа сделана на 99% на си, 0.9% заранее отлаженных настроек и только 0.1% на асме по количеству строк кода. Поэтому либа сразу была дана скомпиленой и сразу из коробки давала результат лучше чем профи-задроты.
>> Писать на ассемблере для увеличения производительности смысла нет.
- я же так и написал.
- я же так и написал.
На случай важных переговоров.
Мам, я танцую!
Gamaz.jpg
Gamaz.jpg
с шарпом и хаскелем нет продолжения?
А при чем тут ХТМЛ? Это же язык разметки. Он не может в условия.
Потому и цветочный горшок что язык разметки.
А css?
Есть дельцы, что на HTML и CSS игры пишут. Так что тут не всё так однозначно.
HTML от этого языком программирования не стал, и даже со всеми фишками пятого HTML он все ещё язык разметки.
Вот видите, какой всеобъемлющий язык. А вот С++ в разметку не умеет.
Ну это как посмотреть) Потом добавим ассемблерных вставок и упоремся метапрограммированием. А там уже все пофигизм будет)
Хорошая фраза для начала пары в ВУЗе: "А сегодня мы упоремся метапрограммированием!"
например? приведи игру на html && css без JavaScript
посмотрел.
автор лукавит. да. явного js не видно. однако активно используется интегрированные "функции вычисления" внутри css (а как же - "0 строчек кода"? ах да. автор же говорит - "0 строк кода на JavaScript").
хотя, если хорошенько покопаться, то вполне себе окажется, функции css исполняются таки все той же виртуальной машиной.
ну и глюки - соответственно - некорректная обработка спрайтовых регионов,что в свою очередь вызывает ситуацию, когда "столкновение" проверяется на :hover - которая возможна только для точки указателя. т.е. если ты обойдешь противника и залезешь на него сверху, то никакой обработки не произойдет.
ну эт так - мелочи.
автор лукавит. да. явного js не видно. однако активно используется интегрированные "функции вычисления" внутри css (а как же - "0 строчек кода"? ах да. автор же говорит - "0 строк кода на JavaScript").
хотя, если хорошенько покопаться, то вполне себе окажется, функции css исполняются таки все той же виртуальной машиной.
ну и глюки - соответственно - некорректная обработка спрайтовых регионов,что в свою очередь вызывает ситуацию, когда "столкновение" проверяется на :hover - которая возможна только для точки указателя. т.е. если ты обойдешь противника и залезешь на него сверху, то никакой обработки не произойдет.
ну эт так - мелочи.
с их сайта
Engine: Jandi Engine based on WebGL, Pixi
Engine: Jandi Engine based on WebGL, Pixi
а LaTeX? он же вроде как раз для написания текстов статей создан
Латех/Тех это замечательная вещь в себе, где все подключаемые пакеты написаны средствами его самого. Тут может найтись работа программисту в классическом понимании этого слова. К тому же он Тьюринг-полный и пригоден для написания произвольных программ (что моментально переводит попытавшегося это сделать человека в категорию "вы ебанутый?")
"Вы не можете просто написать import реферат
В том то и прикол, что с питоном так можно :D
В том то и прикол, что с питоном так можно :D
Ну все равно же придется методы вытаскивать из подключенно библиотеки) так что на 1 строчку больше будет)
Не обязательно. В либе может быть код, выполняющийся при подключении.
Объясните про С++ , пожалуйста.
Классы и объекты.
Паскаль - Глиняная табличка
Я ебанутый)
Поздравляю.
Чтобы написать коммент, необходимо залогиниться