Вы никогда не задумывались, как выглядит код на JavaScript для программиста, у которого родной язык — английский? Представьте, насколько удобнее им читать и писать код на своем «нативном» языке, насколько ускоряется время разработки и уменьшается количество багов. А ведь использование английского языка как основы для языков программирования не обусловлено ничем, кроме того, что «так исторически сложилось».

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

Это основные доводы, которыми руководствовались мы, решив написать свой, русский язык программирования.
С другой стороны, давайте посмотрим правде в глаза: зачем изобретать очередной велосипед? Навряд ли язык, созданный небольшой группой энтузиастов, когда-нибудь сможет составить конкуренцию таким монстрам, как JavaScript или Python. После недолгих обсуждений, утихомирив наш пыл, мы решили начать с малого и написать транспиллер в JavaScript.
Так и родился наш проект — PycckuuJS.
Первое, с чего мы решили начать, — это loader для Webpack, с которым вы можете ознакомиться в репозитории на GitHub.
Процесс его установки и использования максимально прост и удобен. Достаточно установить npm-пакет и добавить pycckuu-loader в ваш webpack.config.js для файлов с расширением.яс.

Вот пример минимального конфигурационного файла:

module.exports = {
    entry: "./тест.яс",
    output: {
        path: __dirname,
        filename: "result.js"
    },
    module: {
        loaders: [
            { test: /\.яс$/, loader: "pycckuu" }
        ]
    }
};


Это позволит использовать русские ключевые слова в JavaScript.

Например, такой код:

пер сотрудники = ['Владимир', 'Дмитрий', 'Николай']

пер приветствовать = функция(имя){
    консоль.логировать('Привет ' + имя + '!')
}

цикл(пер и=0; и<сотрудники.длина; и++){
    приветствовать(сотрудники[и])
}


Будет транслирован в:

var сотрудники = ['Владимир', 'Дмитрий', 'Николай']

var приветствовать = function(имя){
    console.log('Привет ' + имя + '!')
}

for(var и=0; и<сотрудники.length; и++){
    приветствовать(сотрудники[и])
}


С полным списком соответствий можете ознакомится в репозитории на GitHub.
На данный момент loader находится в состоянии MVP (Minimum viable product), так что будем рады вашим pull-реквестам, советам и критике.
На ближайшее будущее запланировано доведение pycckuu-loader до стабильного состояния и создание плагинов для подсветки кода в популярных средах разработки.

UPD Товарищи ставящие минусы, ну имейте хоть капельку чувства юмора.
Поделиться с друзьями
-->

Комментарии (167)


  1. amarao
    06.05.2016 16:48
    +56

    Это пир духа. Натуральная.


    1. war_hol
      06.05.2016 17:32

      спасибо, мы старались!


      1. mpakep
        06.05.2016 21:08
        +1

        Сразу распредложение. Хотелось бы видеть методы jQuery их там не так много. И как назвать саму библиотеку?

        жКвери.искать(«тело») красота же.


        1. Bhudh
          06.05.2016 21:53
          +4

          Не так много?
          https://api.jquery.com — не знаю у кого как, у меня за 30 экранов в высоту.


          1. mpakep
            06.05.2016 22:07

            Не все наверно. Основные конструкции .find .on .off .parents .each .filter .hide .show может еще с десяток, которые составляют 90% кода.


            1. Bhudh
              06.05.2016 23:34
              +1

              Тут фишка jQ в том, что он укорачивает имена нативных методов. Даже тот же forEach > each.
              А тут что будет, яЗапрос('жырно').родители().показать()?


        1. war_hol
          06.05.2016 23:30
          +53

          Мы думали заменить символ jQuery-$ на символ рубля.


          1. nckma
            07.05.2016 07:42
            +1

            У вас цикл по переменной «и». А как будет логическая операция && типа «если( и>5 и и<10)»?


            1. romy4
              07.05.2016 15:41
              +1

              Вестимо, что надобно использовать і: «Война і миръ»


          1. riot26
            07.05.2016 15:07
            +4

            жЗапрос


            1. RomanPyr
              08.05.2016 16:18
              -1

              яЗапрос от Java — Ява.


        1. orcy
          07.05.2016 08:53
          +1

          jQuery тоже надо перевести: жЗапрос.искать()


          1. stdrone
            07.05.2016 13:23

            тогда уж как выше предложили
            яЗапрос


        1. vdonich
          07.05.2016 15:07
          -5

          яОчередь же.


          1. sompylasar
            07.05.2016 17:34
            +2

            queue !== query


          1. stargazr
            07.05.2016 19:03
            +1

            Очередь — queue.


          1. vadimzz
            10.05.2016 18:27
            +1

            Мне кажется, что этот проект создан для вас :)


      1. cry_san
        07.05.2016 03:42

        Вначале подумал — старались? А потом перечитал заново

        пир духа

        но только уже делая паузу.


      1. Fxyz
        07.05.2016 15:07

        где тесты производительности?


      1. Yaroslaw_Alex
        07.05.2016 19:03
        +1

        Когда выпустите книгу «КофеСценарий для чайников»? ;)


        1. hacklex
          09.05.2016 13:44
          +2

          Для кофейников, наверное


    1. stas404
      06.05.2016 19:09
      +3

      пер духа = натуральная.


  1. MetaDone
    06.05.2016 16:49
    +1

    http://miryanka.ru/frame.js
    теперь я знаю кто автор этого скрипта!


    1. vlreshet
      06.05.2016 16:51
      +3

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


      1. MetaDone
        06.05.2016 16:54
        +17

        function ПреобразоватьСтрокуВФорматПросмотра(Строка, ЗаменитьНа, ОбрезатьДо) {
        	Строка	= Строка.split("<br>").join(ЗаменитьНа);
        	if( Строка.length > ОбрезатьДо )
        		Строка	= Строка.substr(0, ОбрезатьДо)+"...";
        	return(Строка);
        }
        

        пресвятой Ктулху, я вообще не подозревал что так можно писать и что это будет работать. Чертовы 1с'ники
        а если серьезно по теме топика — мне кажется читабельность на практике сильно страдает, вышеприведенный кусок вполне показателен


        1. Zenitchik
          06.05.2016 22:34
          +3

          Всё гораздо хуже. Поди набери в русской раскладке операции сравнения… Поэтому программировать по русски никто и не любит.


          1. roach1967
            07.05.2016 15:07
            +5

            «Вам нравится русский язык, вы любите программировать…
            Начните программировать на 1С.
            Вы возненавидите и то и другое.»©


          1. vadimzz
            10.05.2016 18:32

            Это окно возможностей для монетизации проекта. Можно будет наладить выпуск специальных клавиатур для программирования на русском. Илон Маск, конечно, продал бы их вначале как обычные клавиатуры, а потом бы за три доллара предложил софтверный апгрейд до правильной, но мы же тут все честные люди.


      1. mwizard
        06.05.2016 16:58
        +5

        Судя по переменным «ЗнаСХение», «ПреобразоватьМесяцИзСХислаВСтроку», «СХисло» и «СХас», изначально это писалось транслитом, типа «CHislo», а потом конвертировалось. Возможно, по словарю. Вот только зачем?


        1. FlameStorm
          10.05.2016 21:58

          И ведь действительно страшно зайти на сам сайт и спросить зачем они такое сделали. В смысле, задача функции понятна, но зачем это было делать так ужасно? (на самом деле страшно, вдруг мозг сломают безвозвратно)

          function ПреобразоватьМесяцИзСХислаВСтроку(Месяц) {
          
          		if( Месяц == 1 )	return("января");		if( Месяц == 7 )	return("июля");
          		if( Месяц == 2 )	return("февраля");		if( Месяц == 8 )	return("августа");
          		if( Месяц == 3 )	return("марта");		if( Месяц == 9 )	return("сентября");
          		if( Месяц == 4 )	return("апреля");		if( Месяц == 10 )	return("октября");
          		if( Месяц == 5 )	return("мая");			if( Месяц == 11 )	return("ноября");
          		if( Месяц == 6 )	return("июня");			if( Месяц == 12 )	return("декабря");
          
          }
          


          Я уважительно и с пониманием отношусь к Христианству в целом и его ветвям в частности.
          Но вот эти — «Первым десяти Миряночкам, оформившим заказ, красный шифоновый платок в подарок» — явно секта. Ещё и программер под стать.


    1. Bhudh
      06.05.2016 19:10

      Да, return как функция, со скобочками, это сильно.
      Сам я, помнится, переписывал на боярский бота для небызызвестной здесь игры: pastebin.com/e9zx9XeH.


  1. hmspns
    06.05.2016 16:56
    +9

    А смысл этого действа? Длина ключевых слов больше чем в английской версии, значит набирать дольше; части символов, типа [], {} нет в русской раскладке, т.е. придётся постоянно переключать раскладку. Плюс проект на 100% привязывается к русскоговорящим разработчикам, отдать его на запад или индусам для доработки уже не получится.


    1. batyrmastyr
      06.05.2016 17:28

      Зачастую переведённые на английский названия сущностей вызывают мысль «это что ещё за зверь? Как оно на русском звалось-то?».


      1. ErickSkrauch
        06.05.2016 18:20
        -3

        Ну напишите транслитом в конце-концов. Смена раскладки обходится слишком дорого при написании кода, об это как бы спотыкаешься. Хотя тут ещё стоит поднять вопрос на тему того, а зачем вам вспоминать, как оно называлось по-русски, если вы пишете по-английски?


      1. dom1n1k
        06.05.2016 19:15
        -2

        Это признак того, что как минимум один из двух кодеров (писавший или читающий) не владеет бизнес-логикой программы.


        1. rombell
          06.05.2016 23:30
          -1

          Я как-то пришёл в проект, где от предыдущих разработчиков осталось куча сущностей вида format custom. Классы CSS, ID в HTML, классы, переменные и методы во фронтэнде и бэкэнде. Как думаете, что это может значить в контексте интернет-магазина?
          (спойлер не могу вставить)

          custom — товар
          format custom — товар, который покупатель зарезервировал (оформил в будущую покупку)
          так уж лучше по-русски писали бы :(


        1. batyrmastyr
          10.05.2016 09:44
          +1

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


          1. dom1n1k
            10.05.2016 15:57

            Поскольку эту специфичный локальный термин, уместна калька — MotherCapital
            Может быть не совсем корректно, зато понятно и англичанин это читать никогда не будет.
            Это как Sputnik или Tsar.


            1. batyrmastyr
              10.05.2016 18:30

              Увы, эта как раз та калька, что вызывает смех у всех (но в код пошла именно она).
              Подобные «специфические локальные термины» пачками встречаются в проектах рассчитанных на российские реалии и проблема корявых названий на английском кроется не в (не)знании предметной области, а, банально, в языковых различиях.

              Резюмируя — в идеале было бы не насиловать мозг себе и коллегам и давать нормальные (читай: без перевода на не связанные с предметной областью языки) названия, но солянка из русских и английских слов выглядит часто выглядит ещё хуже таких вот МатушекМосковий, да и набирать замучаешься.


              1. dom1n1k
                10.05.2016 18:56

                Не вижу причин для смеха, вполне нормально звучит. Capital не только столица, но и капитал тоже. Country — страна или деревня?


                1. batyrmastyr
                  11.05.2016 10:38

                  Видимо у вас не срабатывает ассоциация с Mother Russia одновременно с преобразованием MotherCapital -> Москва )
                  В существовании значения «капитал» я и не сомневался, но вспоминается в первую очередь столица.


                  1. dom1n1k
                    11.05.2016 13:21

                    Логика понятна, но как-то надумана. Это явно не самая первая ассоциация.


    1. ZiggiPop
      06.05.2016 19:52
      +2

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

      Но вот насчет русской раскладки — это вы немного погорячились. Нет в стандартной раскладке, но есть сторонние раскладки, в которых не нужно переключаться на английский, чтобы набрать []{}<>.

      Я предпочитаю типографскую раскладку Ильи Бирмана, но для программистов, пожалуй, удобнее такая чудная штука, как расширенная раскладка для русского языка Александра Куклева.

      На Хабре была статья об этом. Очень облегчает жизнь.

      Кстати, украинцам в linux вообще хорошо — стандартная украинская раскладка сразу же поддерживает не только введение большого количества типографских символов, но и некоторые буквы, специфичные для русского языка. В результате для трех языков не нужно держать три расскладки, а хватает только двух.


  1. ianbrode
    06.05.2016 17:05
    +76

    Теперь frontend engineer может гордо называть себя Инженер Переднего Конца.


    1. batyrmastyr
      06.05.2016 17:16
      +2

      Зачем уж так гуглопериводчезки — можно ведь быть передовиком или авангардистом )


      1. HurrTheDurr
        06.05.2016 19:40
        +19

        Фронтовик! А backend engineer, соответственно, — тыловик.


  1. akvakh
    06.05.2016 17:10
    +7

    связать, сдвинуть, раздвинуть, совместно, впихнуть — авторы явно вдохновлялись 50 оттенками серого.


    1. war_hol
      06.05.2016 17:30
      +1

      ну не всегда.


      1. nckma
        07.05.2016 07:45
        +3

        Но в целом: отличная статья для 1-го апреля получилась.


  1. gof
    06.05.2016 17:11
    +10

    Увиденное не развидеть. Аля 1С код.


  1. m1n7
    06.05.2016 17:11
    +36

    Ура, импортозамещение!


  1. kentaskis
    06.05.2016 17:16
    +9

    Валяется у меня в старых заметках вот такой отрывок с какого-то форума:




    для русских программистов англоязычные ключевые слова скорее благо чем зло. Почему?
    Если встречаешь слово, например, ПРОЦЕДУРА, то к нему у нас прилеплено в сознании много чего — типа "неприяная процедура", "процедура удаления зуба" и т.п… — мало ли какой опыт жизненный у человека был. Все эти ассоциации хочешь-не хочешь, а подымаются из памяти, когда читаешь текст и так или иначе засоряют пространство сознания вещами, не имеющими отношения к делу. С английскими ключевыми словами бытовых ассоциаций у русского человека нет или почти нет, поэтому к ним относишься сразу как к знакам (иероглифам, в каком-то смысле) именно с тем смыслом, который они имеют в языке программирования, а не в жизни. От этого восприятие должно быть легче и соответственно мышление — быстрее. IMHO — так оно и есть.
    При этом обратите внимание: Вирт — швейцарец, по английски говорит классно, но язык этот для него не родной. Как и для его студентов, для которых он, собственно и языки придумывает. Потому для него как раз хорошо ипользовать BEGIN/END — легко запомнить. Сами же американцы, как иногда кажется, из кожи вон лезут, чтобы избежать употребления реальных слов в программных текстах в качестве ключевых. Сишный синтаксис, который активно переиспользуют и в Java и в C# — по-моему тому хорошее подтверждение.




    1. Fiery_Ice
      08.05.2016 14:04

      Склонен согласиться. Ведь если вспомнить историю — то для названий каких-то новых лекарств или изобретений — часто использовали «мертвый» язык — латынь. Т.е. брали несколько слов из латыни и комбинировали их в один термин. Видимо тут было два фактора:

      1. Латынь — была достаточно общеизвестна (как и английский сейчас).
      2. Комбинация слов собственного языка могла звучать так же неблагозвучно, как и вышеозначенная «ПирДуха», что превращало бы учебный процесс, или процесс обсуждения чего-либо, в балаган. :)


  1. d1st
    06.05.2016 17:16
    +5

    вспоминилось
    image


    1. kost
      06.05.2016 19:55
      +2

      Получится квадрат!

      Черкпашка.


    1. misato
      06.05.2016 20:35
      +2

      LOGO!


      1. d1st
        06.05.2016 21:14

        именно :)


  1. lizarge
    06.05.2016 17:17
    -8

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

    Все это напоминает мне наш с другом университетский проект по курсу трансляторов под названием «Сало» с синтаксисом на украинском языке, только этим мы занимались в рамках курсовой работы и были студентами. А не предлагали куда — либо внедрять.


    1. war_hol
      06.05.2016 17:30
      +14

      Мы Вам тоже не предлагаем внедрять.


  1. E_STRICT
    06.05.2016 17:22

    С подсветкой синтаксиса всё не так уж и плохо.


  1. ekapinos
    06.05.2016 17:23
    +29

    Для того чтобы представить перспективы Вашего творения предлагаю оценить код на самом распростаненном языке планеты

    (смотреть до просветления)


    1. war_hol
      06.05.2016 17:29
      -11

      А вы покажите ваш код на английском жителям Зимбабве!


      1. vinnikov
        06.05.2016 17:34
        +7

        А вы покажите на русском.


        1. war_hol
          06.05.2016 17:38
          +1

          нет Вы первые предложили кому-то показывать!


      1. maxpain
        06.05.2016 17:42
        +50

        Английский – официальный язык в Зимбабве.


        1. ekapinos
          06.05.2016 18:00
          +22

          Вот это поворот :D


        1. war_hol
          06.05.2016 18:05
          -9

          везет им


        1. Wyrmling
          06.05.2016 18:58
          -9

          Окей, тогда покажите в Буркина-Фасо.


    1. lockywolf
      06.05.2016 20:23
      +16

      Ни фига он у вас не самый распространённый. Ваш код — на тайваньском, а не на мандарине.

      Простой, кстати, как валенок — проверяет введённое число на равенство 23.
      Выразительность, кстат, отличная. Один иероглиф — одна синтагма.


      1. juryev
        10.05.2016 10:39

        Между прочим, да, именно иероглифическая система письменности позволяет по-новому взглянуть на ЯП. Не обязательно, кстати, тайваньская, м.б. гонконгская, просто иероглифы неупрощённые


    1. usdglander
      07.05.2016 22:03

      И вот тут начинается реальный Дзен!


  1. BuriK666
    06.05.2016 17:24
    +3

    module.exports = function(content) {
    

    А что это Вы сами используете имена переменных на английском?


    1. war_hol
      06.05.2016 17:28
      +4

      Подловил!


  1. el777
    06.05.2016 17:32
    +17

    Я не могу в это серьезно поверить!
    Ну, пожалуйста, скажите, что вы просто прослоупочили 1-е апреля, и чтобы «материал не пропадал» опубликовали сейчас?
    Вам же не трудно признать такую мелочь, так? :)

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

    На самом деле использование английского языка имеет ряд преимуществ:
    — отсутствие склонений и спряжений делает текст программы похожим на нормальный язык. В коротком тексте это не чувствуется, но в большой программе на русском будет порядком конфликтов падежей и склонений — это будет раздражать и отвлекать.
    — если английский для вас неродной, то вообще все хорошо. Вы думаете о переменной, а не об ее названии.
    — использование латиницы с всего 26 буквами вместо 33 позволяет иметь все нужные символы на 1 раскладке стандартной клавиатуры. Сейчас для того, чтобы ввести фигурные скобки и знак «меньше», вам пришлось переключать раскладки.
    — это стандартный ASCII, который везде одинаков. Никаких ошибок перекодировок, битого юникода и прочего быть не может.
    — используемый набор слов очень простой. Это явно проще писать, чем «впихнуть» и «совместно».


    1. war_hol
      06.05.2016 17:37
      +2

      а вы посмотрите внимательнее в календарь)


      1. el777
        06.05.2016 17:39
        +4

        У меня на календаре 6 мая 2016 года.
        А у вас? )


        1. war_hol
          06.05.2016 17:41
          +5

          а у нас пятница и скоро праздники)


          1. el777
            06.05.2016 18:03

            Нее… перед этим были праздники )


    1. Areso
      06.05.2016 19:53
      +1

      Первый пункт изрядно раздражает в 1С, с которой приходилось сталкиваться пару-тройку раз. Часть объектов используется в ед.ч. м.р. и.п., часть склоняется. Ссылка.Пустая(), но Объект.Пустой() или Справочники.Контрагенты, но Регистр.Реквизиты


      1. Klaster
        10.05.2016 19:43

        МояТаблица = Новый ТаблицаЗначений


    1. deniskreshikhin
      10.05.2016 00:19

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

      Это если мало художественной литературы читать на английском, то да, кажется что все прилично выглядит. А вообще такая же «пир духа», как и на русском. В английском языке же смысл зависит от позиции слова, наличия артиклей и вспомогательных слов. А в программировании ничего этого нет. Поэтому в лучшем случае код звучит как заголовки в газетах, типа «FLORIDA MAN KILLS, COOKS, EATS SHARK»


      1. el777
        10.05.2016 10:29

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


        1. deniskreshikhin
          10.05.2016 12:35

          Да, но таким же образом можно и на русском писать. Например, вместо глаголов использовать отглагольные существительные типа «возврат строка» вместо «вернуть строку» и т.д. Т.е. добиться некоторого единообразного отклонения от норм, которое было бы всем понятно.


  1. ezhikov
    06.05.2016 17:33
    +1

    «Пуккуу-лоадер» отдает чем-то прибалтийским.



  1. pehat
    06.05.2016 17:36
    +15

    Релевантный баян.


    1. Smi1e
      06.05.2016 19:18
      +2

      Тэг a забыли перевести как я. Anchor = якорь.


      1. SomebodyElse
        06.05.2016 19:41
        +14

        <а> — это не якорь.
        <а> — это абзац.
        Так что все православно.


        1. Smi1e
          06.05.2016 19:51
          -2

          Всегда думал, что абзац — это p. Можете чем-то подкрепить свое утверждение?
          В защиту своей версии приведу следующий материал.


          1. mwizard
            06.05.2016 19:54
            +8

            SomebodyElse имеет в виду, что на картинке <а> кириллическая. Т.е. в человеческом HTML там был бы <p>.


          1. SomebodyElse
            06.05.2016 19:57
            +4

            Тем, что первая буква в слове абзац — а? Мы ведь все еще о руссифицированном хтмл?


            1. Smi1e
              06.05.2016 20:01
              +2

              Вы правы, не сразу понял. Вопрос снимаю, тэг уже переведен :)


          1. ZiggiPop
            06.05.2016 20:07

            Предыдущий комментатор имел в виду, что тег <а></а> — это не забытый непереведенный тег ссылки (anhchor), а вполне переведенный тег , который на русском действительно выглядел бы именно так: <а></а>.

            Вот, кстати, еще один недостаток «локализованных» ЯП. Сейчас мы точно знаем, что вся лексика ЯП почти гарантированно набрана символами из пространства ASCII, в ином случае мы рискуем не разобрать, какими символами набрано то или иное слово. Например, в какой раскладке набрано слово «Kyсoк»? Лишний источник неочевидных ошибок.


      1. MetaDone
        06.05.2016 21:47
        +3

        тогда уж

        <c></c> 
        
        — ссылко


        1. equand
          09.05.2016 12:08

          В СССР ссылок нет, так что якорь


    1. zooks
      09.05.2016 17:56

      — было бы более по-русски.


      1. zooks
        10.05.2016 00:46

        Простите, тег яргт — язык разметки гипертекста.


  1. vmb
    06.05.2016 17:40
    +6

    Какой-нибудь бедный грамотный программист будет долго пытаться понять, почему сотрудники.длина выдаёт ошибку, пока не заметит, что в русском ЯваСкрипт свойства и методы не проверили спеллчекером (длинна в примере, видимо, ошибок не выдаёт).


    1. war_hol
      06.05.2016 17:43
      +1

      спасибо, поправил. пример был до того как пришел первый pull-request с правками


  1. war_hol
    06.05.2016 17:48
    +13


    1. ekapinos
      06.05.2016 18:04
      +2

      Та да :) 'Бурление' Вы отличное в пятницу вечером затеяли.


      1. war_hol
        06.05.2016 18:19
        +3

        Жаль что не всем понравилось, я про рейтинг статьи(


        1. yadobr
          07.05.2016 08:05
          +1

          Ненависть)


  1. dmitry_ch
    06.05.2016 18:04
    +18

    Не удержусь:

    «Встречаются два 1с-ника:
    — Как дела?
    — Ну, если тебя интересует, как дела, конец если...»

    Спасибо вам! А уж за березку — особенно!


  1. vmb
    06.05.2016 18:14
    +4

    Один из многих минусов: в английском из-за омонимии частей речи (существительные и глаголы выглядят одинаково) можно использовать одни и те же имена для функций и контейнеров, например. Но вы бы хоть отследили в переводах это различие. Функции ведь как правило называются глаголами. А у вас в таблице соответствий появились существительные в именах функций: alert — внимание, filter — фильтр, map — карта, slice — часть. Глаголы у вас то в инфинитиве, то в повелительном наклонении (do — сделай). Ошибки всё ещё есть (попробывать вместо попробовать).

    Много непоследовательностей: super — супер и log — логировать (если уж переводить на естественный язык, так переводить всё); break — стоп и continue — продолжить (вместо обоих глаголов в английком, в русском междометие и глагол); var — пер и const — константа (то сокращаете, то нет); splice — соединить и join — объединить (разница сливается); typeof — тип и indexOf — номерВ.

    Покажите сначала свои варианты хорошему переводчику с английского и русскому филологу, они смогут исправить самые грубые несоответствия. Потому что throw — бросить, yield — уступить, unshift — раздвинуть, concat — связать сомнительно семантически, а push — впихнуть — стилистически.


    1. war_hol
      06.05.2016 18:18
      +7

      Спасибо за объективную критику. Хоть кто-то серьезно отнёсся.


      1. vmb
        06.05.2016 18:21

        Хоть и серьёзно, но негативно. Английский для программистов сейчас как латынь для медиков и фармацевтов. Вряд ли целесообразно здесь что-то менять. Разве что ради психологического эксперимента по разрыву шаблона)


        1. war_hol
          06.05.2016 18:50
          +3

          Ради психологического эксперимента и для разрыва шаблона у меня есть другой проект https://habrahabr.ru/post/207656/ а этот так just for fun)


  1. izvolov
    06.05.2016 18:16
    +7

    У вас ус отклеился сообщения к комитам не на русском.


    1. war_hol
      06.05.2016 18:18
      +8

      да, грешны.


  1. AllexIn
    06.05.2016 18:19
    +3

    UPD Товарищи ставящие минусы, ну имейте хоть капельку чувства юмора.

    Вынесите это предупреждение в начало.
    Потому что людям без чувства юмора(типа меня) уже на середине не хочется читать, а хочется минусовать. Предупреждение можно и не увидеть.


    1. war_hol
      06.05.2016 18:24
      +3

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


      1. Grox
        06.05.2016 22:01
        +1

        Вот совсем неочевидно )



  1. mwizard
    06.05.2016 18:31
    +21


  1. AreD
    06.05.2016 18:45
    +9

    вы упороты, вы офигенны


    1. war_hol
      06.05.2016 18:49
      +2

      вы правы


  1. zbase32
    06.05.2016 18:56
    -2

    Русофобии псто.


    1. war_hol
      06.05.2016 18:57
      +1

      Вы наверное и суслика видите?


  1. Akuma
    06.05.2016 20:01
    -1

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

    Вообще конечно забавно выглядит.
    Бедные 1Сники, наверное так мучаются :)


  1. mpakep
    06.05.2016 20:53
    +3

    Мне очень понравилось. Спасибо разработчикам за действительно актуальный продукт. Форкнулся. По возможности буду участвовать в разработке.


  1. batmandarkside
    06.05.2016 21:40
    +2

    Спасибо! Нужная штука. Завтра на портале заюзаю



  1. Zenitchik
    06.05.2016 22:31
    +2

    цикл(пер и=0; и<сотрудники.длина; и++)


    Как бы не так

    Должно быть
    для(пер и=0; и<сотрудники.длина; и++)


    Непонятно, кому и как пришло в голову обозначить цикл словом «для». Хорошо, что когда я впервые коснулся программирования, я не знал английского языка, и команды для меня не значили ничего, кроме того, что написано в мануале.

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


    1. war_hol
      06.05.2016 23:35
      +1

      Мы тоже подумали что слово для не самое подходящее и исправили досадный недочет.


    1. Bobak
      06.05.2016 23:39
      +3

      Да ладно, вполне логично.

      Звучит примерно так: «выполнить определенный код ДЛЯ 'и' равной от 0 до количество сотрудников.»
      Слово «цикл» здесь совершенно неуместно.


      1. juray
        08.05.2016 13:00

        Вспомнился школьный алгоритмический язык — там присутствует и «нц» (начало цикла) и «для»:

        алг Сумма квадратов (арг цел n, рез цел S)
        дано | n > 0
        надо | S = 1*1 + 2*2 + 3*3 + … + n*n
        нач цел i
        | ввод n; S:=0
        | нц для i от 1 до n
        | | S := S + i * i
        | кц
        | вывод «S = », S
        кон


    1. salas
      07.05.2016 02:25

      В питоне и перле есть конструкции с более очевидным порядком слов: [х*й для х из списка_х]. Да, "списка". Или уж все слова английские — или надо делать склонение. Иначе получился монстр из зловещей долины.


    1. vk2
      07.05.2016 10:21
      +2

      «Для» — вполне математично!


    1. cherrypick
      09.05.2016 17:57
      +1

      Мне казалось логичным, что «for» в данном случае используется в своем значении «в течение»


  1. Alesh
    06.05.2016 22:52

    Одинэс вам этого не простит)


  1. KoCMoHaBT61
    06.05.2016 22:53

    Почему никто не вспомнил боярский С++?



  1. bugabuga
    06.05.2016 23:27

    Потом будет маленькая радость отладки, когда, забывшись, кто-нибудь напишет одну английскую буковку в русском слове… :)


    1. war_hol
      06.05.2016 23:34
      +3

      что мешает сейчас написать одну русскую букву в английском слове?


      1. bugabuga
        06.05.2016 23:38

        В басурманском жабаскрипте ключевые слова не пишут по-русски, шансов меньше.


  1. eskrano
    06.05.2016 23:34

    Вы впустили битрикс в свой дом?


    1. war_hol
      06.05.2016 23:34

      не битрикс тогда уж, а 1с


  1. teemour
    06.05.2016 23:34
    +5

    можно миллионов двести распилить на импортозамещении


    1. war_hol
      06.05.2016 23:35

      ;-)


  1. berman
    06.05.2016 23:38

    Я удивлен тому, сколько человек минусуют такую веселую штуку. У pycckux разработчиков все печально с чувством юмора похоже


  1. iAchilles
    06.05.2016 23:39
    -3

    Язык Мордора.


  1. chemistmail
    07.05.2016 00:18

    image


  1. k0ldbl00d
    07.05.2016 00:22
    +5

    логировать => журналировать


    1. WinPooh73
      07.05.2016 09:27
      +6

      Тогда уж летописать. Journal тоже не исконно русское слово, из французского заимствовано.


  1. PaulOkopny
    07.05.2016 13:29
    +1

    Всё лишь бы язык не учить…


  1. GeMir
    07.05.2016 15:04

    Помнится была вполне нешуточная вариация Pascal, в которой можно было переключаться между оригинальным и «русифицированным» синтаксисом. Если не ошибаюсь, даже в школах предполагалось использовать.


  1. s_suhanov
    07.05.2016 15:05

    Не дает покоя слава 1С. )))


  1. cyber-jet
    07.05.2016 15:05

    push — вдавить
    reverse — развернуть
    если join — объединить, то slice — разбить, разрезать, разделить…
    some — любой


  1. tautomer
    07.05.2016 15:05

    У меня тоже есть такой транслятор кода прямо в браузере kolumb.tk/code
    Начал делать, чтобы показать одному малому, который с английским пока не дружит, как программируют игры. Изначально даже хотел подправить синтаксис, чтобы решить проблему переключения раскладки на символы { } [ ].


  1. Hivus
    07.05.2016 15:05

    Фрагмент кода на «рапире» — 1980ые.


  1. alekssamos
    07.05.2016 15:06

    Комментарий, показывающий всё в реальном времени

    Что Я об этом думаю

    И всё же мне не нравится такая идея, как уж повелось по-английски писать код, так уж пусть и дальше будет.
    Сюда можно отнести, как уже сказали, и проблемы с кодировкой, и частое переключение раскладки, и как-то неудобно читать русские слова, да ещё в разных склонениях ну и всё такое, то, что код может получиться длиннее, что будут путаницы какая же это буква, русская «а» или английская «a», ну и так далее…
    В коде есть такая замечательная штука, как комментарии. Так вот, если программисту что-то и не понятно, пусть пишет для себя /* большие комментарии с пояснениями */

    И коду это особо не помешает, так как комментарии можно легко убрать…
    Вот моё мнение.


  1. Pilat
    07.05.2016 19:28
    +4

    Идея хорошая, поддерживаю. Ростелеком заблокирует все сайты с нерусским JS.
    Я как-то заметил, что в современном Perl никто не мешает делать идентификаторы на русском языке. Прямо из коробки. Одна засада — сторонний софт, типа IDE, форматировщиков, чеккеров это не поддерживает. В JavaScript — скорее всего, такие программы нарвутся на те же проблемы. Но Ростелеком этих ретроградов тоже прогнёт либо запретит.


  1. Maximuz777
    07.05.2016 22:05

    Смело, конечно, но… зачем?


  1. OksikOneC
    08.05.2016 08:00

    Переписал пример из статьи на правильном православном.

    _хттп://i.imgur.com/CQdySGn.jpg

    Авторам-смутьянам все ж таки желаю обрести истинную веру :)


  1. juray
    08.05.2016 13:14

    я просто оставлю это здесь
    https://habrahabr.ru/post/176243/


  1. wikipro
    08.05.2016 20:00

    Жаль что забалытвается важная и интересная тема :(
    Гвидо Ван Россум — создатель Питона считает что код пишется 1 раз а читается много.
    Достаточно много программистов используют кириллические названия переменных и функций — это позволяет:
    1. избежать пересечения пространства имён и сразу разделять свой код/переменные/функции от чужих (это самое важное помоему!!)
    2. самодокументирование кода — комментариев меньше или они описывают более общие вещи
    3. обфусикация кода для иностранных разработчиков/хакеров/аналитиков
    Недостатки:
    1 — необходимо следить чтобы исходники были в кодировке UTF-8


    1. OksikOneC
      08.05.2016 22:51
      +1

      1. Если предположить что весь код будет на отечественном языке (или часть его), все равно рано или поздно возникнут проблемы с наименованием переменных, процедур, функций — вот этого всего. И нужна будет некая нотация, что как бы доставит +1 стандарт.
      2. Тут не все так однозначно. Самодокументирование кода будет ровно до того момента, пока сам код решает какие-то простые задачи. Чем более будет сложный алгоритм — тем самодокументирование будет все хуже и хуже. В конце концов оное даже сможет сбить вас с толку. Напр., из последнего — в коде была такая переменная как «кластер». И вот долго я ее курил, что это? Что за кластер? Чего? Хотя сама задача не предполагала вообще наличие чего-то «кластеро-подобного». Затем, видимо такой же чел, который ранее уже раскурил тему, где-то в потрохах описал, что кластер — это группа аналогии. Вроде бы интуитивно все стало понятно, но без такого коммента, самодокументирование только сбило с толку. И вот такого, его становится все больше и больше, когда алгоритмы описания чего-то становятся все сложнее и сложнее. Я стараюсь сначала все таки читать комменты в таких случаях, а потом сам код. Хотя и в оригинале, очевидно, проблема будет аналогичной.
      3. Тут в яблочко, но кажется, это в плане js — все таки минус, нежели плюс.


      1. hudson
        09.05.2016 22:53

        Присоединяюсь к комментарию. «Код хорошо документирован на языке C» — это, в общем случае, крайне спорное утверждение. Даже свой собственный код спустя некоторое время становится непонятным. А что же говорить о чужом. Нет, конечно круто, если логика участка кода легко умещается на 1 экране. Ну типа «если а, то б, иначе ц, для дд из д в цикле бла бла бла без ветвлений». Но, как правило, жизнь, как воды реки, наносит много осадочной породы на это основание. И вот тут, для понимания, только «комментариев на языке C», скорее всего будет недостаточно.


  1. evilsprut
    08.05.2016 23:07
    +2

    Давно на хабре не было IT-юмора. Спасибо!


  1. advbg
    10.05.2016 09:40

    Звески круто! Рескпект! Вот только клаву переключать задалбливает…


  1. aryeh
    10.05.2016 11:36

    Всё бы хорошо, но нормальный русский человек «рускава» языка не учил.

    «цыкл» или «цикл», вот в чём вопрос!


  1. boramod
    10.05.2016 12:30

    … В русском языке традиционно применяются французские «ёлочки», а для кавычек внутри кавычек и при письме от руки — немецкие „лапки“…
    … Если по техническим причинам невозможен набор кавычек другого рисунка, кавычки одного рисунка рядом не повторяются…


    пер сотрудники = [«Владимир», „Дмитрий“, «Николай»];
    


    Как только примете за стандарт — сразу перехожу!


  1. PoltoS
    10.05.2016 13:16

    > pull-реквестам

    тогда уж «тяни-запросам» ;)


  1. vba
    10.05.2016 14:12

    Даешь Угловой.жс!


  1. n0ne
    11.05.2016 13:51

    Думаю, на это дело Вы сможете даже государственный грант какой-то получить, если что…
    https://lenta.ru/news/2016/05/10/russian_times/


    1. war_hol
      11.05.2016 15:21

      на то и расчет