Pull to refresh
1
0
Самолысов Павел @beq

User

Send message

Философия программирования 3 — Чичиков и программиат

Reading time 12 min
Views 24K
Где вы нашли философию у Дональда Кнута? Академическое сообщество, это — 20 сумасшедших учёных, 2000 чичиковых, 20000 бюрократов и миллион детишек. Кнут это — Чичиков. На западе, даже сумасшедший учёный — умеет быть медийным, у нас это — «ранимые люди, с ними надо очень бережно, в лучшем смысле слова». Не могут связать двух слов, обижаются на вопросы. Поэтому в нашей науке видны только чичиковы, они раздают и получают награды, становятся директорами, основывают лаборатории, распиливают гранты, пристраивают своих. С прессой общаются, правда, тоже с трудом, — совок. А на западе это — развитой класс, они умеют работать с прессой, позиционироваться, колонизировать, занимать ниши, основывать религии. Найти человека который прочитал «Искусство Программирования» или «Конкретная Математика» практически невозможно, — те, кто считают Кнута за авторитет слишком глупы чтобы прочитать их, а те, что поумнее — читают книжки получше. Видимо, поэтому Кнут платил по 2.56 за каждую найденную опечатку, в надежде, что хотя-бы прочитают. Все его, с позволения сказать, книги — это копипаста алгоритмов из стэнфордских журналов, разбавленная топорным юмором, человек просто вовремя занял тему. А «детишки» от науки читают то, что им дают взрослые дяди — бюрократы и чичиковы. Вот и выходит, у бюрократов нет мозгов, у чичиковых есть мозги, но нет совести, сумасшедшие учёные — ранимые люди, обижаются.

Читать дальше →
Total votes 55: ↑25 and ↓30 -5
Comments 38

Вам стоит выучить COBOL

Reading time 3 min
Views 30K
COBOLНачинающие программисты (а вполне возможно, что и их коллеги с опытом), должно быть, часто спрашивают себя, нужно ли им учить JAVA, или знания JavaScript, Python или Ruby будет вполне достаточно в современном мире. Учитывая спрос на программистов в нынешней экономике, многие находят достойную работу еще учась в университетах, и зачем тогда, спрашивается, представителю этой профессии заглядывать в такое далекое прошлое, как COBOL?

Согласно исследованию Gartner от 2001 года (в случае с данным конкретным языком это вполне можно назвать «недавно»), 85% мирового объема бизнес-информации обрабатывалось на языке COBOL, а к текущему моменту объем кода, написанный этим языком программирования, начинает снова увеличиваться. Компания Micro Focus, занимающаяся разработкой и продажей инструментов модернизации COBOL, заявляет, что 70% мирового бизнеса до сих пор активно использует этот язык.

И хотя очевидно, что многие из приложений, изначально написанных на COBOL будут переписаны, в Micro Focus уверены, что большая часть оригинального кода все-равно останется в ходу, а приложения будут использоваться еще долгие годы. Они безопасны, стабильны, а компании использующие их, не готовы от них просто так отказаться. Программный менеджер Micro Focus по имени Арунн Рамадосс (Arunn Ramadoss) говорит: «Ни один другой язык неспособен представлять бизнес-данные так точно, как это делает COBOL».

И даже в дни запоздалого выхода на пенсию, инженеров, способных работать с этим языком, становится все меньше и меньше. Кто-то перестает работать, другие уходят на позиции связанные с менеджментом, а не разработкой.
Читать дальше →
Total votes 69: ↑44 and ↓25 +19
Comments 115

Знакомимся с COBOL – ч.3

Reading time 5 min
Views 9K
К сожалению забыл указать в предыдущей статье несколько важных ключевых слов:

для DIVIDE.

DIVIDE WS-B BY WS-A GIVING WS-RESULT REMAINDER <переменная>.

Используя REMAINDER мы указываем переменную в которую запишется ОСТАТОК от деления.

Для любых математических операций:

Также, добавляя ROUNDED после операции мы достигаем того, что результат будет округляться, а не просто “отбрасываться” лишний хвост.
ADD WS-A TO WS-B GIVING WS-RESULT ROUNDED.

А теперь продолжим познавать новое. Исполняя обещание развеять удивление о странном выводе значений переменных мы разберем в этот раз PICTURE IS (он же PIC) и форматы переменных.
Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Comments 6

Знакомимся с COBOL — ч.2

Reading time 4 min
Views 12K
Ну что же, продолжим наше знакомство дальше, в первой статье мы узнали, из чего состоит COBOL программа, какие правила существуют по ее написанию и запустили нашу первую программу. Пора двигаться дальше, в этот раз мы начнем работать с переменными и совершать первые осмысленные действия с ними.

Читать дальше →
Total votes 28: ↑26 and ↓2 +24
Comments 55

Знакомимся с COBOL — ч.1

Reading time 4 min
Views 59K
Этой статьей я планирую начать целый цикл, который может быть со временем соберется в книгу. Информация про COBOL на русском представлена фактически статьей в Википедии и двумя советскими ГОСТами. Вы можете спросить меня зачем я начинаю “раскапывать труп” и прочие аналогичные вопросы. Ответ прост – а просто так. Потому что я люблю COBOL, потому что он вовсе не мертвый, потому что он интересный, потому что это часть важной истории и он продолжит оставаться частью будущего. Потому что COBOL – это событие. И пусть его ругает Дейкстра и другие, это ничуть не умаляет его объемов и его влияния на ИТ в бизнес.

Читать дальше →
Total votes 47: ↑40 and ↓7 +33
Comments 39

Правильная платформа для Java EE приложений: как z/OS + DB2 оказались в 3 раза быстрее Linux + Oracle

Reading time 6 min
Views 14K

Введение


В настоящее время все больше и больше корпоративных приложений разрабатываются на основе переносимых кроссплатформенных технологий, таких как Java Enterprise Edition. В состав данной платформы входит набор программных интерфейсов, позволяющих разработчикам абстрагироваться от конкретных СУБД и механизмов очередей сообщений. Это позволяет развернуть приложение практически на любой платформе, в том числе и на мейнфрейме.

В сообществе специалистов по информационным технологиям распространено представление, что мейнфреймы – это очень надежная, но уступающая по производительности привычным решениям на основе процессоров Intel и операционной системе Linux платформа. В данной статье мы хотели бы поделиться результатами тестирования производительности одной и той же банковской платежной системы, работающей на IBM zEnterprise EC12, но в одном случае использующей Linux и СУБД Oracle, а в другом – операционную систему z/OS и СУБД DB2.
Читать дальше →
Total votes 34: ↑22 and ↓12 +10
Comments 43

Производительный отказоустойчивый географически разнесенный кластер, работающий по схеме Active-Active на мейнфрейме IBM zEnterprise EC 12

Reading time 8 min
Views 11K
Во многих областях человеческой деятельности предъявляются повышенные требования к производительности и доступности сервисов, предлагаемых информационными технологиями. Примером таких областей является, например, банковское дело. Если у какого-нибудь крупного банка в стране на несколько часов откажет карточный процессинг, то это отразится на повседневных нуждах и заботах миллионов пользователей по всей стране, что приведет к снижению их лояльности вплоть до принятия решения отказаться от услуг такой кредитной организации. Аналогичным образом дело обстоит и с производительностью и доступностью многих других информационных систем.

Решение проблем с производительностью и доступностью в принципе известно: дублировать узлы, обеспечивающие обработку данных, и объединять их в кластеры. При этом для обеспечения максимальной загрузки имеющихся ресурсов и снижения времени простоя системы при выходе из строя одного из узлов кластер должен работать по схеме Active-Active. Также уровень доступности, обеспечиваемый кластером, размещенным целиком в одном центре обработки данных, может быть недостаточен (например, при отключении электричества в целых районах крупных городов). Тогда узлы кластера необходимо географически распределять.

В данной статье мы расскажем о проблемах построения отказоустойчивого географически разнесенного кластера и о решениях, предлагаемом корпорацией IBM на базе мейнфреймов, а также поделимся результатами выполненного нами тестирования производительности и высокой доступности реального банковского приложения в кластерной конфигурации, с узлами, разнесенными на расстояние до 70 км.
Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Comments 19

Еще раз о жизни в настоящем

Reading time 3 min
Views 1.8K
Пару дней назад я наткнулся в блоге «Саморазвитие» на достаточно старый хабратопик уважаемого DileSoft «Алгоритм жизни в настоящем». Речь в хабратопике шла о том, как научиться «жить настоящим». Занимаясь этим вопросом достаточно давно и будучи несколько в теме, хотел бы предложить еще один алгоритм для «жизни в настоящем».

Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Comments 13

Качества перспективного работника

Reading time 4 min
Views 4.1K
Не могу сказать, что с первого своего рабочего дня я был отличным исполнителем. Я был зеленый и не понимал многого, что от меня ожидалось, делал не то что нужно. Встречая хороших менеджеров, работая с отличными руководителями а, впоследствии, руководя другими, я научился многим ценным привычкам. Я начинал работать помощником ректора в коммерческом вузе и, по странному стечению обстоятельств, в последующих двух компаниях, мне также приходилось тесно работать с топ-менеджментом. А еще с точно такими же, каким я был вначале. Рефлексируя, я начинал понимать что ценится в работниках, с точки зрения руководителя.

Решил выписать самое основное — советы, зная которые с самого начала, я думаю, достиг бы сейчас много большего. Применяя их вам будет легче понимать начальство, а с вами будет проще работать, вам будут доверять, делегировать, поручать руководство другими (в которых вы, к слову, станете ценить то же самое).
Читать дальше →
Total votes 116: ↑107 and ↓9 +98
Comments 66

О самореализации

Reading time 5 min
Views 1.9K
Здравствуйте хабровчане. Содержание последних топиков на хабре, натолкнуло меня на определенные мысли, которыми хочется поделится с вами. Мысли эти касаются по большей части достаточно сложных аспектов нашей жизни, о которых можно философствовать достаточно долго. Тем не менее, в данной заметке я представляю вам свои мысли о самореализации человека, о выборе профессии, о рутине.

Читать далее
Total votes 48: ↑32.5 and ↓15.5 +17
Comments 28

ТОП 10 самых раздражающих факторов для программиста

Reading time 5 min
Views 16K
Совсем недавно наткнулся в интернете на забавный "хит-парад" наиболее раздражающих вещей для программиста. Поскольку он был на английском — решил перевести текст и несколько адаптировать к нашим реалиям…

ТОП 10 самых раздражающих факторов для программиста


Читать дальше →
Total votes 319: ↑297 and ↓22 +275
Comments 70

Пишем кандидатскую работу

Reading time 3 min
Views 18K
Этот пост, возможно, будет полезен аспирантам (и магистрам) при написании своих научных работ, так как содержит некоторые наблюдения и выводы, сделанные автором во время работы над кандидатской.

Выбор темы


Наверное, самый важный пункт и к тому же, самый сложный. Причин может быть множество — от организационных, таких как смена университета, кафедры, руководителя до вполне обычных — нынешнее направление не интересное, а новое еще не придумали. Но, как правило, проблема одна — какую тему выбрать для кандидатской?
Читать дальше →
Total votes 89: ↑80 and ↓9 +71
Comments 64

Apache Maven — основы

Reading time 6 min
Views 539K
После публикации топика о Maven в комментариях возникли вопросы о том, как начать с ним работать, с чего начать, как составлять файлы pom.xml, откуда брать плагины и т.п. Данный топик будет своего рода getting started или f.a.q.
Поехали!
Total votes 45: ↑41 and ↓4 +37
Comments 29

Scala. Введение

Reading time 12 min
Views 86K
Привет хабралюди.

Не так давно я заинтересовался одним из многочисленных ныне языков под JVM — Scala. Причин тому много, основная — всё нарастающее со временем чувство неудобства при работе с cpp-подобными языками. Взгляд мой попеременно падал на Ruby, Groovy, Python, но все они оставляли впечатление инструментов, не совсем подходящих для моего обычного круга рабочих задач (Python-таки хорош, но у нетипизированных языков есть свои ограничения). Scala же, напротив, показалась вполне годным языком. Так как поиск по хабру никаких статей о ней не выловил (было несколько, но мягко говоря не вводных), я решил написать маленький обзор и поделиться им с массами.
По возможности коротко о кажется главном
Total votes 65: ↑56 and ↓9 +47
Comments 106

О монадических технологиях

Reading time 6 min
Views 3.4K
Кирпичёв правильно пишет про небрежность интуитивного понимания императивных языков: http://antilamer.livejournal.com/300607.html.

Однако, мне кажется, что важно было бы озвучить, что всё то, что сейчас скрывается под именем «монада» — само по себе достаточно спутанно в плане педагогики и евангелизма.  Классическая шутка SPJ/Вадлера звучит как «нам следовало назвать ЭТО warm fuzzy things, чтобы не пугать людей теоркатом».  Шутка поразительно недальновидная.   Проблема лежит в той же плоскости, что и называние стоящих перед тобой задач словом «stuff» (это то, с чем борется Аллен в своём GTD).  
Монады в настоящий момент являются миру как сложный ком из исторически обусловленных причин, проблем, решений, технических возможностей и теоретических основ (как алгебраических, так и аспектов теории вычислений). 
Все эти наслоения можно (и нужно) расщепить в первом приближении так (порядок приблизительно случайный):
  • стремление к экспликации эффектов (чистое внедрение императивно-подобных моментов в вычисление), (см. труды Вадлера);  здесь мы включаем ввод-вывод, STM, параллельные вычисления и проч.)
  • удобный механизм для материализации базовых микро-стратегий вычисления — вызов функции (call-by-name/call-by-value), многозначность, смена состояния (присваивания!), обработка исключений, останов при неудаче, continuations, бэктрекинг;
  • typeclasses как механизм внесения монад в язык, и как следствие — удобный механизм для мета-перехвата вычисления (невероятно удобно для domain-specific embedded languages);
  • строгая проверка типов, проистекающая из использования typeclasses, и позволяющая механически проверять корректность использования объектов;
  • существование монадических законов, в которые укладываются монады, что позволяет материализовывать абстрактные комбинаторы; это позволяет находить порой неожиданные изоморфизмы между различными предметными областями, а также помогает при оптимизации и верификации программ;
  • проработанная теоретическая основа (теория категорий), на которой базируются монады; это облегчает жизнь создателям базовых библиотек, на которых потом базируется всё реальное программирование;
  • монады — лишь один из классов в длинной цепочке интересных алгебраически обусловленных классов, некоторые из которых слабее монад, а некоторые — сильнее: Functor, Applicative, Monoid, Traversable, Foldable, Monad со товарищи, Arrow со товарищи;
  • стремление к материализации некоторых видов вычислений в алгебраическую структуру (моноидальные вычисления); это открывает широкий простор для оптимизаций, верификации программ, создания абстрактных комбинаторов, а также устранение unbounded recursion — по мощности результатов это похоже на то, как когда-то ввод-вывод был надежно изолирован в IO Monad;

Потратим по паре абзацев на каждый пункт.
Читать дальше →
Total votes 49: ↑33 and ↓16 +17
Comments 103

Начало научной карьеры (часть 2)

Reading time 5 min
Views 6.6K
Вторая часть «Начала» будет посвящена тому, как можно «влиться» в структуру зарубежного университета на уровне бакалаврской или магистерской программы.

Перед тем, как приступить к основному блоку, хочу немного уточнить главное послание предыдущей части. Человек, собирающийся делать карьеру учёного в России, вероятно, догадывается, что его зарплата будет ниже, чем у коллег из Германии или США. Но не все знают, что наш научный процесс в большинстве случаев отделён от «общемирового» (разумеется, есть яркие исключения, всё-таки не при железном занавесе живём). Я не говорю сейчас, хорошо это или плохо. Просто сей факт необходимо знать и принимать во внимание.
Читать дальше →
Total votes 53: ↑53 and ↓0 +53
Comments 69

Emacs для начинающих: elisp

Reading time 5 min
Views 15K
Введение


Сразу предупреждаю, что я не собираюсь писать ни учебник, ни
вводный курс Lisp и не претендую на какую либо полноту описания. А
собираюсь я дать некоторые полезные по моему мнению сведения, которые
помогут начинающим использовать emacs настраивать его по своему
усмотрению и писать несложные функции, которыми тоже можно будет
пользоваться в процессе использования emacs.
Читать дальше →
Total votes 37: ↑34 and ↓3 +31
Comments 35

Максимальный поток минимальной стоимости

Reading time 15 min
Views 83K
Транспортная задача (классическая) — задача об оптимальном плане перевозок товара со складов в пункты потребления на транспортных средствах.

Для классической транспортной задачи выделяют два типа задач: критерий стоимости (достижение минимума затрат на перевозку) или расстояний и критерий времени (затрачивается минимум времени на перевозку).

Под катом очень-очень много текста, т.к. рассказывается один из вариантов решения данной задачи «в картинках» для тех, кто мало знаком с графами. Листинг прилагается.

Путешествие в тысячу миль начинается с первого шага
Total votes 173: ↑165 and ↓8 +157
Comments 76

Emacs. Полезности и трюки

Reading time 6 min
Views 14K
это мой первый пост на хабре и в блогах вообще, так что не судите строго. emacs — это чудо-конструктор, из него можно слепить практически всё что угодно (или возможно). и чем больше вы с ним работете, тем больше вы ощущаете его безгранность и мощь. здесь вам и почтовый клиент, и джаббер, и шелл, универсальная среда для разработки, файловый менеджер, игры… этот список можно продолжать и дополнять.

первый запуск emacs' вам не покажет ничего особенного, но как только у вас возникнет проблема или неудобство, вы объязательно найдете решение (если конечно захотите). в этом посте я покажу вам некоторые вещи, которые помогли мне и, надеюсь, помогут вам. заранее предупреждаю, что некоторые функции из тех что я перечислю ниже, написаны не мною и выражаю благодарность их авторам за то что они сделали.
Читать дальше →
Total votes 64: ↑50.5 and ↓13.5 +37
Comments 55

Git Wizardry

Reading time 17 min
Views 448K
1 Введение


В своей прошлой заметке я постарался осветить в общих чертах стиль работы с
распределенной системой контроля версий git и указать на отличия по сравнению с
классическими централизованными СКВ. Целью было прежде всего обобщение опыта
работы с системой без упоминания тонкостей синтаксиса отдельных команд.

Данный же топик задумывался как непосредственное введение в работу с git, нечто
среднее между tutorial и обобщенной справкой, до которого все же рекомендуется
прочитать упомянутое выше введение. Сознательно избегаются технические
подробности работы git, употребляются только общие для СКВ термины и
ограничивается список упоминаемых команд.

Читать дальше →
Total votes 89: ↑66 and ↓23 +43
Comments 76
1

Information

Rating
Does not participate
Registered
Activity