1. JavaScript / Говнокод #26271

    −2

    1. 1
    https://news.ycombinator.com/item?id=21779397

    Я джва года ждал такую книгу!

    Запостил: bootcamp_dropout, 15 Декабря 2019

    Комментарии (29) RSS

    • Во пидарасы, испоганили книгу.
      Ответить
      • Так там же лишп был в оригинале. Но жс - потомок лишпа. Лишп мало кому стал нужен, а жс в ходу и понятен людям. Пусть образование станет доступнее.
        По сути, ничего плохого не стало. Сицп рассказывает о концепциях, а не о том, как складывать число со строкой. Тут можно хоть на богомерзком "bash" делать примеры.
        Ответить
        • > Тут можно хоть на богомерзком "bash" делать примеры.
          Но-он! [[ Не ]] трогай красноглазую святыню!
          Ответить
          • > [[
            а можно без башизмов тут?!

            В "Bourne Shell" нет никаких двойных этих.. блядь.. ну как их... квадратных...
            Ответить
            • [[ — это вообще имя программы (либо символическая ссылка на «Занятую коробку»).
              Ответить
              • не совсем

                В борновой ракушке была только одна скобка
                Она имела подлый характер, и не поддерживала > и <
                Этим она бесила всех, и когда стоячий человек делал борновую снова ракушку, он ввел туда две скобочки

                Разумеется, занятая коробка косплеит борновую снова ракушку

                https://serverfault.com/questions/52034/what-is-the-difference-between-double-and-single-square-brackets-in-bash?answertab=votes#tab-top
                Ответить
                • Если [[ в новом «Баше» является ключевым словом и изменяет парсинг некоторых символов, то как же суррогат [[ в «Занятой коробке» справляется с < и & в тех оболочках, которые не поддерживают [[ ?
                  Ответить
                  • занятая коробочка же сама себе оболочка, не?
                    Ответить
                    • Это вроде набор утилит. Хотя погодите, в неё в саму входит «ash» в качестве одной из утилит:
                      https://git.busybox.net/busybox/tree/shell

                      Надо поковырять встроенный в коробочку «ash». Возможно, в нём как раз пропатчен парсинг.
                      Ответить
                      • думаю аш умеет
                        и кыш умеет

                        неумеет може ванильный ш в какомнить драгонфлае разве что
                        Ответить
                        • Нашёл:
                          /* BASH_TEST2: [[ EXPR ]]
                           * Status of [[ support:
                           * We replace && and || with -a and -o
                           * TODO:
                           * singleword+noglob expansion:
                           *   v='a b'; [[ $v = 'a b' ]]; echo 0:$?
                           *   [[ /bin/n* ]]; echo 0:$?
                           * -a/-o are not AND/OR ops! (they are just strings)
                           * quoting needs to be considered (-f is an operator, "-f" and ""-f are not; etc)
                           * = is glob match operator, not equality operator: STR = GLOB
                           * (in GLOB, quoting is significant on char-by-char basis: a*cd"*")
                           * == same as =
                           * add =~ regex match operator: STR =~ REGEX
                           */
                          
                          ...
                          
                          #if BASH_TEST2
                          		case TAND: /* "&&" */
                          		case TOR: /* "||" */
                          			if (!double_brackets_flag) {
                          				tokpushback = 1;
                          				goto out;
                          			}
                          			wordtext = (char *) (t == TAND ? "-a" : "-o");
                          #endif
                          
                          ...
                          
                          #if BASH_TEST2
                          			if (strcmp("[[", wordtext) == 0)
                          				double_brackets_flag = 1;
                          			else if (strcmp("]]", wordtext) == 0)
                          				double_brackets_flag = 0;
                          #endif


                          Обработку < и > пока не нашёл.
                          Ответить
                          • Да, < и > внутри этих, двойных квадратных, как их там, ash не поддерживает.
                            Ответить
        • lisp очень отличается от стандартных языков программирования, как и чтение SICP - от текущих методов обучения программистов. Хорошо конечно, что таким образом книга популяризируется, но lisp мне всегда казался ее неотъемлемой частью
          Ответить
        • > Но жс - потомок лишпа
          В смысле? Откуда? Лишп на многие языки каким-либо образом повлиял, конечно, но жс — уж точно не его потомок.
          Ответить
          • Не, в жс какие-то лишпенские конь-цепции были завезены.
            Ответить
            • Малость какие.

              Много синтаксиса взято из сишки.
              Динамическая тупизация навеяна бейсиком/фортраном.
              Самая главная фишка js — массивообъекты, взяты из awk.
              Из лиспа только функции возвращающие функции, но идея довольно примитивна, так что не факт.
              Ответить
            • Прототипы вроде были в smalltalk.
              Но здесь я не уверен, возможно повлиял и Common Lisp.

              Если интересны истоки js — я бы сел и перечитал Крокфорда. Лучше него не знает никто.

              http://crockford.com/javascript/
              Ответить
              • кому нахуй интересны истоки говна?
                Это все равно, что читать как изобретали мейлру или пхп
                Ответить
            • Lisp in C's Clothing
              
              JavaScript's C-like syntax, including curly braces and the clunky for statement, makes it appear to be an ordinary procedural language. 
              This is misleading because JavaScript has more in common with functional languages like Lisp or Scheme than with C or Java. 
              It has arrays instead of lists and objects instead of property lists. 
              Functions are first class. It has closures. You get lambdas without having to balance all those parens.
              
              https://www.crockford.com/javascript/javascript.html


              Это Крокфорд написал в 2001. Он просто ещё не знал что будет ES6, который станет новой Жабой.

              Когда js был довольно простым динамическим функциональным языком, как и Лисп. Сейчас функциональщиной уже никого не удивишь.

              А современный js из сишки вёба превращается в Web С++.
              Как С мутировал в С++ через C with Classes.
              Ответить
              • Ты пал настолько низко, что уже постишь вореции из справки?
                Кложуры какие-то, лямбды, динамика.

                Мой любовник живет в Кабардино-Балкарии. Весной поеду к нему трахаться.
                Ответить
    • а на пхп переведуь?
      Ответить
      • Лучше! Мы переведем php на js
        Ответить
      • Я «Apache» подниму,
        «Notepad» запущу,
        Порт открою, по «FTP» я залью.
        Не жалейте меня, я анскильный петух,
        Клювом щёлкаю я зёрна порой.
        Ответить
    • Один пацан писал все на JavaScript, и клиент,
      и сервер, говорил что нравится, удобно, читабельно.
      Потом его в дурку забрали, конечно.
      Ответить
    • промахнулся тредом
      Ответить

    Добавить комментарий