Радянські «Эльбрусы» — огляд архітектури

image
Про предмет статті ходить багато домислів — від «російський Барроуз» до «не має аналогів». Викликано це значною мірою відсутністю (доступною) повноцінної документації, нечисленним колом осіб, що мали з ними справу так і чималим часом, що пройшли з тих пір. «Ельбрус» перетворився в один з міфів минулої епохи.

З іншого боку, обчислювальний комплекс безсумнівно існував і показував відмінні для свого часу результати. Можливо, завдяки упокоренні елементної бази, яка примушувала розробників до выдумыванию різного роду архітектурних трюків. Багато з цих трюків зараз виглядають архаїчно, а деякі досить актуальні.

Так що автор з притаманною йому допитливості спробував розібратися з доступною документацією і скласти більш — менш цілісну картину. Якщо читачеві це цікаво — ласкаво просимо під кат.

Читати далі →

Структури даних. Неформальний гайд


Звичайно, можна бути успішним програмістом і без сакрального знання структур даних, проте вони абсолютно незамінні в деяких додатках. Наприклад, коли потрібно обчислити найкоротший шлях між двома точками на карті, або знайти ім'я в телефонній книжці, що містить, скажімо, мільйон записів. Не кажучи вже про те, що структури даних постійно використовуються в спортивному програмуванні. Розглянемо деякі з них більш докладно.

Читати далі →

Велике оглядове тестування мов програмування

Нещодавно черговий раз відпрацював зі студентам 2-го курсу 2-семестрову дисципліни «Алгоритмічні мови». Оглядово розглянули кілька дюжин мов програмування. Один із студентів, Вадим Шукалюк, захотів трохи краще з ними познайомитися, отримати більш чітке уявлення про кожен із них. Порадив йому провести невелике дослідження. Чим і захопив. Пропоную свій звіт по виконаній за кілька місяців разом з ним роботі.

У кожної мови програмування є свої переваги і недоліки. Одна з найважливіших характеристик транслятора з будь-якої мови — це швидкість виконання програм. Дуже важко або навіть неможливо одержати точну оцінку такій швидкості виконання. Ресурс http://benchmarksgame.alioth.debian.org/ пропонує ігрову форму для перевірки такої швидкості на різних завданнях. Але число мов, представлених на цьому ресурсі, досить невелика. Граничну ємність стека, критичну величину для рекурсивних обчислень перевірити простіше, але вона може змінюватися в різних версіях транслятора і бути залежною від системних налаштувань.

Тестувалися наступні транслятори: сі (gcc, clang, icc), assembler (x86, x86-64), ява (OpenJDK), паскаль (fpc), яваскрипт (Google Chrome, Mozilla Firefox), лисп (sbcl, clisp), ерланген, хаскель (ghc, hugs), діно[1], аук (gawk, mawk, busybox), луа, рубін, бейсік (gambas, libre office), пітон-2, пі-ейч-пі, постскрипт (gs), пролог (swipl, gprolog), перл, метапост, ТEХ, тикль, бэш. Досліджувалися як власне швидкість виконання декількох невеликих, але трудомістких алгоритмів, так і:

  • якість оптимізації деяких трансляторів;
  • особливості при роботі з процесорами Intel і AMD;
  • гранична кількість рекурсивних викликів (ємність стека).

Читати далі →

Настільна гра для самих маленьких програмістів (від 7 років)

Ми тут весь рік спілкувалися з дитячими психологами і взагалі багато думали про теми дитячого освіти. Як один з результатів — зробили гру на розвиток логіки.



Загалом, юному програмісту потрібно буде написати стек дій для таксиста. Щоб довезти пасажира куди треба з першого разу. Відразу кажу — можна грати і з 4-5 років. Як правило, якщо дитина — син інженера, сміливо відніміть 2 роки з мінімального віку.
Читати далі →

M-LAG як альтернатива STP і стека

    
  
Одними з основних проблем в мережі є «петлі» і «єдина точка відмови».
 
Традиційним способом перемогти «петлі» є використання протоколу STP. Але в той же час цей протокол приносить проблему неефективного використання пропускної здатності портів і лінків комутатора. За наявності декількох можливих лінків, активним буде один, все-одно, що купити додому крутий і дорогий комп'ютер для гри в пасьянс «Косинку» — не використовується весь потенціал пристрою. Низька збіжність, особливо в складних топологиях. А якщо в мережі бігає голос або потокове відео? Шлях між двома сусідніми комутаторами може йти через кореневий — не оптимальне.
 
Традиційним способом піти від «єдиної точки відмови» і зробити мережу відмовостійкій є використання стека. Не посперечаєшся, варіант хороший, але все-одно виникає ряд питань: яке буде час збіжності при виході з ладу master-node? Чи вистачить пропускної здатності стека між комутаторами (хочемо більше швидкість — платимо більше)? Як себе буде вести стек при "split-brain"? Про це під катом.
Читати далі →