Thursday, October 29, 2015

Языки программирования высокого уровня

Определение. Язык программирования высокого уровня  (ЯПВУ) [high-level language] – 1. Язык программирования, понятия и структура которого удобны для восприятия человеком (согласно ГОСТ 19781-90).  2. Аппаратно-независимый язык программирования.
Все ЯПВУ в той или иной мере являются проблемно-ориентированными, то есть более подходящими для создания программ для определённой предметной области. Те из языков, которые не имеют явной привязки к предметной области, принято называть универсальными.

Disclaimer
Понятно, что информации по конкретным ЯПВУ в Интернете много :) Поэтому этот пост предназначен для некоторой систематизации знаний, которые обязательны практически для любого студента в области ИТ. Но не в академическом стиле и без списка источников.

Первый ЯПВУ
В настоящее время приоритет в создании первого ЯПВУ обычно отдают немецкому учёному Конраду Цузе [Konrad Zuse], который ещё в 1943-45 гг. создал несколько моделей компьютеров на основе электромеханических реле, а в 1945 г. описал язык Plankalkül, намного опередивший все остальные разработки. К сожалению, работы Цузе были опубликованы только в 1972 г. Из-за этого полноценное развитие ЯПВУ начилось в 1950-х годах бывшими противниками Германии в WW2.

«Поколения ЯПВУ»
Сейчас всё реже можно услышать о «поколениях» ЯПВУ. Но ещё 10 лет назад это была обязательная тема при рассмотрении истории развития языков программирования. Наиболее популярно следующее деление.

Monday, August 17, 2015

Горячие клавиши в Microsoft Windows 10 с использованием Win-button

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

Список горячих клавиш в Microsoft Windows 10 с использованием Win-button по областям:
  1. Управление компьютером
    1. Win —  открыть меню Пуск.
    2. Win+ Space —  переключиться между раскладками клавиатуры.
    3. Win+ A —  открыть Центр уведомлений (Action center).
    4. Win+ E —  открыть Проводник.
    5. Win+ F —  открыть Поиск (в режиме поиска файлов).
    6. Win+ G —  открыть панель захвата видео с экрана (Game Bar).
    7. Win+ H —  отправить снимок экрана в зарегистрированные программы.
    8. Win+ I —  открыть панель Настроек.
    9. Win+ K —  открыть панель Устройства.
    10. Win+ L —  заблокировать компьютер.
    11. Win+ O —  блокировать автоматический поворот экрана при повороте компьютера.
    12. Win+ P —  переключать режимы работы дополнительного монитора или проектора.
    13. Win+ Q —  открыть Поиск.
    14. Win+ R —  открыть диалог Выполнить (Запустить).
    15. Win+ S —  открыть Поиск.
    16. Win+ U —  открыть Центр специальных возможностей.
    17. Win+ X —  открыть «Power User» (WinX) меню.
      1. Это меню настраивается - http://winaero.com/comment.php?comment.news.30
    18. Win+ F1 —  открыть справку Windows.
    19. Win+ Pause —  открыть свойства системы.

  1. Окно активного приложения
    1. Win+ —  развернуть окно «на весь экран» (если «нормальное», «верхняя четвертинка») или сделать окно в верхнюю четвертинку экрана (если «половинка»).
    2. Win+ Shift + —  установить высоту окна во весь экран (если «нормальное»).
    3. Win+ —  восстановить окно (если «на весь экран»), сделать окно в нижнюю четвертинку экрана (если «половинка») или минимизировать окно (если «нормальное» или «нижняя четвертинка»).
    4. Win+ / —  «прижать» окно к правой/левой стороне экрана, то есть сделать «половинку» (если «нормальное»). Последовательное нажатие циклически переносит окно на другие мониторы.
    5. Win+ Shift + —  переместить окно на другой монитор с текущим размером.

  1. Рабочие столы
    1. Win+ Tab —  запустить режим управления рабочими столами (Task view).
    2. Win+ Ctrl + D  —  создать новый рабочий стол.
    3. Win+ Ctrl + F4  —  уничтожить активный рабочий стол (приложения с него перейдут на предыдущий).
    4. Win+ Ctrl + /  —  переключиться на следующий/предыдущий рабочий стол.
    5. Win+ D  —  переместить фокус ввода на активный Рабочий стол (и свернуть все окна на нём). Повторное нажатие восстановит все окна.
    6. Win+ M  —  свернуть все окна.

  1. Панель задач и переключение приложений
    1. Win+ T  —  переметить фокус ввода на Панель задач. При этом выделяется первое приложение на панели задач. Последующими нажатиями этого сочетания можно перейти к следующим кнопкам, а затем нажатием Enter запустить нужное.
    2. Win+ 1, 2, 3, …  —  аналогично клику на кнопке приложения с соответствующим номером в Панели задач, то есть переключение задач.
    3. Win+ Shift + 1, 2, 3, …  —  аналогично Shift-клику на кнопке приложения с соответствующим номером в Панели задач, то есть запуск новой копии программы.
    4. Win+ Ctrl + 1, 2, 3, …  —  переключение между разными окнами одной программы.

  1. Область уведомлений
    1. Win+ B — переметить фокус ввода в Область уведомлений (системный трей) с выбором первой иконки. Затем можно переключаться между разными иконками курсорными клавишами (///).

P.S. Ещё значительно улучшилось управление обычной командной строкой! См. http://www.hanselman.com/blog/Windows10GetsAFreshCommandPromptAndLotsOfHotkeys.aspx


Wednesday, July 29, 2015

Selection of most influential books in Computer Science (IMHO :). To be updated...

2.        ГЛАВНЫЕ КНИГИ С ИСХОДНИКАМИ, КОММЕНТАРИЯМИ И ДОПОЛНИТЕЛЬНЫМИ МАТЕРИАЛАМИ
2.1.        Дискретная математика (логика, комбинаторика, теория графов)
  1. Айгнер М. Комбинаторная теория. – М.: Мир, 1982. – 558 с.
    1. Правильно систематизирует знания по комбинаторике. Вводит понятие «комбинаторной конфигурации».
2.2.        Алгоритмизация
  1. Cormen T.H., Leiserson C.E., Rivest R.L., Stein C. Introduction to Algorithms (3rd Edition). – MIT Press, 2009. – 1312 p.
    1. Must read!  Обычно первая книга, которую советуют как учебник по эффективной алгоритмизации. Книги Седжвика и Книта не хуже – просто другие, но в качестве учебника эта оптимальна…
    2. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ, 3-е изд. – М.: Вильямс, 2013. – 1328 с. (во втором издании при переводе и предпечатной подготовке допустили несколько грубых ошибок, в третьем вроде исправили, но все ли?)
  2. Sedgewick R., Wayne K. Algorithms. – Pearson Education, 2011. – 956 p.
    1. Must read!  Вторая книга, которую советуют как учебник по эффективной алгоритмизации. В России хорошо известны предыдущие работы
    2. http://algs4.cs.princeton.edu – дополнительные материалы
    3. Седжвик Р. Алгоритмы на C++. Фундаментальные алгоритмы и структуры данных. – М.: Вильямс, 2013. – 1056 с. (+ аналогичные «алгоритмы» на C и на Java)
  3. Sedgewick R., Flajolet P. An Introduction to the Analysis of Algorithms (2nd Edition). – Pearson Education, 2013. – 572 p.
    1. Must read! Книга об анализе вычислительной сложности алгоритмов (в первую очередь – асимптотической временной сложности в худшем случае, но не только).
    2. Нормального русского перевода не видел!!!
  4. Garey M.R., Johnson D.S. Computers and Intractability: A Guide to the Theory of NP-completeness. –W. H. Freeman, New York, 1979.
    1. Must read! Просто шедевральный справочник по состоянию компьютерной науки в смысле теории сложности алгоритмов на 1979 год! Читать после Кормена и Седжвика для приобщения к истокам и систематизации задач.
    2. Гэри М., Джонсон Д., и др. Вычислительные машины и труднорешаемые задачи. – Мир, 1982. – 420 с. (хорошо переведена и по сути стала источником терминологии)
  5. Hoare C.A.R. Communicating Sequential Processes. – Prentice Hall, 1985. – 256 p.
    1. Must read! Первое алгебраическое описание параллелизма и недетерминизма в алгоритмах. Реально первоисточник, ясный и краткий.
    2. Хоар Ч.Э. Взаимодействующие последовательные процессы. – М.: Мир, 1989. – 264 с.
  6. Aho A.V., Hopcroft J.E., Ullman J.D. Data Structures and Algorithms Paperback. – Addison-Wesley, 1983. – 427 p.
    1. Книгу Вирта я в список не включил, но данную работу – обязательно. Она систематична, хорошо написана и относительно мала по объёму.
  7. Dijkstra E.W. A Discipline of Programming Paperback. – Prentice Hall, 1976. – 217 p.
    1. Must read! Рассмотрение программы как формального объекта, поведение которого может быть обосновано. Введение понятия минимального предусловия [weakest precondition] и аксиоматической семантики. Начинающему программисту, не изучавшего курс «семантики языков программирования» книга сносит мозг круче, чем любое современное обсасывание функциональщины…
    2. Дейкстра Д. Дисциплина программирования. – М.: Мир, 1985. – 274 с.
    3. Comment. У Дейкстры ещё есть исключительный сборник эссе.
  8. Липский В. Комбинаторика для программистов. – М. : Мир, 1988. – 213 с.
    1. Must read! Наиболее понятное из коротких и самое короткое из понятных введений в алгоритмы комбинаторики и теории графов: от генерации перестановок и обходов графа до матроидов трансверсалей. По многим отзывам, перевод сделан в некоторых аспектах даже лучше оригинала, что огромная редкость.
  9. Зубов В.С., Шевченко И.В. Структуры и методы обработки данных. Практикум в среде Delphi. – М.: ФИЛИНЪ, 2004. – 304 с.
    1. Лично на меня эта книга произвела даже большее впечатление, чем Кнут, наверное, потому, что Кнута я читал как учебник, а эта книга – превосходный справочник. В неё набит огромный объём знаний и конкретных алгоритмов.
2.3.        Системное программирование
  1. Tanenbaum A.S., Bos H. Modern Operating Systems (4th Edition). – Prentice Hall, 2014. – 1136 p.
    1. Must read! От создателя Minix и человека, как минимум 3 раза выигрывавшего спор у Линуса Торвальдса со всей его командой поддержки. Но спорная по подаче материала.
  2. Tanenbaum A.S., Wetherall D.J. Computer Networks (5th Edition). – Prentice Hall, 2014. – 960 p.
  3. Tanenbaum A.S., Van Steen М. Distributed Systems: Principles and Paradigms (2nd Edition). – Prentice Hall, 2006. – 704 p.
    1. Эта книга знаменита тем, что долгое время была единственным переведённым трудом по распределённым системам в целом, но написана намного хуже, чем книги про ОС и сети.
    2. Таненбаум Э.,  ван Стен М. Распределённые системы. Принципы и парадигмы. — СПб.: Питер, 2003. – 877 с. (тот самый знаменитый перевод)
  4. Intel® 64 and IA-32 Architectures Software Developer Manuals. Combined Volumes: 1, 2A, 2B, 2C, 3A, 3B and 3C. – Intel, January 2015. – 3463 p.
    1. Первоисточник по архитектуре платформы «x86» и её расширениям. Включает руководство программиста и руководство по оптимизации. Никакой книгой в полном объёме не заменим (см. объём)!
2.3.1.        Программирование под Microsoft Windowos
  1. [Rus] Рихтер Дж. Windows для профессионалов: создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows, 4-е изд. — СПб: Питер; М.: «Русская редакция», 2001. – 752 c.
    1. Каждый системный программист на платформе Windows, которого я знаю, прочитал эту книгу несколько раз! Я тоже.
  2. Richter J. CLR via C#. Developer Reference (4th Edition). – Microsoft Press, 2012. – 896 p.
    1. Лучшее объяснение основ платформы .NET .
  3. Рихтер Дж. CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C#. – СПб: Питер, 2007. – 656 с.
    1. Рихтер Дж. Программирование на платформе Microsoft .NET Framework. Мастер-класс. – М.: «Русская редакция»; СПб. : Питер, 2005. – 512 с.
    2. Шикарное введение в платформу .NET
2.4.        Программная инженерия
  1. McConnell S. Code Complete: A Practical Handbook of Software Construction (2nd Edition). – Microsoft Press, 2004. – 960 p.
    1. Библия программиста – здравый смысл а каждой странице. Поднимает настроение, даёт советы на каждый день, повышает качество работы.
    2. Макконнелл С. Совершенный код. Практическое руководство по разработке программного обеспечения. – Спб. : Питер, 2005. – 896 с.
  2. Brooks F.P. The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition) Paperback. – Addison-Wesley, 1995. – 336 p.
    1. Великий развенчатель мифов о производительности коллективов программистов. Читать нужно именно второе издание.
    2. Брукс Ф.П. Мифический человеко-месяц, или Как создаются программные системы. – Символ-Плюс, 2007. – 304 с.
  3. Aho A.V., Lam M.S., Sethi R., Ullman J.D. Compilers: Principles, Techniques, and Tools (2nd Edition). – Addison Wesley, 2006. – 1000 p.
    1. «Книга дракона про компиляторы» - этим всё сказано для всех настоящих программистов.
    2. Ахо А., Сети Р., Ульман Дж.Д., Лам М. Компиляторы: принципы, технологии и инструменты. – Вильямс, 2008. – 1184 с.
  4. Gamma E., Helm R., Johnson R., Vlissides J. Design Patterns: Elements of Reusable Object-Oriented Software. – Addison-Wesley, 1994. – 395 p.
    1. Эту книгу надо прочитать, чтобы понимать других участников проекта с использованием объектно-ориентированной методологии.
  5. Fowler M., Beck K., Brant J., Opdyke W., Roberts D. Refactoring: Improving the Design of Existing Code. – Addison-Wesley, 1999. – 464 p.
    1. Эту книгу тоже надо прочитать, чтобы понимать других участников проекта с использованием объектно-ориентированной методологии. Ну и чаще делать рефакторинг…
    2. Фаулер М. и др. Рефакторинг. Улучшение существующего кода. – М. : Символ-Плюс, 2005. – 432 с.
  6. [Rus] Спольски Д. Джоэл о программировании. – Символ-Плюс, 2006. – 352 с.
    1. Тот самый Спольски – великолепный эссеист. У него ещё куча классных эссе про все аспекты Software Engineering.
    2. http://www.joelonsoftware.com

Friday, July 17, 2015

Медицинская информатика и медицинские информационные системы (базовые ссылки)

Доказательная медицине (без неё никуда ::

  1.  Доказательная медицина или медицина, основанная на доказательствах [evidence-based medicine] – совокупность методологических подходов к медицинской практике, опирающихся на проверку эффективности любых клинических действий, причём эффективность обосновывается рандомизированными клиническими исследованиями (РКИ).
    1. В узком смысле это подразумевает, что решение о применении лечебных или профилактических мер по отношению к пациенту принимается только исходя из существующих доказательств эффективности и безопасности этих мероприятий.
  2. «Знаете, как называется альтернативная медицина, доказавшая свою эффективность? Медицина.»  Сказана кучей специалистов, но в анналы вошла после песни Тима Минчина «Storm».

О доказательной медицине и РКИ:
  1. Introduction to Evidence-Based Practice tutorial (http://www.students4bestevidence.net/start-here/what-is-evidence-based-medicine).
  2. Cochrane Handbook for Systematic Reviews of Interventions (http://handbook.cochrane.org/).
    1. Browse our Webliography of resources for evidence-based health care to find books, articles, databases, tutorials & much more.
  3. Мохов О.И. "Анализ данных клинического исследования" // Качественная клиническая практика, 4, 2003. – C. 24-33. (http://cra-club.ru/images/GCP_Journal/gcp_2003_4_3abstract.pdf).
  4. Guidelines for randomized clinical trial protocol
  1. Clinical Trial Toolkit (http://www.ct-toolkit.ac.uk/home).
Регуляторы и реестры РКИ:
  1. International Conference on Harmonization of Technical Requirements for Registration of Pharmaceuticals for Human Use (ICH) (http://www.ich.org).
  2. CONSORT - Consolidated Standards of Reporting Trials (http://www.consort-statement.org).
  3. List of Clinical Trial Registries (http://www.theibta.org/clinicaltrialregistries.html).
    1. Один из основных реестров рандомизированных клинических исследований (http://www.clinicaltrials.gov).
  4. Europe:
    1. EU Clinical Trials Register (https://www.clinicaltrialsregister.eu).
    2. Medicines and Healthcare products Regulatory Agency (http://www.mhra.gov.uk).
      1. Good Clinical Practice (GCP) (http://forums.mhra.gov.uk/forumdisplay.php?1-Good-Clinical-Practice-(GCP)).
  5. USA:
    1. ClinicalTrials.gov is a registry and results database of publicly and privately supported clinical studies of human participants conducted around the world. Learn more about clinical studies and about this site, including relevant history, policies, and laws (https://clinicaltrials.gov/).
    2. National Institutes of Health (NIH):
      1. Finding a Clinical Trial (http://www.nih.gov/health/clinicaltrials/findingatrial.htm).
      2. List of Registries (http://www.nih.gov/health/clinicaltrials/registries.htm).
  6. Australia:
    1. Australian Clinical Trials (http://www.australianclinicaltrials.gov.au).
      1. Clinical Trial Registries (http://www.australianclinicaltrials.gov.au/node/230).
  7. Russia:
    1. Ассоциация организаций по клиническим исследованиям (AOKИ) – некоммерческая организация, объединяющая юридических лиц, участников российского рынка клинических исследований (http://acto-russia.org).
    2. Реестр выданных разрешений на проведение клинических исследований лекарственных препаратов [РКИ] (http://grls.rosminzdrav.ru/CIPermitionReg.aspx).
    3. Клинические исследования для пациентов (http://clinical-trials.ru).
    4. Национальный стандарт Российской Федерации ГОСТ Р 52379-2005 "Надлежащая клиническая практика" (http://acto-russia.org/index.php?option=com_content&task=view&id=17). Cтандарт идентичен Руководству по надлежащей клинической практике (Consolidated Guideline for Good Clinical Practice) Международной конференции по гармонизации технических требований к регистрации фармацевтических продуктов, предназначенных для применения человеком (International Conference on Harmonization of Technical Requirements for Registration of Pharmaceuticals for Human Use; ICH).

Глоссарии РКИ:
  1. Клинические исследования (русский глоссарий) (http://www.medtran.ru/rus/trials/glossary/clinical_trial_terminology.htm).
  1. Glossary of Common Site Terms (http://www.clinicaltrials.gov/ct2/about-studies/glossary).

О медицинской информатике, медицинских информационных системах (МИС) и системах поддержки принятия врачебных решений (CDSS):
  1. Международная ассоциация - International Medical Informatics Association: IMIA (www.imia-medinfo.org). С 1967 года развивают методологию.
  2. Один из лучших ресурсов по внедрению EHR Systems (базовых МИС, управляющих электронными записями о пациентах) - Health information technology (health IT) (http://www.healthit.gov/providers-professionals/learn-ehr-basics).
  3. The Many Types of Clinical Analytics (Module 3) (http://www.himss.org/library/clinical-business-intelligence/clinical-business-intelligence-primer/types-of-clinical-analytics).
  4. Слегка устаревше, но системно про Clinical decision support systems (CDSSs) at  OpenClinical (http://www.openclinical.org/dss.html)
  5. Тоже слегка устаревше про CDSS - Berner E.S. Clinical Decision Support Systems: State of the Art, 2009 (http://healthit.ahrq.gov/sites/default/files/docs/page/09-0069-EF_1.pdf).
  6. Yuse Lajiminmuhip, The Impact of Clinical Decision Support Systems on Infectious Disease Specialists, 2014 (http://yuselajiminmuhip.com/wp-content/uploads/2015/04/IDSA-Report-CDSS.pdf).
  7. Обзор о применении в уходе за пациентами - Addis Adera Gebru, Yonas Yimam, Abraha Woldemicheal Nigussie, Weldegebreal Gebregziabher kahsay, Nigus Dejenu Gelaye, Zemenu Mengistie, Clinical decision support system in nursing: A review of literature, 2015 (http://ijbamr.com/pdf/March%202015%20437-452.pdf.pdf).
  8. Про IBM Watson (http://healthitanalytics.com/news/ibm-watson-becomes-unique-clinical-decision-support-tool).

  1. Базовые медицинские онтологии и тезаурусы (сейчас все интеллектуальные системы нового поколения основаны на онтологическом моделировании):
    1. Интегратор источников данных и метаонтологий SNOMED Clinical Terms (SNOMED CT) (http://www.ihtsdo.org/snomed-ct).
      1. Technical Implementation Guide (http://ihtsdo.org/fileadmin/user_upload/doc/en_us/tig.html).
      2. SNOMED® In Action (http://snomedinaction.org/sct-table.html).
    2. Unified Medical Language System (UMLS) Metathesaurus (http://www.nlm.nih.gov/research/umls/quickstart.html).
    3. Medical Subject Headings (MeSH) (http://www.nlm.nih.gov/mesh/meshhome.html).
  2. Другие онтологии:
    1. The Disease Ontology (http://disease-ontology.org/).
    2. MedDRA текущая версия 17.1 (http://www.meddra.org).
    3. HL7 Reference Information Model (http://www.hl7.org/implement/standards/rim.cfm).
    4. RxNorm – нормализованные названия лекарственных препаратов (http://www.nlm.nih.gov/research/umls/rxnorm/index.html).
    5. The Open Biological and Biomedical Ontologies (http://www.obofoundry.org/).

Некоторые международные стандарты в области МИС:
  1. Technology and Standards for Health Care (http://www.aspe.hhs.gov/sp/nhii/standards.html).
  2. HL7 - Health Level Seven International (http://www.hl7.org).
    1. Clinical Document Architecture (CDA) (http://www.hl7.org/implement/standards/product_brief.cfm?product_id=7).
    2. Tools & Resources (http://www.hl7.org/participate/toolsandresources.cfm).
    3. Что такое HL7 Continuity of Care Document (CCD) (http://habrahabr.ru/post/256021/).
    4. Немного об HL7 EHR-System Functional Model (Функциональная Модель системы ЭМК) (http://habrahabr.ru/post/256609/).
  3. International Classification of Diseases (ICD) (http://www.who.int/classifications/icd/en/).
  4. CDISC - Clinical Data Interchange Standards Consortium (www.cdisc.org).
  5. ISCG Open House (http://www.iscg-openhouse.public-i.tv/core/portal/Discussion).
  6. MedBiquitous Consortium (http://www.medbiq.org/std_specs/standards/index.html).
  7. Unified Medical Language System (http://www.nlm.nih.gov/research/umls/quickstart.html).