Субъективный Си / Говнокод #17224 Ссылка на оригинал

0

  1. 1
http://habrahabr.ru/post/244487/

Очень жаль всех этих людей, которые вынуждены писать на этом выхлопе от Apple.
"Мыши плакали, кололись, но продолжали грызть кактус."

Запостил: cyperh cyperh, (Updated )

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

  • Это что, в некоторых языках ВООБЩЕ нет ни именованных параметров, ни каррирования, ни возврата нескольких значений, ни вложенных функций.
    Или есть но через жуткие костыли - и ведь все равно едят.
    Ответить
    • Я не знаю про какие костыли говоришь, но не понимаю как это все можно называть более читаемым. Как можно нызвать читаемым вот это?
      func hello(name name: String) {
          println("hello \(name)")
      }

      зачем нужно вот это вот личшее name якобы для именования параметра, это больше похоже на костыль, мол делали делали они Swift, обкурившись травы, сделали, а потом начали судорожно добавлять костылей, о которых ты говоришь. Swift еще более менее читаемым сделали, по сравнению с objective-c, имхо.
      Ответить
      • И дальше по тексту следующее: "Вместо этого, просто добавьте # перед именем параметра для сокращения", да, мне нужно еще знать, надо поставить # или _ для этих именованых параметров, тем более что дальше.
        Про init вообще убило: "Заметим, что в противоположность другим методам, имя первого параметра init метода всегда требует внешнего имени при получении экземпляра класса."
        Ответить
        • Ну, для меня как постороннего человека что ObjC, что Smalltalk выглядят как куча квадратных скобок, которые надо напрягая мозг парсить. Для человека разбирающегося в ObjC - возможно будет наоборот, но эппл видимо решило на это не рассчитывать.
          А swift - вполне понятен без знания языка. Ну да, #. А в примере на ObjC в начале статьи вообще какие-то загадочные плюсы и минусы, да еще и указатели в 21 веке.
          А про костыли - это языки типа крестов имел в виду.
          Ответить
      • func hello(name name: String) {
        println("hello \(name)")
        }
        This code you can use!
        hello(name:"MyNameIsShit");
        Or
        hello("MyNameIsShit")

        if you will implement code
        func hello(# name:String) {
        println("Hello \(name)")
        }
        the sharp will inform compiler that external name of variable is the same.

        You can implement
        func hello(name:String) {
        println("Hello \(name)")
        }
        But in this case you cannot call the method
        hello(name:"MyNameIsShit")

        Xcode will warning you if external name is the same with local name and will suggest you to put sharp prefix.
        Ответить
  • На чем же ты зарабатываешь себе на жизнь, друг?
    Ответить
      • Но ведь яблочники - одна из самых платежеспособных аудиторий... Или нет?
        Ответить
        • Этого я не знаю) Тем более что тема именно о кривости синтаксиса самого яблочного языка и том, как они делают костыли, про которые потом говорят как о средствах повышения читабельности. Ну да, посреди этой кривости, может быть это и правда средство для повышения читаемости, вопрос лишь в том, почему сразу нельзя было сделать код читаемым, чтобы потом не городить весь этот зоопарк.
          Ответить
        • Думаю, что лобать на яве для банков еще выгоднее. Но ява куда хуже.
          Ответить
            • собственно, javaee разная бывает
              есть замечательные ejb/ws/jpa (но, скучноватые)
              а есть полный ад и израиль jsf
              Ответить
              • О уважаемый в прошлом С++ маг... Расшифруй для нас эти обревиатуры.
                Ответить
                • ejb - Предприимчивые Кофейные Бобы
                  ws - Паутинная Служба
                  jpa - Зодчество Кофейного Упорства
                  jsf - Лица Кофейного Подноса
                  Ответить
                  • Вам следует работать в Microsoft. Лет десять назад было такое развлечение: читать MSDN/TechNet на русском и угадывать что значит "веб узел", "обозреватель" и "система имен ответственности"
                    Ответить
                • в ынтерпрайзной жабке дофига "технологий"-кирпичей, которыми высирается очередной щедевр

                  технологии стандартизованы, и вендоры вправе делать собственные имплементации, сохраняя апи (вендоры же должны иметь возможность доказать, что именно их веб-апп-сервер надо купить за $50к, а не конкурентный за $40к)

                  об этом ты можешь почитать и на педивикии в javaee/Технологии

                  часть технологий проста и логична, их можно смело закладывать в фундамент своего ынтепрайзного проекта с уверенностью, что примененные решения будут актуальны, производительны ещё много лет

                  причем настолько проста, что вовлечение новичка в процесс не занимает много времени, налажать сложно, при желании можно нанять армию обезьянок и всё равно получить вменяемое масштабируемое решение

                  а есть безумная отрыжка сатаны JSF, которой продлевают жизнь только из-за подсаженных на крэк, и благодаря ей жаваее имеет плохую репутацию

                  один софт, который мы сопровождаем (и интегрируем) имеет бекофис на JSF
                  я жду по 60 секунд открытия страниц, где можно конфигурять те или иные бизнес-объекты
                  это просто маразм
                  Ответить
                  • Смешно что при этом цветет и пахнет апокрифический мир спринга, который вскоре и вовсе перейдет на OSGI и
                    JavaEE станет ему не нужна.
                    Ответить
                    • osgi давно пора, а то спринговый монолит для серьезного решения иногда напрягает целиком редеплоить
                      всё никак не принужу своих жавоёбов освоить, жалуются, что времени у них нет
                      Ответить
                      • >> жабоёбов
                        _    _
                           (o)--(o)
                          /.______.\
                          \________/
                         ./        \.
                        ( .        , )
                         \ \_\\//_/ /
                          ~~  ~~  ~~


                        Впринципе, можно и без OSGI редеплоить по частям. При наличии SOA/ESB можно редеплоить кусочек
                        Ответить
  • А слона то я и не заметил. Там, оказывается, еще одна статья имеется, http://habrahabr.ru/post/244575/ Switch обработка ошибок. Си стайл? И это позиционируется как что то новое и воспринимается как хорошее?
    Ответить
    • Это не си-стайл, это ФП-стайл, как в каком-нибудь хаскеле. Так что да, позиционируется как новое и преподносится как хорошее.
      Ответить
      • Один-в-один как в Хексе. Ну только там не ошибки так обрабатывают, но swtich используют таким образом, и синтаксис такой же. Я даже сначала подумал, что это код на Хексе.
        Все-таки, поскольку на Хексе я таки написал что-то порядка 20К-30К строк, то могу честно сказать, что это не удобно. Все те же проблемы с композицией и расширяемостью. Снижается возможность повторного использования кода (энумератор уже никак не дополнить после того, как он существует, только править исходники). Вобщем, буэ.
        Ответить
    • Очень жаль всех этих людей, которые не пробовали монадическую обработку ошибок, но при этом любят кричать с колокольни и кидаться какашками. К слову, в Rust обработка ошибок построена аналогично.
      Ответить
      • Не пробовал, да и не тянет). Да меня больше смущает нагромождение синтаксиса, которое трактуется как способ повышения читаемости. Я человек далекий от яблок, но прочитав эти посты на хабре, мне реально стало противно. Похоже на очередную попытку яблок сделать что то "особенное" из того, что им не является. Я правда не понимаю зачем все эти усложнения и какую цель приследовали разработчики. Раз это инструмент разработчика, почему бы не сделать его простым и понятным? Не знаю специально или нет, но ведь в целом языки, многие, имеют схожий синтаксис и семантику и в этом есть смысл. Когда впервые увидел Obj-C, ничего не понял. Понятное дело что все это дело привычки, но первые впечатления явно отталкивающие.
        Ответить
        • Мне всё же кажется что лучше попробовать язык прежде, чем говорить что "не тянет":)

          Я вовсе не защищаю Apple, но фраза "не пробовал, да и не тянет" напоминает как раз крики типа "виндус мастдай" которые мы тут недавно обсуждали)
          Ответить
        • > Я правда не понимаю зачем все эти усложнения и какую цель приследовали разработчики.

          А мне вот всё прекрасно понятно. Взяли модные течения из современных языков вроде Scala/Go и поставили их на рельсы отлаженной платформы.

          Люди, писавшие на Scala или других гибридных/мультипарадигменных языках, врядли удивятся хоть одной фиче языка, введённой в Swift.

          Маком не пользуюсь, на свифте не пишу. Статьи открыл, ничего особо плохого в свифте не увидел.
          Есть какие-то конкретные претензии к языку? Потому что пока это выглядит как "ололо тут не так, как я привык, значит - говно!".
          Ответить
          • Вот у меня претензии по именованию: во-первых, зачем писать name1 name2 type и использовать как #name2 value вместо того, чтобы писать name type и использовать как #name value.
            Плюс какая-то асимметричность этой записи относительно первого параметра. Где-то его писать нельзя, где-то нужно, из-за чего возникают какие-то странные традиции именования.

            Больше претензий нет.
            Ответить
            • >Вот у меня претензии по именованию: во-первых, зачем писать name1 name2 type и использовать как #name2 value вместо того, чтобы писать name type и использовать как #name value.
              Совместимость с obj c, я полагаю. В нем методы
              - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {} // Objective-C


              именуются

              tableView:numberOfRowsInSection:

              "name1 name2 type" name1 будет частью имени метода

              У меня пока претензии к отсутствию namespace, вменяемой модульности и, в целом, к огороженности яббла
              Еще могу вспомнить, что я ронял компилятор swift и clang/llvm у меня пропускал некоторые выражения
              Ответить
              • >>У меня пока претензии к отсутствию namespace, вменяемой модульности и, в целом, к огороженности яббла
                Еще могу вспомнить, что я ронял компилятор swift и clang/llvm у меня пропускал некоторые выражения
                Подпишусь под каждым словом. По той причине, пока, переходить на свифт резона не вижу, но, пока. Статья же, отчетливо отдает первым языком человека: "Ой, тут педалька другого цвета? Какая гадость".
                Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8