Re[9]: А что мешает заменить JS?
От: Nikе Россия  
Дата: 14.03.17 21:03
Оценка: +1
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Я тебе больше скажу. У меня тут есть реальный боевой проект, довольно навороченный. Так вот, в части касающейся UI там всего строчек 200 кода. Остальное — куча XAML.


А XAML уже не код?
Нужно разобрать угил.
Re[10]: А что мешает заменить JS?
От: Ночной Смотрящий Россия  
Дата: 14.03.17 21:04
Оценка: +1 -1
Здравствуйте, Nikе, Вы писали:

N>А XAML уже не код?


Судя по теориям gandjustas нет, не код.
Re[6]: А что мешает заменить JS?
От: TimurSPB Интернет  
Дата: 14.03.17 21:13
Оценка: +1
TSP>>Поддерживается не везде даже ES6. Понятно что можно сборку сделать и всё такое..
G>Так все и работают. Разработка на JS уже давно не в блокноте ведется.
И считают этой нормой. Вся эта гора костылей а-ля babel это НЕНОРМАЛЬНО.
Я вот представляю себе вариант, когда C++14 конвертируется в С++98, потом компилируется... Ну жесть же.
Make flame.politics Great Again!
Re[6]: А что мешает заменить JS?
От: AlexRK  
Дата: 14.03.17 21:23
Оценка: +10 -2 :))) :))) :))) :)
Здравствуйте, 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;
        }
    }
}
Re[4]: А что мешает заменить JS?
От: alex_public  
Дата: 14.03.17 21:33
Оценка: +1
Здравствуйте, gandjustas, Вы писали:

G>Да ладно. Такие попытки были неоднократно. Все сдохли. Недавно вот NaCL гугловый сдох. Хотя он по сути решал проблему запуска недоверенного кода (с++) на клиенте. Но оказался не нужен, JS его победил.


NaCl по сути и не родился. Причём банально потому, что это была проталкиваемая одной компанией технология, а сейчас у нас в мире браузеров нет монополии. Однако все наработки NaCl были использованы при разработке wasm. И вот тут имеется полная договорённость всех основных производителей браузеров, так что данный проект точно взлетит... )))

Кстати, сами авторы wasm безусловно позиционируют его не как инструмент для реализации замены JS, а как дополнение, позволяющее эффективно реализовать тяжёлые вычисления в браузере. Т.е. в данный момент это инструмент для исполнения C/C++ (ну и ещё там Rust вроде должен подтянуться) в браузере для специальных целей, а не для написания обычных сайтиков.

Но, я подозреваю, что через небольшое времемя (когда в wasm реализуют поддержку прямой работы с DOM, а всяческие скриптовые языки перетащат свой рантайм в wasm) ситуация существенно изменится (причём вне зависимости от желания изначальных создателей технологии — дав возможность исполнения C/C++ кода, они автоматически пускают огромную орду других языков) и JS потеряет все свои привилегии в данной области. Вот тогда посмотрим в реальной конкурентной борьбе с другими скриптовыми языками насколько JS хорош и удобен.

Кроме того wasm естественно поддерживает в теории (но пока таких компиляторов нет) и компиляцию всяческих других статических языков, но это уже вряд ли будет иметь смысл, т.к. для сайтиков удобнее скриптовые языки, а для тяжёлых случаев трудно найти что-то эффективнее C/C++.
Re[10]: А что мешает заменить JS?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 14.03.17 21:34
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Драйвера на C#? Это как?

Не понял вопроса
G>Или ты просто по серийному порту подключаешься и шлешь байты?
По-разному — тут у каждой железки свои заморочки.
[КУ] оккупировала армия.
Re[7]: А что мешает заменить JS?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 14.03.17 21:41
Оценка:
Здравствуйте, TimurSPB, Вы писали:

TSP>>>Поддерживается не везде даже ES6. Понятно что можно сборку сделать и всё такое..

G>>Так все и работают. Разработка на JS уже давно не в блокноте ведется.
TSP>И считают этой нормой. Вся эта гора костылей а-ля babel это НЕНОРМАЛЬНО.
Это же не желание людей так делать, а отставание браузеров в поддержке стандарта.
Ничего что в C\C++ до сих пор препроцессором пользуются? Это вообще ахтунг в 2017 году.

TSP>Я вот представляю себе вариант, когда C++14 конвертируется в С++98, потом компилируется... Ну жесть же.

Там же все еще интереснее происходит, с учетом препроцессора, obj файлов, линкера и преображования в машинный код.
Как ты с этим живешь?
Re[7]: А что мешает заменить JS?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 14.03.17 21:42
Оценка: -4
Здравствуйте, AlexRK, Вы писали:

ARK>Здравствуйте, gandjustas, Вы писали:


Ops>>>Да не надо запуска какого-то кода, нужен нормальный способ дергать DOM и прочее браузерное API не только из JS, тогда твой exсel в 30 строк будет сравнимого объема на любом языке. Но, похоже, там слишком сильно одно от другого зависит и/или это политика производителей браузеров такая.

G>>Напиши сравнимого объема на любом языке. Представь что тот же DOM API у тебя есть.
ARK>Во, у меня в джва раза меньше строк!
Слив зощитан
Re[11]: А что мешает заменить JS?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 14.03.17 21:45
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Здравствуйте, gandjustas, Вы писали:


G>>Драйвера на C#? Это как?

K>Не понял вопроса
Ну какбы для драйверов нужен kernel mode где нету .NET. Хотя есть UDF, но он тоже не сильно с .NET совместим.
Поэтому вызвало удивление.
Или ты просто по стандартным портам общаешься с железками?

G>>Или ты просто по серийному порту подключаешься и шлешь байты?

K>По-разному — тут у каждой железки свои заморочки.
В этом случае финализаторы не нужны
Re[12]: А что мешает заменить JS?
От: Ops Россия  
Дата: 14.03.17 22:11
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>При чем тут модльность и количество файлов? Ты же не жалуешься что у тебя на C++ все в один исполняемый файл компилируется?


Как это все и в один? Мертвый код в этот файл не идет. Динамические библиотеки сами по себе, а если я статическую линковку заказываю, то все неиспользуемое выкидывается.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[7]: ДРАКОНовых. (-)
От: Ops Россия  
Дата: 14.03.17 22:37
Оценка:
Здравствуйте, Somescout, Вы писали:

Сабж
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[12]: А что мешает заменить JS?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 14.03.17 22:39
Оценка: +1
Здравствуйте, gandjustas, Вы писали:

G>Ну какбы для драйверов нужен kernel mode где нету .NET. Хотя есть UDF, но он тоже не сильно с .NET совместим.

G>Поэтому вызвало удивление.
Драйвером называют программный компонент, выступающий "мостом" между прикладным софтом и железом. Он не обязательно должен работать в режиме ядра.

G>Или ты просто по стандартным портам общаешься с железками?

Говорю же — по-разному. Попадались и железки с COM-портом (как с обычным "классическим", так и с виртуальным через "конвертеры" типа тех же FTDI), и с интерфейсом D2XX (чипы от FTDI), и со своими интерфейсными библиотеками разной степени замороченности, и со всевозможными сетевыми протоколами (начиная от более-менее стандартного Modbus и заканчивая полностью кастомным бинарным). Иногда приходилось писать "переходник" на С++, но обычно справлялся "родными" средствами дотнета + интеропом.

G>В этом случае финализаторы не нужны

Классический ответ дилетанта (без обид). Хинт — железку ОС сама не приведёт в адекватное состояние. Как раз это я и делаю в финализаторах (если "штатное" завершение почему-то не отработало). В особенно терминальных случаях (когда "падение" софта может привести к материальному ущербу и/или человеческим жертвам) делался ещё отдельный вотчдог, дабы гарантировать, что железка не натворит делов (я испытал это на своей шкуре в процессе тестирования — когда автоматический кар с грузом в полтонны слегка задел меня, приятного было мало, скажу прямо). Короче индустриальные железки — это вам не циферками в БД жонглировать, тут цена ошибки может быть очень и очень высока. Но как чертовски приятно дотронуться до только что сошедшей с конвейера машины, зная, что и я приложил руку к её созданию, вложил частичку своей души в неё Описать это сложно — нужно самому почувствовать!
[КУ] оккупировала армия.
Отредактировано 14.03.2017 22:43 koandrew . Предыдущая версия .
Re[13]: А что мешает заменить JS?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 15.03.17 01:46
Оценка: +2
Здравствуйте, koandrew, Вы писали:

G>>В этом случае финализаторы не нужны

K>Классический ответ дилетанта (без обид). Хинт — железку ОС сама не приведёт в адекватное состояние. Как раз это я и делаю в финализаторах (если "штатное" завершение почему-то не отработало). В особенно терминальных случаях (когда "падение" софта может привести к материальному ущербу и/или человеческим жертвам) делался ещё отдельный вотчдог, дабы гарантировать, что железка не натворит делов (я испытал это на своей шкуре в процессе тестирования — когда автоматический кар с грузом в полтонны слегка задел меня, приятного было мало, скажу прямо). Короче индустриальные железки — это вам не циферками в БД жонглировать, тут цена ошибки может быть очень и очень высока. Но как чертовски приятно дотронуться до только что сошедшей с конвейера машины, зная, что и я приложил руку к её созданию, вложил частичку своей души в неё Описать это сложно — нужно самому почувствовать!

Без обид, но финализаторы могут не выполнится вообще, а еще и связь может пропасть или приложение тупо крашнется из-за unmanaged говнокода. Для приведения в нормальное состояние надо это делать в начале, а не в конце. И еще желательно автоматом перезапускать приложение твое.
Это очень дилетантский подход считать что на финализаторах можно получить гарантии для внешних устройств. Я еще 10 лет назад занимался подобным и тогда усвоил эти вещи.
Re[14]: А что мешает заменить JS?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 15.03.17 02:08
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Без обид, но финализаторы могут не выполнится вообще, а еще и связь может пропасть или приложение тупо крашнется из-за unmanaged говнокода.

Если такое критично, то принимаются дополнительные меры.
G>Для приведения в нормальное состояние надо это делать в начале, а не в конце. И еще желательно автоматом перезапускать приложение твое.
Не все железки можно привести в нормальное состояние без перезагрузки и ручного вмешательства.

G>Это очень дилетантский подход считать что на финализаторах можно получить гарантии для внешних устройств. Я еще 10 лет назад занимался подобным и тогда усвоил эти вещи.

Гарантии — нет, но на практике внешний вотчдог ещё ни разу не срабатывал. Некоторые из моих проектов уже полтора года трудятся в цехах.
[КУ] оккупировала армия.
Re[10]: А что мешает заменить JS?
От: Somescout  
Дата: 15.03.17 03:56
Оценка: +1
Здравствуйте, 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 не будет аннотаций типов.
О чём и речь. Вы можете сколько угодно защищать гениальность такого решения, но с моей колокольни это изначальный дефект языка.
ARI ARI ARI... Arrivederci!
Отредактировано 15.03.2017 4:06 Somescout . Предыдущая версия . Еще …
Отредактировано 15.03.2017 4:06 Somescout . Предыдущая версия .
Отредактировано 15.03.2017 3:59 Somescout . Предыдущая версия .
Re[10]: А что мешает заменить JS?
От: Somescout  
Дата: 15.03.17 04:41
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Сколько склепали и все сдохли Не смогли победить JS, странно да? Такой ужасный язык никто не смог победить. Даже гугл со своим dart не осилил.


И что, не смогли победить из-за высокого качества js, или из-за нереального объёма legacy? Учитывая успехи трансляторов, второй вариант куда более вероятен.
ARI ARI ARI... Arrivederci!
Re[8]: А что мешает заменить JS?
От: AlexRK  
Дата: 15.03.17 06:49
Оценка: +5 -1
Здравствуйте, gandjustas, Вы писали:

G>>>Напиши сравнимого объема на любом языке. Представь что тот же DOM API у тебя есть.

ARK>>Во, у меня в джва раза меньше строк!
G>Слив зощитан

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

Шумно ты слился, да.
Re[14]: А что мешает заменить JS?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 15.03.17 07:19
Оценка:
Здравствуйте, gandjustas, Вы писали:


G>Без обид, но финализаторы могут не выполнится вообще, а еще и связь может пропасть или приложение тупо крашнется из-за unmanaged говнокода. Для приведения в нормальное состояние надо это делать в начале, а не в конце. И еще желательно автоматом перезапускать приложение твое.

G>Это очень дилетантский подход считать что на финализаторах можно получить гарантии для внешних устройств. Я еще 10 лет назад занимался подобным и тогда усвоил эти вещи.

В JS проблема финализаторов из-за невозможности освободить ссылки на другие ресурся. Например я могу использовать классы .Net в TS
CEF, ES6, Angular 2, TypeScript использование классов .Net Core. Создание кроссплатформенного GUI для .Net с помощью CEF

Но мне приходится вручную освобождать ссылки на стороне .Net.

И как это проще делать в .Net с финализаторами

.Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой велосипед

To AndrewVK ссылки даны по делу в контексте обсуждения отсутствия финализаторов в JS.
и солнце б утром не вставало, когда бы не было меня
Re[2]: А что мешает заменить JS?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 15.03.17 07:40
Оценка:
Здравствуйте, sr_dev, Вы писали:

T>>На что то более вменяемое типа C# с хорошей стандартной библиотекой? Сколько можно тянуть этот JS легаси из 90-х годов?


_>Меня больше интересует, что мешает добавить туда корутины, чтобы убрать порнуху с калбеками и промисами


Давно уже добавили. Как yield, так и await.
Re[15]: А что мешает заменить JS?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 15.03.17 08:46
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Здравствуйте, gandjustas, Вы писали:


G>>Для приведения в нормальное состояние надо это делать в начале, а не в конце. И еще желательно автоматом перезапускать приложение твое.

K>Не все железки можно привести в нормальное состояние без перезагрузки и ручного вмешательства.
Тогда при чем тут финализаторы? Они перезагружают железки?

Более того, ты же банально не знаешь в каком состоянии железка была ДО подключения. Поэтому все равно в начала у тебя будет приведение к нормальному состоянию, а только потом запросы и ответы.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.