Появился инструмент ввода тегов Source

    Впервые за 2 года, а может, и более, Хабр повёл себя неестественным образом. Никто не ожидал, но в поле ввода пришли изменения — поле ввода тега SOURCE с языками для подсветки синтаксиса. Одновременно, появилась поддержка гораздо большего числа языков, чем было раньше описано в «хелпе».

    До сих пор поддерживались (16 языков):
    bash lisp scala tex
    ruby python php perl
    xml javascript html
    lua java cpp c# sql


    Сейчас поддерживаются (41 язык):

    bash - Bash
    cs - C#
    cpp - C++
    css - CSS
    diff - Diff*
    html - HTML
    xml - XML
    java - Java
    javascript - JavaScript
    php - PHP
    perl - Perl
    python - Python
    ruby - Ruby
    sql - SQL
    1c - 1C*
    actionscript - ActionScript*
    apache - Apache*
    axapta - Axapta*
    cmake - CMake*
    coffeescript - CoffeeScript*
    dos - DOS*
    delphi - Delphi*
    django - Django*
    erlang - Erlang*
    erlang_repl - Erlang REPL*
    go - Go*
    haskell - Haskell*
    lisp - Lisp
    lua - Lua
    mel - MEL*
    markdown - Markdown*
    matlab - Matlab*
    nginx - Nginx*
    objectivec - Objective C*
    rust - Rust*
    scala - Scala
    smalltalk - Smalltalk*
    tex - TeX
    vbscript - VBScript*
    vhdl - VHDL*
    vala - Vala*


    Впрочем, этот список расширился и в подсказке Хабра («разрешенные html-теги»). Странно, что тега Font там нет. (Не говорите никому, что он не разрешён.) Звёздочками помечены новые для этого списка языки, вначале написаны технические имена, используемые на сайте, а справа — правильно написанные имена, отображённые для пользователя в списке.


    Новость была бы неполной, если бы одновременно с поддержкой 41 языка не сообщить о поддержке этих же языков в юзерскрипте HabrAjax с версии 0.83. Ещё вчера там было всё мирно и спокойно с 16 языками, без CSS. Теперь, когда все узнали, что мир шире этих 16 языков, в новой версии их тоже стало 41.

    Основной список дополнился долго ожидаемым «CSS», а остальные 24 приютились справа в дополнительном списке. Для начала, пока это ново, я не стал скрывать дополнительный список, после наведения на кнопку «CODE» видны сразу два. Возможно, позже надо его скрывать, а, возможно — и так будет комфортно. Для того, чтобы он не стал слишком большим, убран стиль «bold», присутствующий в первом списке.

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

    Работа со скриптом для ввода подсветки языков


    Покажем, как работает скрипт выбора языков с тегом SOURCE. После установки юзерскрипта HabrAjax и встроенного стиля ZenComment (включить в настройках скрипта (клик по иконке скрипта, расположенной справа, или есть 2 других способа) пункт «стили ZenComment») будут видны комментарии на страницах в компактном виде. Кроме появления новых функций в поле ввода скрипт даёт много других возможностей: двигать нижнюю кромку поля ввода, вводить   по Ctrl+Space, вводить табы, теги FONT и Blockquote (цитаты), вводить адреса без модальных диалогов и т.д. — все описания можно найти на странице скрипта.

    Скриншот показывает, что нормально работать можно и при достаточно узких окнах. В примере было окно шириной 750px. (Чтобы появилось меню с языками на этом скриншоте, мышь вначале была наведена на надпись "<CODE>".)

    Посмотрим, как выглядит комментарий без ZenComment. Выглядит беднее, но для 90% посетителей привычнее.


    Видно, что комментарии занимают привычно много места по вертикали. Яркие выделения автора фоном цвета фуксии — это отметка авторских комментариев (к функции подсветки синтаксиса отношения не имеет). Скриншот снят на том же узком окне, и видно, что для такого окна всё разнообразие языков на странице не помещается — всплывающий список «режется» стилями, ограничивающими страницу. ZenComment-стили исправляли в том числе и этот недостаток. Тем не менее, при большей ширине окна, от 950 пикс., тоже имеется возможность полноценно работать со всем списком языков.

    Отличие от решения со спадающим списком — в том, что по списку нужно кликнуть, здесь — просто навести мышь. Для списка нужен новый элемент над полем ввода, здесь список привязан к имеющемуся элементу. Для просмотра всего списка нужно ещё прокрутить его вниз — здесь этого не нужно, весь список языков перед глазами.

    Такие же кнопки ввода работают в скрипте для оформления статей и для сообщений в вопросах-ответах.
    Тест:<select class="with-title" name="list" onchange="habraWYG.insertList(this);">
    			<option value="" class="title">Списки:</option>
    			<option value="ul">UL LI</option>
    

    UPD: добавил поддержку показа языков в HabrAjax (0.832+).
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 125

      +5
      Чего все долго ждали!
        +17
        Brainfuck не подсвечивается:(
          +11
          И мой любимый COW :(

          moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
          moo moO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO moO mOo mOo mOo mOo mOo mOo MOo MOO
          moO MoO MoO moO MOo MOo MOo moO MOo MOo moO MoO MoO MoO MoO moO MOo MOo MOo moO
          mOo mOo mOo mOo mOo mOo
          moO OOM moO OOM moO OOM moO OOM moO OOM

          /\
          если что, то это _| исходники…
            +2
            Достойный конкурент брейнфаку…
            +22
            Фиг с ним с брейнфаком, Whitespace не подсвечивается, вот что ужасно!
              +1
              Традиционно забыли о Dart'e)
            +1
            Только вот подсветка включается после обновления страницы, а не после добавления комментария/ответа.
              +1
              Хм, у меня сразу подсветилось. Уже исправили?
                +1
                Видимо исправили :)
            • UFO just landed and posted this here
                +17
                <code>Продаётся
                
                 место
                
                  для 
                
                 вашей
                
                рекламы :)</code>
                • UFO just landed and posted this here
                    +10
                    Судя по внешнему виду, кто-то позабыл про «clear: both» в CSS…
                      0
                      overflow: hidden; для , ну или модный clearfix
                        0
                        парсер… для
                        <div class="message">
                        
                    +6
                    Даёшь цитирование!
                      +2
                      Действительно, некрасиво как-то. Ведь ничего же не стоило, раз уже полезли в этот код.
                      Не говоря уже о том, что в подсказке по тегам можно было бы по клику вставлять их в сообщение.
                      –1
                      test че

                      • UFO just landed and posted this here
                          +5
                          Я про кнопку быструю. Нажал бы я щас такой на «Ответить» около вашего коммента, а там кнопочка «Цитировать» сразу.
                          0
                          Ну-ка…

                          .b-suggest{position:relative;margin:1px 4.85em 0 0}.b-suggest-popup{position:absolute;width:100%}.b-suggest__opera-gap{position:absolute;height:25em;border:1px solid transparent}.b-suggest-list{position:absolute;z-index:9999;overflow:hidden;min-width:25em;max-width:100%;margin-top:-4px;border-collapse:separate;-webkit-box-shadow:0 1px 7px #9a9a9a;-moz-box-shadow:0 1px 7px #9a9a9a;box-shadow:0 1px 7px #9a9a9a;border:1px solid #dedede;border-color:rgba(154,154,154,0.5);border-top-color:rgba(154,154,154,0.4)
                          
                            +6
                            Приятно, что администрация прислушались к результатам моего опроса, хоть не зря делал :)
                            Спасибо!
                              +7
                              Скорее всего, это из-за Дня космонавтики.
                                +25
                                Если бы это было из-за Дня космонавтики, то в списке поддерживаемых языков был бы ассемблер DCPU-16.
                                0
                                Главное знать, куда написать об этом ;)
                                +3
                                use List::Util qw/first/;
                                print "This is ".(first {1} qw /wow bad foo bar bad/)."!\n"
                                
                                  +2
                                  alert('Проверка, раз, два, три');
                                  

                                  :)
                                    +3
                                    <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
                                    <head profile="http://gmpg.org/xfn/11">
                                    <meta http-equiv="Content-Type" content="<?php bloginfo('html_type') ?>; charset=<?php bloginfo('charset') ?>" />
                                    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
                                    <title><?php wp_title( '|', true, 'right' ); bloginfo( 'name' ); ?></title>
                                    <link rel="stylesheet" href="<?php bloginfo('stylesheet_url') ?>" type="text/css" media="screen" />
                                    


                                    Отлично. Здорово, что и при предпросмотре нормально видно.
                                      +4
                                      А вот если просматривать такие комменты в своем профиле — «Мои комментарии», то подсветки нет.
                                      –4
                                      Имхо, автоопределение языка тут уместнее. Чай не ПО для Роскосмоса, пускай и ошибалось бы на one-liner'ах.
                                        +4
                                        Если атрибут lang не ставить, то работает автоопределение.
                                        +43
                                        Где DCPU-16?
                                          +3
                                          Как насчет отхабреных?

                                          def hello_world
                                          puts «Hello Habr!»
                                          end
                                            +18
                                            Отлично.
                                              +7
                                              Ну всё, ща начнётся...)
                                            • UFO just landed and posted this here
                                                +7
                                                Да это же highlight.js! :)
                                                Не думал, что добавляя CMake и VHDL в highlight.js они будут когда-нибудь использовать на хабре.
                                                  0
                                                  Вот и мне приятно :) Сейчас у highlight.js явно какой-то бум намечается.
                                                    +5
                                                    Ну это не просто так :-). Я активно работаю в этом направлении.
                                                      0
                                                      Тема с сайтом не подвисла? А то что в рассылке нездоровый ажиотаж только из-за номеров строк :)
                                                        0
                                                        Не подвисла, но довольно всё медленно. Но я думаю, это случится :-).
                                                  +7
                                                  #в баше
                                                  echo "Тут подсвечивает"
                                                  echo 'А тут нет'
                                                  

                                                  Еще бы <blockquote> всё-таки
                                                    –1
                                                  0
                                                  Ну еще бы F# или, что то же самое практически, OCaml добавили и совсем бы спокойно на душе стало. :)
                                                  +1
                                                  @synthesize UID = _UID;
                                                  @synthesize type = _type;
                                                  
                                                  - (void)dealloc
                                                  {
                                                  	[_UID release];
                                                  	[_type release];
                                                  
                                                  	[super dealloc];
                                                  }
                                                  
                                                  
                                                    +2
                                                    Мечтаю о кнопке «сохранить» при написании топика.
                                                    Когда много пишешь, приходится отправлять в черновики, нажимать редактировать и снова дописывать.
                                                      +2
                                                      В ближайших планах (автосейв)
                                                        +3
                                                        а blockquote когда?
                                                          0
                                                          Да просто Sisyphus.js прикрутите, jQuery есть ведь.
                                                        +2
                                                        Тест:
                                                        var teamMembers = new List<string> {
                                                                    "Lou Loomis",
                                                                    "Smoke Porterhouse",
                                                                    "Danny Noonan",
                                                                    "Ty Webb"
                                                        };
                                                        
                                                        FindByFirstName( teamMembers, "Danny",  (x, y) => x.Contains(y) );
                                                        
                                                          +5
                                                          К сожалению, чтобы увидеть, что за язык, нужно в исходный код страницы смотреть.
                                                            0
                                                            Си шарп же :)
                                                            +2
                                                            Идея «Выводить заголовок блока с именем языка» имеет рациональное зерно.
                                                          0
                                                          (setq xmin (* 250 (fix (/ x 250))))	
                                                          (setq xmax (+ xmin 250))			
                                                          (setq ymin (* 250 (fix (/ y 250))))	
                                                          (setq ymax (+ ymin 250))			
                                                          
                                                            0
                                                            (command "_rectang" (list xmin ymin) (list xmax ymax) 
                                                                     "_text" (list (+ xmin 5) (+ ymin 5)) "10" "0" title)
                                                            
                                                            0
                                                            Присоединюсь к бета тестированию:

                                                            package main
                                                            
                                                            import "fmt" // Implements formatted I/O.
                                                            
                                                            /* Print something */
                                                            
                                                            func main() {
                                                                   fmt.Printf("Hello, world \n")
                                                            }
                                                            
                                                              +3
                                                              parse = fst . process (Node 100500 M.empty []) . split
                                                                  where
                                                                      process parent@(Node name mp children) (tag:tags)
                                                                          | head tag == '/' = (parent, tags)
                                                                          | last tag == '/' = let ident = hash $ init tag
                                                                                                  child = Node ident (M.singleton ident 1) []
                                                                                                  newMap = M.insertWith' (+) ident 1 mp
                                                                                              in  process (Node name newMap (child:children)) tags
                                                                          | otherwise       = let ident = hash tag
                                                                                                  (child@(Node _ cmap _), rest) = process (Node ident (M.singleton ident 1) []) tags
                                                                                                  newMap = M.unionWith (+) mp cmap
                                                                                              in  process (Node name newMap (child:children)) rest
                                                                      process parent [] = (parent, [])
                                                              
                                                              answer tree query = process tree $ map hash $ words query
                                                                  where
                                                                      process (Node _ mp _) [last] = M.findWithDefault 0 last mp
                                                                      process (Node name _ children) all@(tag:tags) =
                                                                          let tail = if name == tag then tags else all
                                                                          in  foldl' (\acc child -> acc + process child tail) 0 children
                                                              


                                                              Хреново работает подсветка для Haskell…
                                                              P.S.: кто угадает, откуда код?
                                                                0
                                                                Ужас, как по мне.
                                                                  0
                                                                  > Хреново работает подсветка для Haskell…

                                                                  Заводите баги, присылайте патчи.
                                                                    –1
                                                                    Я недостаточно точно выразился. Багов нет. Но поддержка языка очень скудна. Для сравнения:



                                                                    Far + Colorer + мод для Haskell.
                                                                    Здесь ещё один хороший пример.
                                                                      0
                                                                      Пользуясь случаем, напишу-ка Вам feature request:

                                                                      При написании статей крайне полезной была бы возможность выделять некоторые строки кода, скажем, другим цветом фона, дабы обратить на них внимание читателя. Или такое уже реализовано в библиотеке, но просто не доступно в контексте Хабра?
                                                                        +1
                                                                        Это не ко мне :-). Библиотека только код разбирает/хайлайтит, а то, что вы просите — это уже в местном редакторе нужно реализовывать. Со стороны библиотеки важно только то, что хайлайтинг не испортит эту кастомную разметку.
                                                                          0
                                                                          Okaaaaay :)
                                                                      +2
                                                                      Вообще, я посмотрел на кода выше, и там размечено гораздо больше, чем видно. То есть нужно добавить стилей симпатичных для хаскелных конструкций.
                                                                      +3
                                                                      еще бы табуляцию прикрутили — вообще было бы супер :)
                                                                        0
                                                                        Если это вам поможет, то просто табы (по кнопке TAB) Хабраякс умеет вводить, правда, не в Хроме. Поддержать Хром и сделать групповые отступы табами тоже не очень сложно, у меня эту подзадачу «затмили» более интересные проекты в рамках этого скрипта.
                                                                        +1
                                                                        Попробуем:
                                                                        <?php
                                                                        $4test = 123;     // неверно; начинается с цифры
                                                                        $_4test = 123;    // верно; начинается с символа подчеркивания
                                                                        $tyдte = 123;    // верно; 'д' это (Дополнительный) ASCII 228.
                                                                        ?>
                                                                        
                                                                          +11
                                                                          Тут надо сказать, что в задачу хайлайтера не входит поиск ошибок, он рассчитан на подсветку корректного кода.
                                                                            0
                                                                            В официальной документации определено, из чего могут состоять переменные. Хоть и не рекомендуется, но последняя строчка, содержащая символ кириллицы, верная запись. Или из-за того, что не рекомендуется можно считать код не корректным?
                                                                              +2
                                                                              Я говорил про первую строчку, где идентификатор с цифрой. Часто в таких случаях хайлайтер вообще может решить, что этот фрагмент не на том языке, на котором он пытается его подсветить, и просто бросить дальнейшую расцветку (хотя в этом конкретном случае этого и не происходит).

                                                                              А вот символы с кодами больше 128 хайлайтер как раз знает. Только ваша буква «д» будет с ASCII-кодом 228 только если PHP-парсер читает исходный текст, сохранённый в windows-1251. А JavaScript — юникодный язык, поэтому литеральная «д» в диапазон 128-225 не входит.
                                                                          0
                                                                          VHDL есть, а Verilog'a нет! Отчего такая дискриминация?
                                                                            +2
                                                                            Если я не ошибаюсь, поддержку VHDL в highlight.js, который здесь, судя по всему, используется, добавлял ikalnitsky. Ничего Вам не мешает сделать pull request с поддержкой хоть Verilog, хоть System C…
                                                                            –4
                                                                            Если это список языков, то «Delphi» стоит всё же поменять на «Pascal».
                                                                              +8
                                                                              С версии, кажется, 7 Delphi language получил собственное название. Он очень далёк от Паскаля уже давно.
                                                                                +1
                                                                                Во-первых, Delphi — это уже давно как название языка, а не только IDE. Во-вторых, Pascal является подмножеством Delphi, поэтому если код pascal выделить тэгом delphi, то ничего страшного не произойдет.
                                                                                +1
                                                                                А про asm, видимо, забыли.
                                                                                  +1
                                                                                  Ассемблеров разных ого-го сколько.
                                                                                    –1
                                                                                    x86/x86_64 и ARM — охват 95%, думаю.
                                                                                      +4
                                                                                      Хотя да, x86 же ещё в синтаксие Intel и AT&T может быть.
                                                                                      +2
                                                                                      Мне было бы достаточно следующей схемы подсветки:
                                                                                      первая лексема — оператор, следующие — операнды. Все остальное подсвечивается, как комментарии.
                                                                                    0
                                                                                    groovy нет. Жаль.
                                                                                      +2
                                                                                      Я минут на 20 застал, как <code> тоже подсвечивал синтаксис и брал в рамочку. Потом это исчезло. А тем не менее, так было очень удобно. Как вариант, можно добавить аттрибут inline к source.
                                                                                        –2
                                                                                        import this
                                                                                        
                                                                                          +2
                                                                                          Пардон, не хотел в Вашу ветку.
                                                                                            0
                                                                                            Я успел наскринить несколько вариантов во время отладки css видимо. Обсуждалось тут
                                                                                            +2
                                                                                            <head>
                                                                                            <title>Тест вложенного синтаксиса</title>
                                                                                            <script type="text/javascript">
                                                                                            
                                                                                            $(document).ready(function(){
                                                                                            alert("ой ой");
                                                                                            });
                                                                                            
                                                                                            </script>
                                                                                            </head>
                                                                                            
                                                                                              0
                                                                                              <head>
                                                                                                <title>Тест вложенного синтаксиса</title>
                                                                                                <script type="text/javascript">
                                                                                                  $(document).ready(function(){
                                                                                                    alert("ой ой");
                                                                                                  });
                                                                                                </script>
                                                                                              </head>
                                                                                              

                                                                                              :-P Но оригинальная полупрозрачность для вложенных блоков мне больше нравится.
                                                                                                0
                                                                                                Не понял, оно чтоли автоопределило жаваскрипт внутри xml?
                                                                                                  0
                                                                                                  Да, именно так. Также подсвечивает CSS внутри (x?HT|X)ML и JavaScript внутри CoffeeScript. Подробнее в вики.
                                                                                                +1
                                                                                                Хм, а неплохо получилось.
                                                                                                0
                                                                                                Что с вёрсткой на хабре? То в инфопанели отступов нет:
                                                                                                habrastorage.org/storage2/be6/4de/182/be64de1824de9b41dcb7574e1c4982db.png
                                                                                                habrastorage.org/storage2/22c/b4c/8dc/22cb4c8dcc26482e6a42e064010d7020.png

                                                                                                Теперь выбор сорцев криво вставили.
                                                                                                  +2
                                                                                                  Поддержка php 5.4 неполная — оператор insteadof не подсвечивается

                                                                                                  class Talker {
                                                                                                      use A, B {
                                                                                                          B::smallTalk insteadof A;
                                                                                                          A::bigTalk insteadof B;
                                                                                                      }
                                                                                                  }
                                                                                                  
                                                                                                    +1
                                                                                                    source lang=«vba», vba опять не указан в списках, но работает.

                                                                                                    Sub DeleteEmptyObj()
                                                                                                        Dim Elem As Object
                                                                                                        Dim entry As AcadEntity
                                                                                                        Dim MyTxt As AcadText
                                                                                                        For Each Elem In ThisDrawing.ModelSpace
                                                                                                            If Elem.EntityName = "AcDbText" Then
                                                                                                                Set MyTxt = Elem
                                                                                                                Set entry = Elem
                                                                                                                If Trim(MyTxt.textString) = "" Then
                                                                                                                    entry.Delete
                                                                                                                    purge_a = purge_a + 1
                                                                                                                End If
                                                                                                            'End If
                                                                                                            ElseIf Elem.EntityName = "AcDbLine" Or Elem.EntityName = "AcDbPolyline" Then
                                                                                                                Set entry = Elem
                                                                                                                If entry.Length = 0 Then
                                                                                                                    entry.Delete
                                                                                                                    purge_a = purge_a + 1
                                                                                                                End If
                                                                                                            End If
                                                                                                        Next
                                                                                                    End Sub
                                                                                                    
                                                                                                      0
                                                                                                      Не работает :-). Хайлайтер не знает слова «vba» и игнорирует его, поэтому включает автоопределение языка и раскрашивает этот фрагмент как VBScript. Если посмотреть на элемент <code> в любом инспекторе, то будет видно, что к нему добавился класс «vbscript».
                                                                                                        0
                                                                                                        Вы правы. Ошибся.
                                                                                                        мог и сам догадаться по конструкции
                                                                                                        Dim Elem As Object
                                                                                                        

                                                                                                        Dim подсвечен, as нет, что типично для VBS, но не для VBA
                                                                                                      0
                                                                                                      class Foo : public Bar
                                                                                                      {
                                                                                                      public:
                                                                                                          Foo(int n) { _n = n; }
                                                                                                          ~Foo() {}
                                                                                                          int getN() const { return _n; }
                                                                                                          void setN(int n) { _n = n; }
                                                                                                      private:
                                                                                                          int _n;
                                                                                                      }
                                                                                                      


                                                                                                      // file Foo.h
                                                                                                      @interface Foo : NSObject
                                                                                                      {
                                                                                                          int _n;
                                                                                                      }
                                                                                                      
                                                                                                      @property (nonatomic, assign) n;
                                                                                                      
                                                                                                      -(id)initWithN: (int)n;
                                                                                                      @end
                                                                                                      
                                                                                                      // file Foo.m
                                                                                                      
                                                                                                      #import "Foo.h"
                                                                                                      
                                                                                                      @implementation Foo
                                                                                                      
                                                                                                      @synthesize n=_n;
                                                                                                      
                                                                                                      -(id)initWithN: (int)n
                                                                                                      {
                                                                                                          self.n = n;
                                                                                                      }
                                                                                                      


                                                                                                      Здорово, работает!
                                                                                                        0
                                                                                                        Ручки бы отрывать за такое форматирование методов в obj-c. Вот как надо:

                                                                                                        - (id)initWithN:(int)n;
                                                                                                        + (id)instanceWithObject:(NSObject *)object;
                                                                                                        


                                                                                                        и никаких кривых пробелов между двоеточиями и открывающими ковычками, но нужно добавлять после модификаторов +-
                                                                                                          0
                                                                                                          Ну да, тут я маху дал =)
                                                                                                          Кстати, в реальном коде (только что на всякий случай проверил) я пишу корректно.
                                                                                                            0
                                                                                                            ну отлично ) прям глаза режет сразу!
                                                                                                        –1
                                                                                                        // file Foo.m

                                                                                                        #import «Foo.h»

                                                                                                        @implementation Foo

                                                                                                        @synthesize n=_n;

                                                                                                        -(id)initWithN: (int)n
                                                                                                        {
                                                                                                        self.n = n;
                                                                                                        }
                                                                                                          +1
                                                                                                          Это к чему, если не секрет? )
                                                                                                          +4
                                                                                                          Как-то обидно… Подсветки QBasic'а нет(((
                                                                                                          01 PRINT "Hello, Habr. Devide me completely!"
                                                                                                          02 INPUT A
                                                                                                          03 INPUT B
                                                                                                          05 IF B = 0 GOTO 07
                                                                                                          06 IF B <> 0 GOTO 09
                                                                                                          07 PRINT "Nice try, Sauron ;-)"
                                                                                                          08 GOTO 02
                                                                                                          09 PRINT A/B
                                                                                                          10 END
                                                                                                          
                                                                                                            0
                                                                                                            это у вас gw-basic.
                                                                                                            в qbasic был уже структурированный синтаксис
                                                                                                              0
                                                                                                              В нём можно было и так писать.
                                                                                                                +1
                                                                                                                Можно, но не нужно.
                                                                                                                  +1
                                                                                                                  Из-за этой фичи улучшалась переносимость программ из gw-basic'а (и многих других). Так что полезная вещь была.
                                                                                                                    0
                                                                                                                    Не говорите о Basic'ах в прошедшем времени. Они живы, пока жив хоть один, кто пускает ностальгическую слезу при виде их кода.

                                                                                                                    Пойду что-ль статейку накатаю по нему.
                                                                                                          0
                                                                                                          Предосмотр умер на этой строке :)
                                                                                                            0
                                                                                                            -module(sensors_pool).
                                                                                                            -export([start_link/0, stop/0, start_pool/3,
                                                                                                            		run/2, sync_queue/2, async_queue/2, stop_pool/1]).
                                                                                                             
                                                                                                            start_link() ->
                                                                                                            	sensors_sup:start_link().
                                                                                                             
                                                                                                            stop() ->
                                                                                                            	ppool_supersup:stop().
                                                                                                            
                                                                                                              +1
                                                                                                              Впервые за 2 года, а может, и более, Хабр повёл себя неестественным образом.

                                                                                                              То есть, выпиливание нормальной главной страницы, а потом и её останков в виде habrahabr.ru/all было вполне естественным? %)
                                                                                                                +3
                                                                                                                Как ни странно, да… Для Хабра естественно.
                                                                                                                +1
                                                                                                                Здорово, конечно, но зачем было менять порог того, о чем не говорят, при комментировании? я теперь раз в час могу отвечать…
                                                                                                                  0
                                                                                                                  Тест 1С
                                                                                                                  &НаКлиенте
                                                                                                                  Процедура ВывестиСообщение(Команда)
                                                                                                                      
                                                                                                                      Если ВариантВыводаСообщения = "Сообщение" Тогда
                                                                                                                          
                                                                                                                          Сообщить("Hello, World !!!");
                                                                                                                          
                                                                                                                      ИначеЕсли ВариантВыводаСообщения = "Предупреждение" Тогда
                                                                                                                          
                                                                                                                          Предупреждение("Hello, World !!!");
                                                                                                                          
                                                                                                                      ИначеЕсли ВариантВыводаСообщения = "Оповещение" Тогда
                                                                                                                          
                                                                                                                          ПоказатьОповещениеПользователя("Hello, World !!!");
                                                                                                                          
                                                                                                                      КонецЕсли;
                                                                                                                      
                                                                                                                  КонецПроцедуры
                                                                                                                  
                                                                                                                    0
                                                                                                                    Ого. Даже X++ есть. Но пока работает плохо. Впрочем, ERP на хабре не пользуются большой популярностью.

                                                                                                                    void selectRecordExamples()
                                                                                                                    {
                                                                                                                        CustTable custTable;
                                                                                                                        ;
                                                                                                                        // A customer is found and returned in custTable
                                                                                                                        select * from custTable;
                                                                                                                    
                                                                                                                        // A customer with account number > "100" is found
                                                                                                                        select * from custTable
                                                                                                                            where custTable.AccountNum > "100";
                                                                                                                    
                                                                                                                        // Customer with the lowest account number > "100" found:
                                                                                                                        // Coho Winery with number 200.
                                                                                                                        select * from custTable order by accountNum
                                                                                                                            where custTable.AccountNum > "100";
                                                                                                                    
                                                                                                                        // The next customer is read (Coho Vineyard & Winery)
                                                                                                                        next custTable;
                                                                                                                    
                                                                                                                        // Customer with higest account number
                                                                                                                        // (greater than 100) found: Fourth Coffee
                                                                                                                        select * from custTable order by accountNum desc
                                                                                                                            where custTable.accountNum > "100";
                                                                                                                    
                                                                                                                        // The next record is read (DESC): Fabrikam, Inc.
                                                                                                                        next custTable; 
                                                                                                                    
                                                                                                                        // Customer with highest account number found: Fourth Coffee
                                                                                                                        select reverse custTable order by accountNum;
                                                                                                                    
                                                                                                                        // Customer with "lowest" name and account number
                                                                                                                        // in the interval 100 to 1000 is found. This is Coho Winery.
                                                                                                                        select * from custTable order by name
                                                                                                                            where custTable.accountNum > "100"
                                                                                                                            && custTable.accountNum < "1000";
                                                                                                                    
                                                                                                                        // The count select returns the number of customer
                                                                                                                        // account numbers (5)
                                                                                                                        select count(AccountNum) from custTable;
                                                                                                                        // Prints the result of the count
                                                                                                                        print custTable.accountNum; 
                                                                                                                    
                                                                                                                        // Returns the sum of balances for non-blocked customers.
                                                                                                                        // The result is: SUM: $1,060,000, stored in the Balance 
                                                                                                                        // field 
                                                                                                                        select sum(balance) from custTable
                                                                                                                            where custTable.blocked == DebCreBlocked::No;
                                                                                                                    }
                                                                                                                    
                                                                                                                      0
                                                                                                                      Сколько разных исходников )
                                                                                                                      • UFO just landed and posted this here
                                                                                                                          0
                                                                                                                          Отличная новость! И даже Go включили.
                                                                                                                            0
                                                                                                                            И Nemerle, для rsdn'овцем обломс.
                                                                                                                            0
                                                                                                                            проверка аннотаций
                                                                                                                            	<hh user=PersistenceContext>
                                                                                                                            	private EntityManager em;
                                                                                                                            

                                                                                                                            Only users with full accounts can post comments. Log in, please.