Здравствуйте, StandAlone, Вы писали:
SA>Здравствуйте, gandjustas, Вы писали:
G>>Не переживай, для таких как ты есть typescript.
SA>"Слышь, Бивис, а как во всех нормальных языках сделано? Сперва пишется тип, а потом переменная? Слева направо, тут же не арабы, да? Гыгыгы, а мы сделаем наоборот! NotInventedHere!"
"Наоборот" вообще-то не менее почтенно (Pascal со всеми потомками вплоть до Ada), используется массово сейчас (новые языки вроде Swift, Go...) и имеет ряд существенных преимуществ — например, вместо сишных typedef void (*func1_t)(int) начинают писаться конструкции, которые можно понять без выворачивания наизнанку.
Так что переучивайтесь.
Здравствуйте, elmal, Вы писали:
E>И вообще. Я хренею с современного джаваскрипта. Почему то в современных реалиях даже для сеньер фронтэнд разработчиков на нем невозможно сделать то, что без проблем делалось 10 лет назад на том же джаваскрипте.
[...]
Плач замечательный, но это явно не проблема языка.
14.04.2017 9:59, netch80 пишет: > Здравствуйте, elmal, Вы писали: > > E>И вообще. Я хренею с современного джаваскрипта. Почему то в > современных реалиях даже для сеньер фронтэнд разработчиков на нем > невозможно сделать то, что без проблем делалось 10 лет назад на том же > джаваскрипте. > [...] > > Плач замечательный, но это явно не проблема языка.
Но это явно проблема. Реальная трудоемкость (человеко/часов) разработки
обычного Web-интерфейса CRUD и т.п. после того, как генерация DHTML
страниц на сервере была объявлена моветоном, возросла в РАЗЫ. И
обусловлено это в первую очередь именно калечностью языка, стандартно
понимаемого браузерами (т.е. JS). Именно из-за этого возникла
совершенно, извините за выражение, но по другому не скажешь — мудацкая
система с "компиляцией" ("транспиляцией") кода, исполняемого в браузере
из чего-нибудь, на чём хоть как-то можно писать большие проекты, весь
этот grunt, webpack и прочие nodejs костыли.
Да, при чётком разделении фронта и бэка страницы выходят более
красивыми/динамичными, и есть другие преимущества. Но стоимость этой
красоты в реале достаточно высока.
Здравствуйте, StandAlone, Вы писали:
SA>Здравствуйте, John1979, Вы писали:
J>>Я перешел с C++ на ноду очень легко. Если отбросить религиозные убеждения, то ничего страшного в жаваскрипте нет.
SA>Как и в Quick Basic. Хотя, пожалуй, я несправедлив к бейсику.
Ви таки не поверите, но был у меня один проект с Quick Basic — писал на асме модуль для ускорения работы с VESA-графикой.
Здравствуйте, StandAlone, Вы писали:
SA>Во-первых, спасибо за возможность заглянуть под крышку черепной коробки одного из JS-любителей.
HolyWar это конечно весело, но тут такое дело, я процентов 80 кода пишу на C/C++/C#. Да, в некоторых проектах есть фронтенд HTML/JS, но не более.
SA>Опишите, пожалуйста, как бы Вы решали с использованием JavaScript одну из типичных задач программирования. Всем, регулярно читающим этот раздел, они конечно же известны, но я все же напомню: SA>1) Напишите реализацию quicksort SA>2) Обойдите дерево в ширину.
Я может чего-то не знаю в JS, в силу того, что это не мой основной язык, но всё же, где тут подводный камень? Просто ХЗ, но вроде во всех императивных языках примерно одно и тоже. Синтаксические конструкции и символы операторов только немного разные вроде.... Такчто, если тебе сильно хочеться, давай свои реализации, я попробую их как-нибудь "оджаваскриптить" SA>3) Реализуйте паттер Visitor.
В JS и ООП то довольно сильно сбоку, вот так бросаться на амбразуру с паттерном Visitor немного не дальновидно... Как-бы голову надо включать и использовать к задачам подходящие инструменты и паттерны. И у меня встречный вопрос — а что был реально рабочий код существующий программы, где у тебя этот паттерн позволил уменьшить её структурную сложность? На каком языке, что за проект? Сколько таких прицедентов было, каждый день пишешь? SA>4) Реализуйте иерархию слоя доступа к данным с элементами AOP, а именно наложением инвариантов посредством атрибутов.
В нормальных проектах этим занимаеться C#/Java на бэкенде. Я вот так даже и представить себе не могу куда между DOM/AJAX можно приткнуть такую хрень и нафига. Что она там делать будет? SA>... SA>6) Хорошо, напишите хоть что-нибудь размером хотя бы с ObservableCollection. И не забудьте прикрыть локтями ребра...
Попробуй написать ObservableCollection на C++ без сторонних библиотек и кроссплатформенно. Причём в JS тьма либ/фрейморков её заменяющих, те же angular/React/тысячи-этой-новомодной-хрени, а вот в плюсах вроде особо нет. Так что сделаешь общественно полезное дело.
SA>Ждем-с
Было забавно, но не думаю, что будет конструктивно.
Здравствуйте, elmal, Вы писали:
E>И вообще. Я хренею с современного джаваскрипта. Почему то в современных реалиях даже для сеньер фронтэнд разработчиков на нем невозможно сделать то, что без проблем делалось 10 лет назад на том же джаваскрипте.
Справедливости ради, десктоп этот рак тоже не обошел стороной. Ну или мне в последнее время с проектами не везет. То, что раньше делалось силами одного кодера за неделю, сейчас делается тремя за две, и чтобы использовалось не меньше 20 сторонних пакетов. Иначе все скажут, что не круто.
Впрочем, в вебе реально всё еще хуже
Здравствуйте, Vetal_ca, Вы писали:
mgu>>2. Зачем на эту должность нанимать вас, когда нудистов (а тем более джаваскриптистов) вокруг, как говна за баней?
V_>Сказали что просто с JS (JQuery и прочий frontend) на серверную часть не берут. Нужен опыт в распределенном бэкенде, пусть и без JS. Это паралеллизация, pipelining, sharding, AMQP и прочее
Да, тогда резонно, а синтаксис языка -- это мелочи.
Здравствуйте, elmal, Вы писали:
E>Это понятно. Проблема в том, что типичный фронтэнд разработчик отсортировать что либо не в состоянии. Если готовый контрол не имеет функции сортировки, то все, задача нерешаемая.
До меня, кажется, только сейчас дошло, почему в современных переднеконцовых проектах так много термопар из чугунных библиотек с гламурными элементами управления -- где-то есть функция сортировки, а где-то сортирная функция...
E>К сожалению ни черта. Кто хочет 40 тысяч, те ранее работали курьерами и в макдональдсе, а книжку прочитать еще не успели, да и книжка эта была вида пишем hello world за 24 часа. Да и если у них диплом какого либо КтИУ ИТМО — тоже самое, про такую структуру данных, как дерево, они какого то черта не слышали. И к тому же я вопрос формулирую не что такое хешмап, а по другому. Например с бэкэнда пришла информация о пользователях в виде название организации, инн, выручка. Могут быть дубликаты по названию и инн. Ибо задача достаточно часто реально встречается на практике. Рассказать (не написать на бумажке!!!!) как они будут эти дубликаты отсеивать. Вот реально нерешаемая задача на фронтэнде, не в состоянии ее решить 90 процентов!
Какой кошмар! Понятно, что по-хорошему нужно устранять причину на сервере, но реально до тех разработчиков не достучаться: они целыми днями интервьюируют кандидатов с вопросами из книги "hello world за 24 часа".
Здравствуйте, hrensgory, Вы писали:
H>Но это явно проблема. Реальная трудоемкость (человеко/часов) разработки H>обычного Web-интерфейса CRUD и т.п. после того, как генерация DHTML H>страниц на сервере была объявлена моветоном, возросла в РАЗЫ.
Ну и объём передаваемых данных возрос не по-детски.
H>И обусловлено это в первую очередь именно калечностью языка, стандартно H>понимаемого браузерами (т.е. JS).
Проблема не в языке, а в его применятелях не по назначению. Это всё равно как на легковой машине перевозить холодильник и хаять её низкую грузоподъёмность.
Здравствуйте, Kesular, Вы писали:
K>Справедливости ради, десктоп этот рак тоже не обошел стороной. Ну или мне в последнее время с проектами не везет. То, что раньше делалось силами одного кодера за неделю, сейчас делается тремя за две, и чтобы использовалось не меньше 20 сторонних пакетов. Иначе все скажут, что не круто.
Для троих кодировщиков уже требуются ведущий, менеджер и политрук срам-мастер. Так что получается уже 6 голов.
K>Впрочем, в вебе реально всё еще хуже
Хе-хе, в Джаве раздел с include скоро по количеству строк превысит собственно код.
Здравствуйте, mgu, Вы писали:
mgu>Для троих кодировщиков уже требуются ведущий, менеджер и политрук срам-мастер. Так что получается уже 6 голов.
Вот потому и плодятся конторы, в которых к горизонтальной координации просто принуждают.
Зато если кто вработался в это — можно ограничивать одним начальником любого вида на 10-30 человек.
mgu>Хе-хе, в Джаве раздел с include скоро по количеству строк превысит собственно код.
5 лет пишу на node.js, до этого больше 8 лет писал C# и пару лет на Java. Node нравится, JavaScript/TypeScript нравится. Зная довольно глубоко как язык так и экосистему, я искренне не понимаю глубины ненависти к JavaScript со стороны некоторой части разработчиков.
> Будет ли это плюсом для мозгов и новым взглядом на веши? Или только притуплением, болью и мучением?
Для меня было "плюсом для мозгов и новым взглядом на вещи". Если изучения нового в целом боли и мучений не вызывает, то тут думаю проблем не будет.
А у меня противоположный опыт. Ключевой момент по моему мнению, это не ждать от JavaScript того чего там нет и не было, того что хорошо работает в типизированных языках, по той причине что они типизированы. Нужно просто перестроиться и использовать сильные стороны отсутствия строгой типизации.
Здравствуйте, Lazy Bear, Вы писали:
LB>Здравствуйте, Vetal_ca, Вы писали:
V_>>>>Будет ли это плюсом для мозгов и новым взглядом на веши? Или только притуплением, болью и мучением? G>>>Однозначно. LB>Имхо JS после типизированных языков это АДЪ.
Есть TypeScript — вполне себе типизированный javascript.
Здравствуйте, StandAlone, Вы писали:
SA>Опишите, пожалуйста, как бы Вы решали с использованием JavaScript одну из типичных задач программирования. Всем, регулярно читающим этот раздел, они конечно же известны, но я все же напомню: SA>1) Напишите реализацию quicksort
думаешь там что-то удивительное будет?
/*
* Алгоритм быстрой сортировки
*
* @param data Array
* @param compare function(a, b) - возвращает 0 если a=b, -1 если a<b и 1 если a>b (необязательная)
* @param change function(a, i, j) - меняет местами i-й и j-й элементы массива а (необязательная)
*
*/
function qsort(data, compare, change) {
var a = data,
f_compare = compare,
f_change = change;
if (!a instanceof Array) { // Данные не являются массивом
return undefined;
};
if (f_compare == undefined) { // Будем использовать простую функцию (для чисел)
f_compare = function(a, b) {return ((a == b) ? 0 : ((a > b) ? 1 : -1));};
};
if (f_change == undefined) { // Будем использовать простую смены (для чисел)
f_change = function(a, i, j) {var c = a[i];a[i] = a[j];a[j] = c;};
};
var qs = function (l, r) {
var i = l,
j = r,
x = a[l+r>>1];
//x = a[Math.floor(Math.random()*(r-l+1))+l];
// x = a[l]; // Если нет желания использовать объект Math
while(i <= j) {
while(f_compare(a[i], x) == -1) {i++;}
while(f_compare(a[j], x) == 1) {j--;}
if(i <= j) {f_change(a, i++, j--);}
};
if(l < j) {qs(l, j);}
if(i < r) {qs(i, r);}
};
qs(0, a.length-1);
};
//BFS
Tree.prototype.traverse = function (callback) {
var queue=[this];
var n;
while(queue.length>0) {
n = queue.shift();
callback(n.value);
if (!n.children) {
continue;
}
for (var i = 0; i< n.children.length; i++) {
queue.push(n.children[i]);
}
}
};
SA>3) Реализуйте паттер Visitor.
Vistor в JS не нужен
SA>4) Реализуйте иерархию слоя доступа к данным с элементами AOP, а именно наложением инвариантов посредством атрибутов.
Мы все еще про "одну из типичных задач программирования" ? На других языках подобного извращения в реальных проектах не встречал. SA>6) Хорошо, напишите хоть что-нибудь размером хотя бы с ObservableCollection. И не забудьте прикрыть локтями ребра...
Вот пример https://github.com/knockout/knockout/tree/master/src/subscribables
Много кода, но не смертельно.
Но лучше посмотри как устроен Angular и Angular2. Там two-way databinding работает с обычными js-объектами и там не сильно нужны приседания с Observable_что_то_там
Вообще в JS не принято много писать. Обычно все что надо можно найти в npm\bower\тупо в интернетах.
Здравствуйте, Au, Вы писали:
Au>Здравствуйте, AndyCyp, Вы писали:
AC>>использовать ТайпСкрипт, траспайлить его в ЕС5, и будет тебе счастье
Au>Зачем в ES5? Можно и в ES6 с CommonJs модулями.
я имел ввиду клиента. JS на сервере — изврат, задачи у языка другие. Нода на сервере скорее нужна для сервер сайд рендеринга страниц.
Здравствуйте, senglory, Вы писали:
S>конечно, ничего страшного. Случилось что-то невнятное внутри ангуляра какого или ReactJS — и все, затрахаешься понимать где у него ошибка.
какая связь между проблемами в твоем любимом говнофреймворке с яваскриптом в целом и node.js в частности ?
btw я немного писал на Angular 1.x, чуть больше на React и сейчас у меня шабашка на Angular 2
несмотря на то, что такую проблему, в теории, получить можно, на практике разработчик всегда знает где он накосячил.