Блог компании RUVDS.com
JavaScript
Разработка веб-сайтов
Комментарии 30
+22
Вы уверены, что если убрать из языка все открывающие-закрывающие круглые и фигурные скобки, а также закрывающие html теги, то его читабельность повышается?
+3
<sarcasm>
    Но ведь это же уменьшает количество символов. Разве это не одно и то же?
+1
Мой опыт работы с Haskell говорит что да. После этого обилие пунктуации в других языках пугаетю
0
Имхо это удобнее для олдов которые форматируют код вручную, я так просто пишу участок почти в линию, потом горячие клавиши автоформата и смотрю, а некоторые сразу пишут и во время этого вручную расставляют табы(пробелы), имхо так удобнее когда автоматика делает больше, но она не сможет так делать, если не ставить много синтаксических символов.
+5
Еще один… За что?

«Один из примеров его применения — платформа, поддерживающая рыбный аукцион в Исландии.» — блин да там пара кнопок.

Показали бы реальное корпоративное приложение, кнопок на 100 осмысленной работы+ табличная часть и отчеты. Вот тогда бы можно было бы прикинуть производительность

+5
А ещё в Imba есть крутая фича как отсутствие компонентов, так что можете забыть о композиции даже на уровне реакта в 2014ом. Наконец-то вы сможете насладиться любимым ООП и наследоваться от DOM элементов :)

Так же там поддерживается возможность хранить в памяти все элементы, которые никак не используются после того как они удалены из документа, но к сожалению там предусмотрены примитивные эвристики, которые при совсем большом засирании начнут подчищать неиспользуемые элементы. Это конечно не так круто как в современной реализации нового Gmail'а когда даже из документа не вычищаются неиспользуемые элементы, но раз уж Gmail использует подобные техники, то наверно это должно значительно улучшить производительность :)

И невероятная производительность Имбы, которая на порядки быстрее виртуального дома подтверждается даже на других корявых бэнчмарках (полный ререндер без каких-либо `shouldComponentUpdate` оптимизаций):

— Imba: localvoid.gitlab.io/imba-dbmon/?m=0.001
— vdom: localvoid.github.io/ivi-examples/benchmarks/dbmon-raw/?m=0.001

Хотя нет, чота не подтверждается.
0
Пример на Imba примерно в два раза короче — и по количеству строк, и по объёму кода.
По-моему, справедливости ради, надо сравнивать ещё и длину значащих пробелов.
Есть ли редакторы/IDE, чтобы постоянно не думать об отступах в таком языке?

PS: у вас доступ к серверам дата-центра надолго отдохнуть прилёг? Уже не меньше двадцати минут дрыхнет
502 — Bad Gateway. That’s an error.

Looks like we have got an invalid response from the upstream server. That’s all we know
+3
Добрый день. В работе сети на уровне дата-центра в Королеве возникла проблема, в результате которой часть физических модулей пока недоступны. Работа серверов продолжается в штатном режиме, виртуальные серверы на модулях также запущены.

Это не запланированные технические работы, к сожалению, мы не могли предупредить об этом заранее. На данный момент проводятся работы по устранению проблемы. Приносим Вам наши искренние извинения за возникшие неудобства.
+1
Спасибо за перевод, приглядываюсь к ней.

Кстати на scrimba.com действительно есть интересные курсы, и для начинающих (например по css), есть по Ractjs, Angular, Vue и т.п. При этом для просмотра этих «видео» не надо качать «видео поток» — демонстрация будет происходить интерактивно в браузере, и +аудио канал — что кардинально меняет «видео» туториалы (на несколько порядков меньше трафика). И конечно же можно записать любые свои туториалы, бесплатно — единственное условие всё должно происходит в рамках веб-редактора от Scrimba, и использовать css, html, js.

ps: да, и т.к вся демонстрация происходит в рамках того же браузера — то можно остановить в любой момент и скопировать «as text» любой фрамент, что на экране (в видео туториалах такое конечно же недоступно..)

+8

Пока народ потихоньку овладевал явной типизацией, ФП, иммутабельностью и прочими средствами автоматического повышения корректности программ, эти чуваки переизобрели Coffeescript.

+4

Читал эту статью давеча. Сразу полез смотреть бенчмарк автора с тудухами, имея плохие предчувствия. И да, я не ошибся. Если так писать на Vue и React, то конечно они будут тормозить. По сути оба решения, что на Vue, что на React, у автора render-ятся целиком при каждом изменении. В случае Vue автор всё вообще записал в 1 компонент, в случае React-а там антипаттерн на антипаттерне, и вообще мои глаза… за что. Суть та же, что и у Vue, vDom всего приложения перестраивается целиком. Я даже полез было ковыряться и оптимизировать, но понял, что нужно переписать вообще всё, и в итоге забил :)

+1
Автор пытался протестировать скорость реконсайлера и поэтому при каждом изменении всё рендерится целиком. А так да, реализация бенчмарка на реакте там какая-то совсем корявая. Года 3 назад он ещё использовал ресайклинг в реализации на Имбе и делал заявления что Имба в 40 или 60 раз быстрее Реакта, печально что чувак за эти годы так ничему и не научился.
0
Автор пытался протестировать скорость реконсайлера и поэтому при каждом изменении всё рендерится целиком

Я не думаю, что его решение на react такое кривое донельзя из-за того, что он хотел протестировать reconciler. Он просто не умеет в React. Это совершенно нормально, в этом нет ничего зазорного, пока ты не пытаешься всем доказать, что твоё решение в 10+ раз быстрее :)

0
У него идея в том что если мы создадим очень быстрый реконсайлер, то не нужно будет замарачиваться со всякими redux'ами/mobx'ами и можно будет просто при каждом изменении делать полный ререндер и вынимать данные откуда угодно. Поэтому он в этом бенчмарке не использует `sCU`, а делает полный ререндер. Но это только про полный ререндер, в остальном же я полностью согласен с тем что реализация на реакте оч корявая.
+4
Лично меня пугают языки, у которых количество «пробелов» в отступе играет важную роль. Наверное я старомоден.
0
Реально это мешает только в REPL. В Haskell на этот случай можно использовать фигурные скобки и ';'. К сожалению, другие языки этому примеру не последовали, в результате в тех же Idris и Elm REPL мало осмысленный.
0
Сейчас мне удобно читать с экрана java/javascript код с 2 пробелами.
А лет через 5..10 (судя по динамике) наверное уже с 4-мя придется иметь дело.
Вот мой коллега, более свежего года выпуска, может наверное еще лет 20 читать хоть с отступом хоть без.
Кстати, есть идея для нового языка: отступы же еще можно дополнить межстрочным интервалом! :-) Дарю бесплатно :)))
0
отступы же еще можно дополнить межстрочным интервалом

А оно и используется в некоторых языках, насколько я знаю. Что-то вроде "между методами должна быть одна пустая строка".


А вот из того, что вы описали выше, я вообще ничего не понял, хоть пробелы туда добавь, хоть скобки.

0

Я про зрение, которое чаще становится хуже, нежели чем лучше. Поиметь на пустом месте логическую ошибку в коде и тратить время на ее поиски — это глупость с моей точки зрения.

+1
function findGreatest(num1, num2) {
  if (num1 > num2) {
    return num1
  } else if (num2 > num1){
    return num2
  } else {
    return false
  }
}


Буквально недавно спрашивал про почти такое же и вот оно опять тут.

Если уж мы пишем без скобок, то надо и писать без скобок. Что за глупые манипуляции?


function findGreatest(num1, num2) {
  if(num1 > num2)
    return num1
  else if(num2 > num1)
    return num2
  else
    return false
}


function превращается в def. Ключевое слово function заменено ключевым словом def.

И что же это дало? Да ничего, никто не пишет код в блокноте, а значит никакой разницы между function и def нет. К тому же function писать удобнее.

Отсутствие скобок. Параметры функции не заключены в скобки.

О да, прям отличие из отличий. Как там, num1 = 123 — оно осилит распарсить?

В Imba, на самом деле, скобки нужны редко, хотя, если хотите, вы можете их использовать.

Т.е. без скобок нельзя? Неужели это специально подобранный пример?
Отступы. Отступы играют очень важную роль в Imba. Это означает, что фигурные скобки здесь не нужны.

Это всяко лучше скобок, особенно с ТЗ компилишена. Зачем нам предсказуемый синтаксис — мы будем страдать.

Отсутствие ключевого слова return.

Как же так?
В Imba возврат значений из функций выполняется неявно, то есть, в ключевом слове return необходимости не возникает.

Я прям поверил.
Imba автоматически возвращает последнее выражение функции.

А, ну т.е. из функции может быть только один return?

0
А, ну т.е. из функции может быть только один return?

Очевидно — нет. Там где функция заканчивает свою работу — там и return. Если это в первом ифе — вернётся выражение из первого ифа. Или это сарказм такой?
И да, я не топлю за Имбу, так, наблюдения.

+1
Очевидно — нет.

Из чего это очевидно?
Там где функция заканчивает свою работу — там и return.

Нету такого понятия «заканчивает работу» в базовой семантике. Заканчивает работу функции ruturn, либо аналогичная конструкция. Т.е. это делается явно.

>> Если это в первом ифе — вернётся выражение из первого ифа.
Каким образом? Я не хочу ещё раз объяснять очевидные вещи. Вот вам функций

function f(x) {
  if(x) return 1;
  return 2;
}

Напишите её с неявным return. Ба, да я только сейчас поглядел что там за код — манипуляции оказываются ещё масштабней. Там даже пример говорит против вас.
0

Ваш последний пример подразумевает явный возврат результата в любом случае, будь то imba или, например, CoffeeScript, который так же поддерживает неявный возврат "результата последнего вычисленного выражения" (это к фразе "Нету такого понятия" (нет слова "нету", btw))

+1
Я ответа на свой вопрос так и не услышал и могу констатировать необоснованные попытки критиковать мои выводы? Хорошо.

Ваш последний пример подразумевает явный возврат результата в любом случае

Мой пример, как и пример из статьи подразумевает два выхода из функции. Всё остальное — попытки уйти от ответа.

который так же поддерживает неявный возврат «результата последнего вычисленного выражения»

Меня мало волнует то, что там как и что поддерживает. Я не об этом говорил и не про это спрашивал. Я утверждал, что два выхода быть не может — вы попытались с этим поспорить. Я вам что-то начал объяснять, потом показал пример — вы куда-то поплыли.

К тому же, что за попытки необоснованно опровергать мой тезис рандомной фразой. Что она опровергает? Что из неё следует? К чему это написано? Ответа нет(и не будет).

Если вам непонятно почему такого нет в базовой семантике — это очень странно. Вы либо сами не читаете написанные вами цитаты, либо я даже не знаю.

который так же поддерживает неявный возврат «результата последнего вычисленного выражения

В это фразе определяется то, что в функции нету возврата, нету такого понятия как возврат. У функции есть лишь последнее вычисленное выражение, а уже возврат — это неясная семантика. Да и вообще это совершенно другое понятие, а не возврат. Это некий „подвозврат“ т.к. он не обладает полнотой семантики базового.

Объясню проще. Есть базовая семантика {a; b; c; d;} — в ней нет никакого возврата. То, что такой-то „язык“ взял и впилил какую-то пародию на возврат в d; — это не значит, что эта семантика стала частью базовой.
-2
Я только сейчас посмотрел на код функции у которой я выкидывал скобочки. Да там манипуляции ещё похлеще скобочек.

function findGreatest(num1, num2) {
  if(num1 > num2)
    return num1
  if(num2 > num1)
    return num2
  return false
}

Правильно код выше должен выглядеть так. А теперь, я думаю, что вторая манипуляция очевидна.

Т.к. в этом «языке» нет явного return, то там попросту нельзя написать такой код. Именно поэтому родилась подобная портянка:

def findGreatest num1, num2
    if num1 > num2
        num1
    elif num2 > num1
        num2
    else
        false

Т.е. автор кортянки пытается свести логику к одному выходу через ifelse, когда как в js этого делать не нужно, ведь там может быть больше одного выхода. Но он сделал тоже самое в js, хотя подобный код — это лишь следствия слабости его «языка». А почему он так сделал? Он пытался всех обмануть.

Это так же ответ на вопрос выше — почему не может. Именно потому, что не может быть два return и родился такой код.
+1

С нативным js я чувствую силу, а тут только отголоски силы.


В стандартном js можно программировать и без скобок — стрелочными функциями, если this не нужен. lmba я не буду использовать, не люблю обертки вокруг нативного языка.
Смотришь что это чудо нагенерировала и диву девишся. Подожду es20xx, когда сделают типизацию.

Только полноправные пользователи могут оставлять комментарии. , пожалуйста.