Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Я тебе больше скажу. У меня тут есть реальный боевой проект, довольно навороченный. Так вот, в части касающейся UI там всего строчек 200 кода. Остальное — куча XAML.
TSP>>Поддерживается не везде даже ES6. Понятно что можно сборку сделать и всё такое.. G>Так все и работают. Разработка на JS уже давно не в блокноте ведется.
И считают этой нормой. Вся эта гора костылей а-ля babel это НЕНОРМАЛЬНО.
Я вот представляю себе вариант, когда C++14 конвертируется в С++98, потом компилируется... Ну жесть же.
Здравствуйте, gandjustas, Вы писали:
Ops>>Да не надо запуска какого-то кода, нужен нормальный способ дергать DOM и прочее браузерное API не только из JS, тогда твой exсel в 30 строк будет сравнимого объема на любом языке. Но, похоже, там слишком сильно одно от другого зависит и/или это политика производителей браузеров такая. G>Напиши сравнимого объема на любом языке. Представь что тот же DOM API у тебя есть.
Во, у меня в джва раза меньше строк!
using Microsoft.Office.Interop.Excel;
using System.Reflection;
namespace XLS
{
class Program
{
static void Main(string[] args)
{
var xl = new Application();
xl.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
xl.Visible = true;
}
}
}
Здравствуйте, gandjustas, Вы писали:
G>Да ладно. Такие попытки были неоднократно. Все сдохли. Недавно вот NaCL гугловый сдох. Хотя он по сути решал проблему запуска недоверенного кода (с++) на клиенте. Но оказался не нужен, JS его победил.
NaCl по сути и не родился. Причём банально потому, что это была проталкиваемая одной компанией технология, а сейчас у нас в мире браузеров нет монополии. Однако все наработки NaCl были использованы при разработке wasm. И вот тут имеется полная договорённость всех основных производителей браузеров, так что данный проект точно взлетит... )))
Кстати, сами авторы wasm безусловно позиционируют его не как инструмент для реализации замены JS, а как дополнение, позволяющее эффективно реализовать тяжёлые вычисления в браузере. Т.е. в данный момент это инструмент для исполнения C/C++ (ну и ещё там Rust вроде должен подтянуться) в браузере для специальных целей, а не для написания обычных сайтиков.
Но, я подозреваю, что через небольшое времемя (когда в wasm реализуют поддержку прямой работы с DOM, а всяческие скриптовые языки перетащат свой рантайм в wasm) ситуация существенно изменится (причём вне зависимости от желания изначальных создателей технологии — дав возможность исполнения C/C++ кода, они автоматически пускают огромную орду других языков) и JS потеряет все свои привилегии в данной области. Вот тогда посмотрим в реальной конкурентной борьбе с другими скриптовыми языками насколько JS хорош и удобен.
Кроме того wasm естественно поддерживает в теории (но пока таких компиляторов нет) и компиляцию всяческих других статических языков, но это уже вряд ли будет иметь смысл, т.к. для сайтиков удобнее скриптовые языки, а для тяжёлых случаев трудно найти что-то эффективнее C/C++.
Здравствуйте, gandjustas, Вы писали:
G>Драйвера на C#? Это как?
Не понял вопроса G>Или ты просто по серийному порту подключаешься и шлешь байты?
По-разному — тут у каждой железки свои заморочки.
Здравствуйте, TimurSPB, Вы писали:
TSP>>>Поддерживается не везде даже ES6. Понятно что можно сборку сделать и всё такое.. G>>Так все и работают. Разработка на JS уже давно не в блокноте ведется. TSP>И считают этой нормой. Вся эта гора костылей а-ля babel это НЕНОРМАЛЬНО.
Это же не желание людей так делать, а отставание браузеров в поддержке стандарта.
Ничего что в C\C++ до сих пор препроцессором пользуются? Это вообще ахтунг в 2017 году.
TSP>Я вот представляю себе вариант, когда C++14 конвертируется в С++98, потом компилируется... Ну жесть же.
Там же все еще интереснее происходит, с учетом препроцессора, obj файлов, линкера и преображования в машинный код.
Как ты с этим живешь?
Здравствуйте, AlexRK, Вы писали:
ARK>Здравствуйте, gandjustas, Вы писали:
Ops>>>Да не надо запуска какого-то кода, нужен нормальный способ дергать DOM и прочее браузерное API не только из JS, тогда твой exсel в 30 строк будет сравнимого объема на любом языке. Но, похоже, там слишком сильно одно от другого зависит и/или это политика производителей браузеров такая. G>>Напиши сравнимого объема на любом языке. Представь что тот же DOM API у тебя есть. ARK>Во, у меня в джва раза меньше строк!
Слив зощитан
Здравствуйте, koandrew, Вы писали:
K>Здравствуйте, gandjustas, Вы писали:
G>>Драйвера на C#? Это как? K>Не понял вопроса
Ну какбы для драйверов нужен kernel mode где нету .NET. Хотя есть UDF, но он тоже не сильно с .NET совместим.
Поэтому вызвало удивление.
Или ты просто по стандартным портам общаешься с железками?
G>>Или ты просто по серийному порту подключаешься и шлешь байты? K>По-разному — тут у каждой железки свои заморочки.
В этом случае финализаторы не нужны
Здравствуйте, gandjustas, Вы писали:
G>При чем тут модльность и количество файлов? Ты же не жалуешься что у тебя на C++ все в один исполняемый файл компилируется?
Как это все и в один? Мертвый код в этот файл не идет. Динамические библиотеки сами по себе, а если я статическую линковку заказываю, то все неиспользуемое выкидывается.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, gandjustas, Вы писали:
G>Ну какбы для драйверов нужен kernel mode где нету .NET. Хотя есть UDF, но он тоже не сильно с .NET совместим. G>Поэтому вызвало удивление.
Драйвером называют программный компонент, выступающий "мостом" между прикладным софтом и железом. Он не обязательно должен работать в режиме ядра.
G>Или ты просто по стандартным портам общаешься с железками?
Говорю же — по-разному. Попадались и железки с COM-портом (как с обычным "классическим", так и с виртуальным через "конвертеры" типа тех же FTDI), и с интерфейсом D2XX (чипы от FTDI), и со своими интерфейсными библиотеками разной степени замороченности, и со всевозможными сетевыми протоколами (начиная от более-менее стандартного Modbus и заканчивая полностью кастомным бинарным). Иногда приходилось писать "переходник" на С++, но обычно справлялся "родными" средствами дотнета + интеропом.
G>В этом случае финализаторы не нужны
Классический ответ дилетанта (без обид). Хинт — железку ОС сама не приведёт в адекватное состояние. Как раз это я и делаю в финализаторах (если "штатное" завершение почему-то не отработало). В особенно терминальных случаях (когда "падение" софта может привести к материальному ущербу и/или человеческим жертвам) делался ещё отдельный вотчдог, дабы гарантировать, что железка не натворит делов (я испытал это на своей шкуре в процессе тестирования — когда автоматический кар с грузом в полтонны слегка задел меня, приятного было мало, скажу прямо). Короче индустриальные железки — это вам не циферками в БД жонглировать, тут цена ошибки может быть очень и очень высока. Но как чертовски приятно дотронуться до только что сошедшей с конвейера машины, зная, что и я приложил руку к её созданию, вложил частичку своей души в неё Описать это сложно — нужно самому почувствовать!
Здравствуйте, koandrew, Вы писали:
G>>В этом случае финализаторы не нужны K>Классический ответ дилетанта (без обид). Хинт — железку ОС сама не приведёт в адекватное состояние. Как раз это я и делаю в финализаторах (если "штатное" завершение почему-то не отработало). В особенно терминальных случаях (когда "падение" софта может привести к материальному ущербу и/или человеческим жертвам) делался ещё отдельный вотчдог, дабы гарантировать, что железка не натворит делов (я испытал это на своей шкуре в процессе тестирования — когда автоматический кар с грузом в полтонны слегка задел меня, приятного было мало, скажу прямо). Короче индустриальные железки — это вам не циферками в БД жонглировать, тут цена ошибки может быть очень и очень высока. Но как чертовски приятно дотронуться до только что сошедшей с конвейера машины, зная, что и я приложил руку к её созданию, вложил частичку своей души в неё Описать это сложно — нужно самому почувствовать!
Без обид, но финализаторы могут не выполнится вообще, а еще и связь может пропасть или приложение тупо крашнется из-за unmanaged говнокода. Для приведения в нормальное состояние надо это делать в начале, а не в конце. И еще желательно автоматом перезапускать приложение твое.
Это очень дилетантский подход считать что на финализаторах можно получить гарантии для внешних устройств. Я еще 10 лет назад занимался подобным и тогда усвоил эти вещи.
Здравствуйте, gandjustas, Вы писали:
G>Без обид, но финализаторы могут не выполнится вообще, а еще и связь может пропасть или приложение тупо крашнется из-за unmanaged говнокода.
Если такое критично, то принимаются дополнительные меры. G>Для приведения в нормальное состояние надо это делать в начале, а не в конце. И еще желательно автоматом перезапускать приложение твое.
Не все железки можно привести в нормальное состояние без перезагрузки и ручного вмешательства.
G>Это очень дилетантский подход считать что на финализаторах можно получить гарантии для внешних устройств. Я еще 10 лет назад занимался подобным и тогда усвоил эти вещи.
Гарантии — нет, но на практике внешний вотчдог ещё ни разу не срабатывал. Некоторые из моих проектов уже полтора года трудятся в цехах.
Здравствуйте, gandjustas, Вы писали:
G>Представь что у тебя в любом языке есть аналогичный dom с таким же API и оператор eval. Попробуй аналогичный excel записать на другом языке в те же 30 строк. G>Внезапно окажется, что в других языках нет аналогов with и defineProperty и придется городить костыли в 10 раз длиннее для того же функционала.
Внезапно, и то, и другое нужно там чисто для работы сырого eval'а. Говнокод как он есть.
S>>До того что там используется сырой eval без какой либо фильтрации данных? Да, это такая мелочь... зато 30 строк. G>Ты не понял, что этот пример исключительно для демонстрации мощи JS и к реальному приложению не относится?
Я это как раз понял, это ведь именно вы настаиваете что "эти 30 строчек демонстрируют МОЩЬ JS". А по мне это не больше чем пресловутый однострочник на perl'е — бесполезная, опасная, кривонаписанная хрень. "Зато прикольная", по мнению фанатов.
BTW. Могу напомнить какой красивый код можно было писать на PHP при включённой авторегистрации глобалов. Что-то в итоге все плевались потом с такой красоты.
S>>JS кривой уже сейчас, и разве в js собираются добавлять возможность аннотации типов? (а это как раз то, что мне нравится в TS). G>Ты походу не понимаешь. В JS не будет аннотаций типов.
О чём и речь. Вы можете сколько угодно защищать гениальность такого решения, но с моей колокольни это изначальный дефект языка.
Здравствуйте, gandjustas, Вы писали:
G>Сколько склепали и все сдохли Не смогли победить JS, странно да? Такой ужасный язык никто не смог победить. Даже гугл со своим dart не осилил.
И что, не смогли победить из-за высокого качества js, или из-за нереального объёма legacy? Учитывая успехи трансляторов, второй вариант куда более вероятен.
Здравствуйте, gandjustas, Вы писали:
G>>>Напиши сравнимого объема на любом языке. Представь что тот же DOM API у тебя есть. ARK>>Во, у меня в джва раза меньше строк! G>Слив зощитан
А что, не нравится вариант? Ничем не хуже так называемого "экселя на жабаскрипте". Точнее, гораздо лучше. Да и писать меньше.
G>Без обид, но финализаторы могут не выполнится вообще, а еще и связь может пропасть или приложение тупо крашнется из-за unmanaged говнокода. Для приведения в нормальное состояние надо это делать в начале, а не в конце. И еще желательно автоматом перезапускать приложение твое. G>Это очень дилетантский подход считать что на финализаторах можно получить гарантии для внешних устройств. Я еще 10 лет назад занимался подобным и тогда усвоил эти вещи.
Здравствуйте, sr_dev, Вы писали:
T>>На что то более вменяемое типа C# с хорошей стандартной библиотекой? Сколько можно тянуть этот JS легаси из 90-х годов?
_>Меня больше интересует, что мешает добавить туда корутины, чтобы убрать порнуху с калбеками и промисами
Здравствуйте, koandrew, Вы писали:
K>Здравствуйте, gandjustas, Вы писали:
G>>Для приведения в нормальное состояние надо это делать в начале, а не в конце. И еще желательно автоматом перезапускать приложение твое. K>Не все железки можно привести в нормальное состояние без перезагрузки и ручного вмешательства.
Тогда при чем тут финализаторы? Они перезагружают железки?
Более того, ты же банально не знаешь в каком состоянии железка была ДО подключения. Поэтому все равно в начала у тебя будет приведение к нормальному состоянию, а только потом запросы и ответы.