Лексикон программиста: Понимаем сленг программистов: мини-словарь для начинающих…
Понимаем сленг программистов: мини-словарь для начинающих…
Начинающие разработчики не сразу понимают старших товарищей. Фразы вроде «я апишку свитчнул» или «заимпорти другую либу» звучат для новичков как лекция по математическому анализу для первобытного человека. Поэтому мы решили сделать небольшой словарь профессионального сленга программистов.
Слова и фразы в словаре отсортированы по алфавиту. Кстати, словарь можно дополнять. Пиши в комментариях термины, с которыми вы сталкивались на работе.
А
Аджайл — от англ. Agile. Общий термин, описывает ценности и принципы гибкой разработки программного обеспечения, а также практические подходы к разработке. Понятие Agile стало популярным после публикации Манифеста гибкой разработки программного обеспечения в 2001 году.
Айдишник — id, идентификатор.
Альфа — этап разработки программного обеспечения, на котором разработчики добавляют в программу новые функции, а тестировщики испытывают программу. Это внутренний или непубличный этап.
Апишка — API, программный интерфейс приложения или интерфейс прикладного программирования.
Аутсорс — аутсорсинг, передача компанией части операционной деятельности другой компании.
Адаптив — адаптивный дизайн, адаптация интерфейса к использованию на разных экранах.
Б
Баг — от англ. Bug — жучок, клоп. Ошибка в программе.
Бахнуть — что-то быстро сделать, изменить или дополнить функциональность приложения.
Бета — бета-версия, приложение на стадии публичного тестирования.
Бот — сокращение от «робот». Ботом называют программу, которая автоматизирует интерфейс. Пример — автоответчик в чате.
Бэкенд — от англ. Back-end. Программно-аппаратная или серверная часть приложения.
Бэкап, бэкапить — резервная копия или процесс создания резервной копии приложения.
В
Ворнинг — от англ. Warning — предупреждение. Предупреждающее сообщение в интерфейсе.
Войтивайти — шуточное, обозначает процесс переквалификации далёкого от сферы IT специалиста в разработчика.
Выкатить — сделать доступным для пользователей. Например, «выкатили новую версию сайта» значит сделали новую версию сайта доступной для пользователей.
Выпадашка — выпадающее меню, то же, что и «дропдаун».
Г
Галера — компания, в которой платят низкие зарплаты и не ценят разработчиков.
Гит — система контроля версий Git или сервис GitHub.
Г****окод — плохой, некачественный код. Объяснение термина есть в статье нашего студента.
Градиент — плавный переход из одного цвета в другой.
Д
Движок — в веб-разработке так называют системы управления контентом.
Дебажить — устранять ошибки, баги.
Деплой, деплоить — развёртывание, публикация рабочей версии приложения. Пример: задеплоить сайт — перенести сайт с тестового на рабочий сервер, сделать его доступным для пользователей.
Джун, джуниор — от англ. Junior. Младший разработчик. Специалист без опыта или с минимальным опытом работы.
Дезигнер — презрительно-снисходительное название дизайнера.
Драй — от англ DRY, don’t repeat yourself. Принцип программирования, предлагающий избегать повторений кода.
Дропдаун — выпадающее меню, то же, что и «выпадашка».
Ж
Жаба — язык программирования Java.
Жабаскрипт — язык программирования JavaScript.
З
Залить — загрузить. Например, «залить файлы на сервер».
Запилить — сделать что-то, добавить какую-то функциональность.
Змея — язык программирования Python.
И
Исходник — файлы, в которых находится исходный код приложения, или сам исходный код.
Итерация — повторение. «Мы сделали несколько итераций» — мы повторили шаг несколько раз.
К
Коммит, коммитить — от англ. To commit — совершать. В контексте работы над приложением — сохранять код в репозитории.
Конфа — конференция.
Костыль — код, который нужен, чтобы исправить несовершенство ранее написанного кода.
Это интересно
На Хекслете есть раздел с бесплатными курсами. Здесь есть курсы по логике, английскому языку, операционным системам, по языкам и инструментам программирования. Регистрируйтесь и учитесь бесплатно!
Л
Либа — от англ. Library — библиотека. Речь идет о библиотеках кода, например, React.
Линтер — общее нарицательное название программ, которые анализируют код и предупреждают разработчика об ошибках.
Лист — от англ. List — список.
Локалка — локальный. Например, локальный сервер или сеть.
М
Мидл — от англ. Middle — средний. Уровень разработчика, следующий за джуниором. Опыт и уровень знаний миддла позволяет ему самостоятельно решать серьезные задачи.
Мёржить — от англ. Merge, сливать. Речь идет об объединении или слиянии веток кода.
Меншить — от англ. Mention — упоминание. Речь идёт об упоминаниях в чатах или соцсетях. «Менши меня, когда будет готово» значит «упомяни меня, когда будет готово».
Н
Навбар — навигационный блок на сайте или в интерфейсе программы.
Накатить — внести изменения, задеплоить новую версию приложения. Противоположное термину «откатить».
О
Откатить — удалить изменения, вернуть предыдущую версию приложения. Противоположное термину «накатить».
Ось — операционная система.
П
Падаван — ироничное название стажёра или джуниора.
Пилот — пробная (пилотная) версия продукта.
Питон — язык программирования Python.
Подвал — то же, что и «футер». Элемент структуры страницы, который находится в нижней части и содержит служебную информацию.
Поплыла вёрстка — некорректное отображение страницы в браузере.
Продакшн или продакшен (продакшн-код) — обозначение кода для рабочей версии приложении.
Пушить — использовать команду push, публиковать что-то.
Пэхапэ — язык программирования PHP, то же, что и «пыха».
Пыха — язык программирования PHP, то же, что и «пэхапэ».
Р
Релиз — программное обеспечение на стадии публичного использования. Стабильная версия программы, которая прошла тестирование.
Рекурсия — описание процесса с помощью самого процесса. Например, выражение «рекурсивный вызов функции» описывает ситуацию, в которой функция вызывает сама себя.
Репа — репозиторий, хранилище данных. Например, код программы можно хранить в репозитории на GitHub.
Ридми — файл Readme, в котором содержится информация о программе.
Ругаться, например, линтер ругается — сообщения об ошибках в коде, работе сервиса и так далее.
С
Сабж — от английского Subject — тема, предмет. «По сабжу» — по теме обсуждения.
Свитчнуть, свичнуть — переключить. От английского switch.
Сетка — модульная сетка, используется для дизайна и вёрстки страниц.
Сеньор, синьор — от англ. Senior — старший разработчик.
Слетело — сломалось.
Снести — удалить.
Стек — изначально абстрактный тип данных. В разговорной речи используется для обозначения списка технологий, которые использует разработчик или компания. Пример: «Наш стек — HTML/CSS, JavaScript, React».
Собес — собеседование.
Софт — от англ. Software — программное обеспечение.
Софт-скилы — от англ. Soft skills — знания и качества специалиста, прямо не связанные с профессиональной деятельностью. Примеры: коммуникабельность, проактивность.
Т
Темплейт — от английского template — шаблон.
Тестировщик — специалист по тестированию программного обеспечения.
Тимлид — от английского Team leader — руководитель команды. Координатор группы программистов.
У
Убить — удалить что-то. Например, «убить профиль» означает удалить профиль.
Ф
Фидбек — от англ. Feedback — обратная связь.
Фича — функция, возможность. От англ. Feature.
Фреймворк — от англ. Framework — каркас. Инструмент разработки, набор типовых шаблонных решений, упрощающих работу программиста. Примеры: Laravel, Bootstrap.
Фронтенд — от англ. Front-end — клиентская часть приложения.
Х
Хатэмээль, хатээмэль — HTML, язык гипертекстовой разметки.
Хардкодить — статически прописывать в коде данные, которые должны вычисляться динамически. Плохая практика, антипаттерн в программировании.
Хацкер, кулхацкер — ироничное название начинающего специалиста, который считает себя опытным программистом. От английского hacker и cool hacker.
Хедер, хэдер — элемент структуры веб-страницы, находится в верхней части и содержит логотип, меню, служебную информацию.
Ц
Цэмээс, цээмэс — от англ. CMS — content management system, система управления контентом.
Цээсэс — от англ. CSS — Cascading Style Sheets, каскадные таблицы стилей.
Ю
Юзать — от английского to use — использовать.
Я
Ява — язык программирования Java.
Яваскрипт — язык программирования JavaScript.
ЯП — язык программирования.
Словарь программистов/лексикон для неродных языков
Я не говорю по-английски и не очень хорошо владею английским. Я-самосознание. Я не работал вместе с другими над общей кодовой базой. У меня нет друзей, которые программируют. Я не работаю с другими программистами (по крайней мере, с теми, кто заботится об этих вещах).
Я думаю, что это может объяснить некоторые из моих проблем в поиске хороших однозначных имен классов. Я попытался найти что-то вроде «Programmers dictionary», содержащего часто используемые слова и их значения. При чтении чужого кода мне приходится довольно часто искать слова, и поскольку многие используют аббревиатуры, это создает дополнительную проблему.
Мой очень ограниченный словарный запас позволяет мне использовать плохие названия классов, такие как xxManager, xxProvider, xxWhatever. Обычно выбор имен переменных и методов менее проблематичен.
Другие неангличане здесь: как вам удалось справиться с этим? Вы так хорошо изучили английский, что это не проблема? Или вы читали так много, что кодовое именование становится естественным? Или много обсуждали с англоговорящими? Нашли какие-нибудь хорошие сайты, статьи или другие публикации? Поскольку я никогда не читал ничего о программировании на моем родном языке, у меня часто возникают проблемы с поиском слов на моем языке. ..
PS: все другие сообщения, которые я нашел, касались смешивания родного языка и английского… И я понимаю, что это может быть немного не по теме и может быть закрыто.
Edit: некоторые ресурсы из ответов и других материалов, которые я использую:
language-agnostic
coding-style
naming-conventions
naming
Поделиться
Источник
simendsjo
24 июня 2010 в 21:18
9 ответов
- как добавить пользовательский лексикон в мой проект c #
Я разрабатываю проект c#, основанный на распознавании голоса. Я хочу распознавать слова с индийским английским акцентом, поэтому для этого я подумал о лексиконе &, а затем добавил произношения в этот файл, но я не понимаю, как добавить лексикон в мой проект & как создать лексикон?
- Анализ настроений на испанском языке-словарь
Мне интересно заниматься анализом настроений на испанском. Я искал в интернете словарь мнений, и мне кажется невозможным найти что-то похожее на существующие в английском языке. Например, http://www.cs.uic.edu/~liub/FBS/sentiment-analysis.html#лексикон Я новичок в этой области и был бы…
3
Файл жаргона поможет с более неясными ссылками, которые люди будут давать в отрасли.
http://catb.org/jargon/html/go01.html
Кроме that..finding хороших имен для вашего variables/classes/etc трудно . Часто это сложнее, чем на самом деле решить проблему. Вот хороший ресурс для некоторых распространенных имен шаблонов дизайна, которые люди любят использовать: http://en.wikipedia.org/wiki/ Design_pattern_%28computer_science%29
Примеры:
AbcFactory
XyzBridge
Поделиться
Caladain
24 июня 2010 в 21:32
2
Другие неангличане здесь:
Как вам удалось справиться с этим?
Хорошее именование в коде имеет значение. Использование английского языка является предпочтительным, но если вы не очень хорошо знаете английский язык, результат может быть контрпродуктивным.
У меня был друг, который просто угадал, какое правильное имя будет, и результат был ужасен. т.е.
String employiiNeim; // employeeName
int eich; // age
Проблема с английским языком заключается в том, что он не произносится так, как пишется ( у французов есть эта незначительная характеристика … ehrm ) Другие языки, такие как испанский, немецкий, голландский и другие, печатают и произносят каждую букву в слове.
Это становится особенно актуальным, когда вы кодируете бизнес-правила или бизнес-модели. В этом случае гораздо лучше использовать свой родной язык.
String nombreEmpleado;
int edad;
Гораздо лучше, особенно когда работаешь с другими.
Вы так хорошо изучили английский, что это не проблема?
Да, другого пути нет, и много практики.
Вы можете изучать английский так же, как изучаете языки программирования. Вы можете иметь учителя, посещать классную комнату и заниматься по часу в день. Или (что я сделал ) вы можете просто взять что-то, что вам интересно, и попытаться понять это. Например, у вас есть небольшой документ, описывающий что-то, что вас волнует, вы читаете блоги или читаете контент здесь, в StackOverflow, вы переводите песню, которая вам нравится, и т. д.
Все это-формы обучения. Нет другого пути, вы не проснетесь однажды и не скажете: «32 знай кунг», я имею в виду, и не скажете:» …»И знаю English»
Или вы читали так много, что кодовое именование становится естественным?
Также помогает, Но если вы не понимаете, что означает код, вы … ну не добьетесь никакого прогресса.
Вы изучите язык программирования,и это поможет вам немного лучше понимать английский, но не поможет вам выучить его. Это потому, что когда мы программируем, мы изучаем язык программирования, а не родной язык.
Или много обсуждали с англоговорящими?
Eerhh..nope. Если у вас есть такая возможность, это улучшит ваше умение слушать и говорить, но не обязательно ваше умение писать.
Самый эффективный способ улучшить свой английский словарный запас и grammar-это READING (чтение на родном языке также улучшает ваш собственный язык, кстати )
Так что, я бы сказал, читайте как можно больше. Используйте свой родной язык, пока вы обретаете больше уверенности, и продолжайте учиться.
Англичане придут со временем.
Поделиться
OscarRyz
24 июня 2010 в 21:44
2
Если вы не можете найти «Programmer’s Dictionary», который вы ищете, начните один. Напишите новый вопрос: «какие записи отсутствуют в этом словаре для English-as-a-Second-Language-Programmers? «и посеять его с 10 или 20 словами / определениями, которые вы уже обнаружили. Как только плакаты предложат достаточно дополнений, переместите их куда-нибудь в a wiki и продолжайте принимать взносы. В конечном итоге вы можете создать ценный ресурс.
Поделиться
joe snyder
25 июня 2010 в 05:50
- Лексикон словарь синонимических слов
Существует несколько словарей, доступных для обработки естественного языка. Например, словари положительных, отрицательных слов и т. д. Есть ли какой-нибудь словарь, содержащий список синонимов для всех словарных слов? Как для nice synonyms: enjoyable, pleasant, pleasurable, agreeable, delightful,…
- Открытый лексикон для классифицированных аффективных слов
Я ищу лексиконы типа POMS или ANEW , которые классифицируют слова, особенно прилагательные, на 6 universal эмоций: anger, disgust, fear, happiness, sadness, and surprise Пола Экмана или используя подход Рассела . Кто-нибудь из вас знает лексикон, который можно свободно использовать?
1
Если вы беспокоитесь об этом с точки зрения именования ваших собственных объектов, просто подумайте о том, что ваше родное слово означает то, что вы хотите сделать, а затем найдите словарь перевода на английский язык и используйте версию на английском языке.
Поделиться
Zak
24 июня 2010 в 21:31
1
Это может быть неортодоксальное предложение, но я бы рекомендовал изучать английский более глубоко (я также не являюсь носителем языка).
Познакомьтесь как можно больше с английским языком! Смотрите фильмы, читайте английскую литературу, слушайте технические подкасты.
Имейте в виду, если вы действительно хотите углубить свои знания английского языка, вы, вероятно, не узнаете много нового, наблюдая «Transformers». С другой стороны, погружение в Улисса, вероятно, тоже не является хорошей стратегией.
Если вам хочется приключений, вы всегда можете приобрести подписку на журнал «Нью-Йоркер». Он будет делать с тобой разные вещи-да, это огненная травля. 😛
Поделиться
Howdoyoudouken
24 июня 2010 в 22:19
1
Документирование вашего кода с помощью отличной прозы, как ваш вопрос выше, будет иметь большое значение!
Если вы придерживаетесь общих шаблонов проектирования, присущих языку, платформе и архитектуре, с которыми вы работаете, другие инженеры должны довольно легко понять вашу номенклатуру.
Поделиться
Mike Atlas
24 июня 2010 в 21:25
0
Это проблема, с которой я тоже сталкиваюсь, даже будучи носителем английского языка. Как программист, я часто нахожу, что мне нужно найти описательное слово для класса, переменной, функции и т. д. Я часто ловлю себя на том, что спрашиваю друга или коллегу, какой глагол они использовали бы, объясняя мою идею, тщательно исключая любые слова, которые я сам рассматривал как возможный выбор имени class/function/variable, чтобы не препятствовать их творчеству.
Мне кажется, что предложение сайта использования английского языка & в Area51-это хорошее место, чтобы задать такие вопросы, как «как бы вы назвали класс (или вещь), который делает это, это и то, и имеет свойства x, y и z?
Поделиться
Caleb Hearth
24 июня 2010 в 22:19
0
Как насчет использования вашего родного языка?
Конечно (как и для меня как австрийца) некоторые буквы могут быть запрещены — но кого волнует, есть ли Mörder или Moerder (Убийство) в названии класса 🙂
Или (как я это делаю) использовать словарь типа dict.cc или что-то еще.
Я делаю-думаю, что делает класс — он управляет игровой сессией (например), так что она станет GameSessionManager.
Аббревиатуры — это (по крайней мере для меня) проблема, но то, что я узнал от других носителей языка кодовых событий, использует другие аббревиатуры.
И если класс называется GameSessionMgr или GameSessionMngr, это не имеет значения.
Вы не пишете книги или что-то вроде «english poem», где орфография, grammar и… считается.
Вы пишете код — и если вы будете следовать «your sepcial rules» — вы и другие (через некоторое время) сможете понять ваш код и имена классов.
Поделиться
ManniAT
24 июня 2010 в 21:29
0
Это придет со временем и опытом. Прежде всего попытайтесь (как говорит @Mike A) документировать вещи до тех пор, пока код не станет более ясным, и постарайтесь быть последовательным.
Поделиться
Preet Sangha
24 июня 2010 в 21:29
Похожие вопросы:
Есть ли учебник для Ruby программистов, которые хотят выучить Perl?
Я разработчик Ruby (биоинформатический анализ, уже пару лет не делал Ruby на Rails), и в свободное время мне поручили отвечать за очень простой сайт на базе Perl. Хотя есть много ресурсов, которые…
Сколько существует assembly языков
Я читал эту статью в Википедии о списке ассмебли http://en.wikipedia.org/wiki/ List_of_assemblers оказывается, существует множество assembly языков.. так, например, если вы изучите язык Yasm…
Любой хороший текстовый редактор — приложение Android-оптимизирован для программистов?
Есть ли хорошие приложения Android-текстовые редакторы, оптимизированные для программистов? Я спрашиваю о приложении Android, которое является редактором! Меня не интересуют Редакторы, работающие на…
как добавить пользовательский лексикон в мой проект c #
Я разрабатываю проект c#, основанный на распознавании голоса. Я хочу распознавать слова с индийским английским акцентом, поэтому для этого я подумал о лексиконе &, а затем добавил произношения в…
Анализ настроений на испанском языке-словарь
Мне интересно заниматься анализом настроений на испанском. Я искал в интернете словарь мнений, и мне кажется невозможным найти что-то похожее на существующие в английском языке. Например,…
Лексикон словарь синонимических слов
Существует несколько словарей, доступных для обработки естественного языка. Например, словари положительных, отрицательных слов и т. д. Есть ли какой-нибудь словарь, содержащий список синонимов для…
Открытый лексикон для классифицированных аффективных слов
Я ищу лексиконы типа POMS или ANEW , которые классифицируют слова, особенно прилагательные, на 6 universal эмоций: anger, disgust, fear, happiness, sadness, and surprise Пола Экмана или используя. ..
Какие синтаксические особенности языков программирования являются проблематичными для слепых программистов?
Каковы синтаксические особенности современных языков, которые оказываются проблематичными для читателей экрана или читателей braille? Какие символы и конструкции раздражают, когда их слышишь или…
Лексикон настроений для прогнозирования фондового рынка
Я создаю приложение машинного обучения для прогнозирования фондового рынка, которое будет пытаться предсказать цену определенной акции. По этой причине он будет принимать новостные статьи/твиты,…
Форума Английский Словарь
Я хотел бы скачать английский лексикон (словарь) — желательно бесплатный. Я искал в интернете, и все, что я могу найти, это программное обеспечение. Я хочу поэкспериментировать с созданием…
Переводчик – словарь и онлайн перевод на английский, русский, немецкий, французский, украинский и другие языки. | Как перевести «лексикон программиста
Лексикон (ролевая игра)
Лексикон частично ролевая игра, придуманная Нилом Кришнасвами и популярен среди любителей инди ролевые игры. по словам авторов, действие игры происходит в Интернет на основе вики-движка. по игре он был вдохновлен работой Милорад Павич «Хазарский словарь». игроки берут на себя роль ученых, которые пытаются создать какую-то энциклопедию или сборник работ по истории и экологии какое-то выдуманное событие, период времени или конкретный регион вымышленного мира или мира в целом. В процессе совместного творчества игроков активно взаимодействовать друг с другом. В оригинальной идее, которая использует латинский алфавит, игра из 26 ходов, в течение которых участвует открыт набор одну тему, например: «у ученых споры ревизионистов Politehnicheskii эпохи о том, как восстание Духа пустоты привело к свержению кибернетические теократии и установление Третьей Республики». Каждый игрок на первом ходу создает статью, придумать имя, начинающееся с буквы A. В статье необходимо процитировать и ссылку в конце две другие статьи, которые еще не написаны. это так называется статья «призраки», они имеют название, но содержание будет создаваться в следующих отрывках. В «энциклопедии» для каждой буквы может быть как много статей, как футболистов, так что все ссылки на первый ход должен начинаться с любой буквы кроме A. На второго и последующих инсультов создание новых статей, начиная последовательно с B, C, D и т. д. для Z. при создании статьи необходимо ссылаться на остальные три: два письменных и один уже существующих. таким образом, игрок не может полагаться на написанные им самим статьи, что приводит к необходимости сотрудничества с другими игровыми и основывать свои статьи на чужих факты. На 25 ходу может ссылаться только на одну создал и одну статью- «призрак», а 26 ходу — только для существующих, чтобы не быть достаточное количество изделий из нетварного — в первом случае и игра заканчивается во второй. Возможные изменения или дополнения в правила, основываясь на концепции текущей игре или вики двигателя. например: написание статей каждый игрок на свое письмо, в котором в настоящее время не написано, или в конце игры весь цикл повторяется, или циклов, как правило, не считаются полученными бесконечный процесс. возможно, что допускается ограниченное редактирование уже написанных статей или писать комментарии в них, либо в новой статье ссылки на другие не в его конце, и в любом месте для текста. расширенный «Правило Икса» может дать письмо особое свойство, как «джокерам» в некоторых играх: когда придет черед написать статью, начинающимся с этой буквы, участники могут использовать любые другие буквы, в том числе и те, на которые статьи в предыдущей движется. наконец, в «телефонном» версия игры продолжает не 26 движется а 8 в соответствии с тем, как буквы сгруппированы по клавишам телефона.
Хакерский жаргон: rulezzz или suxx? | GeekBrains
Поговорим об уникальном языке, на котором общаются профессиональные хакеры.
https://d2xzmw6cctk25h.cloudfront.net/post/414/og_cover_image/48aa045faff98f2f6f62187f85eead97
Мир программирования — целая вселенная, которая имеет не только свою историю и традиции, но еще и целую культуру, часть которой — язык. При этом хакеры, безусловно, одна из самых интересных частей этого мира, имеют свой жаргон, характерный только им. Именно об этом «наречии» и пойдет разговор далее.
От suxx до rulezzz
Для начала стоит сказать о самом слове «хакер», которое обозначает человека, осуществляющего с той или иной (иногда благородной) целью взлом программ, сайтов, счетов, компьютеров и многого другого. При этом изначально хакерами называли тех программистов, которые устраняли ошибки в коде с помощью простых, но не самых красивых с точки зрения языка программирования, способов.
При этом корень hack пришел в культуру от хиппи. Перевести на русский глагол to hack можно как «врубаться».
Слово «Бэкдор» (от английского «Backdoor» — черный вход) и производный от него глагол «забэкдорить» означают для хакера специальное ПО, отрывающее ему доступ к нужной «тачке». А «Тачка», в свою очередь, означает персональный компьютер, объект для взлома. Другие вспомогательные программы хакеры величают «Тулзами» (от английского «tools» — инструменты). Также именно хакерами введено в обиход выражение «вывалиться в кору», что означает непредвиденное завершение работы какой-либо программы.
Глагол «задосить» и производные от него означают проведение атаки на сервер, результатом которой является сбой в его работе. «Демоном» хакеры называют не мифическое существо, а программу, которая находится в оперативной памяти и незримо выполняет свою работу. Исходный код при этом зовут «Сырцой». В таком неблагозвучном названии виновато английское слово «Source» — источник, исходник.
Опытных пользователей, которые имеют определенный набор знаний для взлома, профессионалы называют «Крекерами» («to crack» — взломать). Программы, которые сканируют сетевой трафик, называют «сниферами».
Есть и другие слова, которые давно вошли в мир программиста частично из лексикона хакеров:
- Suxx (сакс) — отстой.
- Баг — ошибка.
- Пофиксить — исправить.
- Расшарить — открыть в общий доступ.
- Окна — Windows.
- Карлсон — кулер компьютера.
- Ламер — человек, который не разбирается «в теме», но зачастую желающий показаться таковым.
- Rulezz — круто, противоположное слову Suxx.
Безусловно, это не все слова и выражения, употребляемые хакерами. Их язык очень богат, а самое главное, он постоянно развивается, обрастая новыми формулировками, понятными только им. Однако, если в жизни вы соприкасаетесь с хакерской средой, получить хотя бы общее представление о языке хакеров вам будет очень полезно!
На человеческом языке о веб-разработке: профессия «Веб-разработчик» от GeekBrains.
Евгений Веселов и Лексикон
Евгений Веселов и Лексикон
Евгений Веселов и Лексикон
Автор появившегося в 1985 году
текстового процессора Лексикон (греч. lexicon —
словарь) Евгений Веселов входил в свое время в знаменитую группу молодых
программистов, работавших под руководством Виктора Брябрина в Вычислительном
центре Академии наук СССР и готовивших оригинальные программы для только
начинавших тогда у нас появляться IBM PC и совместимых с ними компьютеров.
Веселов писал, что работа над текстовым процессором велась без какого-либо
серьезного плана. В то время в группе Брябрина имелся уже свой неплохой, но не
лишенный недостатков редактор, так сказать, для внутреннего пользования.
“Захотелось создать что-нибудь получше только для того, чтобы легче было вводить
и редактировать собственные программы и статьи” [1].
Популярность Лексикона, который называют
“русским народным редактором”, основывалась прежде всего на том, что он дает
возможность готовить тексты на русском языке, не требуя от пользователя никаких
специальных навыков [1, 2]. С той или иной версией этой программы в то время
имел дело практически каждый отечественный пользователь
персонального компьютера. Лексикон был разработан как независимая часть
интегрированной системы “Мастер”, содержащей, помимо него, табличный процессор,
систему управления базами данных, графический процессор [3—8]. “Ранние версии
Лексикона распространялись бесплатно, последующие — уже на коммерческой основе
(с защитой от копирования). Некоммерческие версии Лексикона обладают
сравнительно скромными возможностями: они не позволяют использовать различные
гарнитуры символов, не обеспечивают работу с пропорциональными шрифтами, набор
текста в несколько столбцов, употребление сносок и т.д. Но для многих
пользователей этого и не требуется. Коммерческие версии Лексикона обеспечивают
больше возможностей и удобнее в использовании” [3].
А истинный успех на рынке программ ожидал
Лексикон после того, как усилиями компании “Микроинформ” его удалось представить
как настоящий программный продукт со всеми необходимыми атрибутами [1].
Компания “Микроинформ” была зарегистрирована
летом 1988 года как шестидесятое негосударственное предприятие в России и всего
лишь третья фирма в сфере компьютерного бизнеса (после
компаний “Интерквадро” и “Диалог”). Первые годы основную прибыль фирме приносила
торговля компьютерным оборудованием. Вырученные деньги позволяли развивать
другие направления деятельности, в частности, заниматься прикладными
разработками, обучением.
Однако
“Микроинформу” не хватало сильных программистов, и Евгению Николаевичу Веселову
предложили продолжить работу над Лексиконом в этой компании. Веселов не
согласился сразу на переход, а вот некоторые его коллеги перешли в “Микроинформ”
и начали трудиться над новыми версиями знаменитой программы. Веселов выступал в
роли научного консультанта, но позже пришел в фирму на должность технического
директора. Компания “Микроинформ” обеспечила всю необходимую инфраструктуру,
которая делает программу рыночным продуктом. Был освоен промышленный выпуск
тысячными тиражами, работали специальные службы продаж, было налажено обучение,
планировалась разработка следующих версий. Покупатель получал красиво
оформленную коробку, где, помимо самой программы, находились: руководство
пользователя, паспорт, регистрационная карточка.
Компания выпустила (начиная с 1992 года) пять
версий нового Лексикона для DOS, причем их подготовкой руководил Сергей
Панкратов, а сам Веселов был занят уже разработкой Лексикона для Windows (в
частности, Лексикона 2.0) и развитием интегрированной системы “Мастер”.
Тем временем пиратство и активное продвижение
на российский рынок пакетов программ Microsoft Office делали свое дело.
Выдерживать конкуренцию становилось все труднее. Вскоре Веселов перешел в
компанию IBS, а в “Микроинформе” приняли решение закрыть “программное”
направление [1, 9].
Тем не менее
“русский народный текстовый редактор” жив. Отказавшись от дальнейшей работы над
продуктом, фирма “Микроинформ” стремилась сохранить торговую марку и в
результате передала права на нее дочернему предприятию компании “АйТи” — фирме
“Арсеналъ” [1], которая продолжила разработку нового Лексикона для Windows.
Литература
1.
Дубова Н. Лексикон в коробке // Computerworld Россия, № 29/2000.
2. Катаев А.И. Текстовый процессор
Лексикон (от “н” до “с”). М.: Радио и связь, 1992.
3. Фигурнов В.Э. IBM PC для
пользователя. Изд. 6-е, перераб. и доп. М.: ИНФРА-М, 1995.
4. Веселов Е.Н. Интегрированная система
“Мастер” для ПЭВМ. М.: Финансы и статистика, 1989.
5. Кренкель Т.Э., Коган А.Г., Тараторин
А.М. Персональные ЭВМ в инженерной практике. М.: Радио и связь,
1989.
6. Сыромолотов Е.Н.
Текстовые редакторы Лексикон и Чирайтер. М.: Военная академия химической защиты
им. С.К. Тимошенко, 1990.
7.
Смородинский А.В., Посудина А.Ю. Текстовые
процессоры для IBM-совместимых ПК // Интеркомпьютер, № 2/90.
8. Почти забытый? // Информатика, №
48/2000.
9. Козловский Е. Как
нам купить и обустроить компьютер. Изд 3-е, перераб. в корне и обильно доп. М.:
ABF, 1997.
Биография | Архив академика А.П. Ершова
Андрей Петрович Ершов, выдающийся программист и математик, лидер советского программирования, родился 19 апреля 1931 г. в Москве. Умер после тяжелой болезни в Москве 8 декабря 1988 г.
Происходил он из семьи потомственных интеллигентов. Отец был инженером-химиком, мать — библиотекарем. В его роду — типичном роду русской демократической интеллигенции — были военный врач, профессор-химик, академик — специалист по истории Византии, революционеры и партийные работники первых лет советской власти.
С 1943 г. родители А.П. Ершова живут в Сибири, в Кемерово, где в 1949 г. он и закончил среднюю школу. В том же году он поступает на физико-технический факультет Московского университета, собираясь стать физиком. Однако из-за нелепых запретов, которыми была полна сталинская эпоха, учиться на физика ему не дали, а разрешили перевестись на механико-математический факультет того же университета. Там он стал специализироваться на кафедре вычислительной математики, руководимой академиком С.Л. Соболевым, а на последних курсах под влиянием А.А. Ляпунова увлекся программированием. Еще будучи студентом, в 1953 г., он поступил на работу в Институт точной механики и вычислительной техники — организацию, в которой складывался один из первых советских коллективов программистов.
Таков был его, не совсем добровольный, путь к программированию. Выбор области деятельности, сделанный А.П. Ершовым, оказался счастливым как для него, так и для программирования. Действительно, А.П. Ершов был многообразно талантлив, и не вызывает сомнения, что он достиг бы больших результатов и в какой-либо другой области деятельности, в частности в физике, которая первоначально была им выбрана. Однако именно в такой зарождающейся науке, как программирование, удивительно к месту пришлись такие грани его таланта, как умение нетрадиционно мыслить, находить ясные основы интуитивно складывающегося знания, видеть перспективные точки роста. Другая, более определившаяся научная дисциплина, наверное, дала бы ему меньшие возможности приложения своего интеллектуального потенциала — и в этом было счастье его выбора. Но, с другой стороны, и программирование в то время, как никакая другая научная дисциплина, нуждалось в ученых с характером первооткрывателей — подобных А.П. Ершову — для формирования из разнородной практики начального научного и методического фундамента. Деятельность Ершова, о которой пойдет речь дальше, оказалась очень созвучной этим нуждам программирования, так что выбор, сделанный им, — удача для программирования.
В 1954 г. А.П. Ершов закончил университет — это был первый в советских вузах массовый выпуск по специальности «программирование». С 1954 по 1957 г. он аспирант А.А. Ляпунова в Московском университете. Кандидатскую диссертацию, посвященную понятию операторного алгорифма, он подготовил к 1958 г., однако в связи с настороженным отношением математиков к новой науке защитить ее ему удается только в 1962 г. Докторская диссертация по методам построения трансляторов защищается им в 1968 г. В 1970 г. он становится членом-корреспондентом, а в 1984 г. — академиком АН СССР.
Такое быстрое продвижение связано с тем, что уже в конце 50-х гг. он становится одним из ведущих советских программистов — не только благодаря своим блестящим индивидуальным работам, но и как руководитель плодотворно работающих программистских коллективов. В 1957 г. он становится заведующим отделом автоматизации программирования во вновь созданном Вычислительном центре АН СССР. В связи с созданием Сибирского отделения АН СССР по просьбе директора Института математики СО АН СССР академика C.Л. Соболева он берет на себя обязанность организатора и фактического руководителя отдела программирования этого института.
В 1960 г. он становится и формальным главой этого отдела и окончательно переезжает в Сибирь. Сибирское отделение привлекало молодых активных ученых большими возможностями организации новых масштабных исследований, и Ершов был одним из тех молодых ученых, которые в конце 50-х и начале 60-х гг. вместе с академиками-основателями создавали институты нового научного центра в Академгородке. В дальнейшем отдел Ершова стал одной из основ созданного в 1964 г. Г.И. Марчуком Вычислительного центра СО АН СССР. Благодаря Ершову Академгородок становится одним из ведущих центров по программированию. Ершов создал известную новосибирскую школу системного и теоретического программирования, исследования которой складывались из работ его учеников и последователей в различных новосибирских институтах. Сам Ершов, будучи только заведующим отделом и отделением Вычислительного центра, стал идейным руководителем и неформальным главой большого и активно работающего содружества новосибирских программистов.
Велико влияние Ершова и на развитие программистской науки и практики в стране в целом. Это влияние далеко не ограничивалось тем, что он был главой одной из ведущих советских научных школ, или тем научным вкладом, о котором речь пойдет ниже. С конца 60-х гг. он становится в центре программистской жизни в СССР. Он был одним из основных организаторов первых национальных конференций по программированию, большого числа национальных конференций, семинаров и школ по различным проблемам системного и теоретического программирования, членом редколлегий основных советских программистских журналов, редактором (с момента его образования) журнала «Микропроцессорные средства и системы», председателем ряда национальных комиссий и рабочих групп. В 1987 г. он становится председателем Совета по кибернетике, который координирует все отечественные академические исследования по информатике и программированию.
Вообще, понимая, как важна научно-организационная работа в период становления новых научных направлений, А.П. Ершов уделял ей много внимания, и не только в национальном масштабе. Он активно участвовал в работе International Federation on Information Processing (IFIP) — был членом ряда комитетов и рабочих групп IFIP, активным участником ряда конгрессов, в том числе вице-председателем программного комитета IFIP-68, приглашенным докладчиком IFIP-71, организатором рабочих конференций IFIP. В 1980 г. за свою деятельность в IFIP он был награжден «Серебряным сердечником» (Silver Core). Он также состоял членом редколлегии таких международных изданий, как «Information Processing Letters», «Theoretical Computer Science» и др. Его международные творческие и дружеские связи были обширны. Он выступал с приглашенными докладами в большом числе организаций Европы, Японии и США. С 1965 г. он — член Association for Computing Machinery (АСМ), в 1974 г. стал почетным членом Британского Компьютерного общества. В последние годы жизни А.П. Ершов уделяет много внимания международной работе по информатике в образовании.
Для большого числа советских проектов и работ А.П. Ершов выступал как признанный авторитет и вдумчивый эксперт — они проектировались и выполнялись под его влиянием. Будучи внимательным и заботливым учителем, он уделял много времени подготовке программистских кадров. Среди его учеников — большое число кандидатов наук и несколько докторов наук в различных городах Советского Союза. Собственно преподавательскую работу он начал в 1958 г. — сначала в Московском, затем в Новосибирском университете, в котором он был профессором. В Новосибирском университете он был организатором и бессменным руководителем коллектива, ведущего подготовку студентов и аспирантов по системному и теоретическому программированию.
Огромная научная, организационная и педагогическая деятельность Ершова была признана в стране. Он был награжден несколькими орденами Советского Союза. В 1983 г. ему за теоретические работы по смешанным вычислениям была присуждена премия имени академика Крылова — главная премия Академии Наук СССР за фундаментальные работы по прикладной математике. За все время существования этой премии А.П. Ершов был единственным программистом, ее получившим. В 1985 г. за работы по методике создания больших программных систем он был награжден премией Совета Министров СССР — известной в Советском Союзе премией, присуждаемой за работы, имеющие большое прикладное значение.
А.П. Ершов — один из тех ведущих мировых ученых, благодаря деятельности которых выделились и оформились такие научные направления современного программирования, как теоретическое и системное программирование. Его творческое наследие обширно, оно включает более 200 книг, статей, препринтов, не считая большого числа предисловий, редакционных статей, отзывов и т.п., а также газетных публикаций, стихов (и хороших стихов!) и пр. Объем этой статьи не позволяет дать достаточно подробный обзор всех работ Ершова, и здесь мы ограничимся изложением основных идей и ведущих публикаций.
А.П. Ершов был одним из первых советских программистов, внесшим определяющий вклад в отечественное программирование, поэтому естественно, что становление и развитие его научных интересов в большей степени соответствует становлению и развитию как советского, так и мирового программирования.
Как и большинство программистов 50-х гг., А.П. Ершов начинал с создания алгоритмов численных методов и стандартных программ. Первая его работа [1] была посвящена разработанному им методу обращения матриц, относящемуся к классу методов пополнения. Хорошая алгоритмичность метода — компактность алгоритма, удобные рекуррентные соотношения — позволила этому методу быть основой для стандартных программ для ряда первых советских ЭВМ (для одной из них — БЭСМ — такая программа была разработана Ершовым).
Середина 50-х гг. была временем становления теоретического и системного программирования. Системное программирование начиналось с направления, названного тогда автоматизаций программирования и связанного с разработкой языков программирования и методов их трансляции. Начальный толчок этому направлению дали работы Рутисхаузера и Ляпунова. Первые советские языки программирования были связаны с операторными схемами, предложенными А.А. Ляпуновым. Эти схемы задавали структуру программы в терминах операторов некоторых фиксированных классов с последующим заданием представления этих операторов. А.П. Ершов был руководителем и создателем одних из первых советских программирующих программ для ЭВМ БЭСМ и «Стрела» (программирующими программами тогда назывались интегральные разработки языка и системы программирования). На основе данных работ им была написана первая в мировой литературе монография по автоматизации программирования [9], практически немедленно переведенная и изданная за рубежом, а также ряд работ 1956-1958 гг. В этих работах А.П. Ершовым был впервые предложен ряд понятий, подходов и методов, вошедших в классический багаж языков и систем программирования. Здесь и понятие цикла как фундаментальной конструкции языков программирования, и триадное внутреннее представление выражений, и метод функции расстановки для поиска совпадающих фрагментов (имен), и алгоритм оптимального распределения рабочих ячеек (регистров), и начальные идеи потокового анализа, и пр.
Дальнейшие работы А.П. Ершова по языкам и методам трансляции были одними из тех, которые создали фундамент этого направления. Под руководством А.П. Ершова и по его идейному проекту были созданы такие известные оптимизирующие системы программирования, как АЛЬФА, АЛЬФА-6, БЕТА, которые во многом определили современную методологию оптимизирующей трансляции.
Разработка системы АЛЬФА началась с создания языка — это было характерно для традиций программирующих программ. Язык этот отталкивается от первоначальной версии Алгола 60 — так называемого Алгола 58. Группа, руководимая Ершовым, вела разработку параллельно с международной группой, разрабатывающей Алгол 60. Во многом работы указанных групп оказались совпадающими, и поэтому после опубликования описания Алгола 60 новый, созданный группой Ершова язык был сформулирован как расширение Алгола 60 [19, 34]. Этот язык, носивший предварительные названия «Входной», «Сибирский», окончательно утвердился под названием Альфа-язык.
В Альфа-языке впервые введено понятие многомерных значений и определены операции над ними, в том числе операции конструирования. Все это вошло в стандартный багаж понятий современных языков, таких как ПЛ/1, Алгол 68, Ада. Впервые были введены и такие, естественные для современных языков концепции, как разнообразие циклов, задание начальных значений выражениями. Интересными, но, по существу, не повторенными свойствами языка были перечисления и верхние (временные) индексы. В своих метасредствах язык впервые выходил за пределы контекстно-свободных грамматик.
Система АЛЬФА [40] была первой в мировой практике оптимизирующей системой программирования для языков, более сложных, чем Фортран. Существовавший в то же время английский проект (Хоукинс и Хакстейбл) для Алгола 60, аналогичный АЛЬФА по функциональным возможностям, так и не был доведен до конца. Это важно отметить потому, что сама возможность существования трансляторов для языков, более сложных, чем Фортран, с приемлемой эффективностью объектных программ в то время многими оспаривалась. Система АЛЬФА стала конструктивным доказательством такой возможности, и это существенно, ибо снимало преграды на пути создания новых, семантически более богатых языков.
Работы по системе АЛЬФА внесли крупный вклад в методологию оптимизирующей трансляции. Была предложена и реализована многопроходная схема трансляции, ориентированная на оптимизацию, впервые введены в практику оптимизации программ оптимизирующие преобразования промежуточного представления программы, выделены и построены промежуточные представления программы, ориентированные на алгоритмы оптимизации.
Реализованные в системе АЛЬФА методы экономии памяти, разработанные Ершовым, представляют собой теоретический и практический фундамент последующих работ по экономии памяти. Ершовым было введено понятие информационного графа программы как модели, пригодной для определения такого преобразования, как глобальная экономия памяти, задача экономии памяти была сведена к известной задаче раскраски графа [30], вместе с Г.И. Кожухиным были заложены основы эвристического алгоритма близкой к оптимальной раскраски графа [28]. Основы полной теории экономии памяти были даны Ершовым в статье [90]. Эти труды определили не только работы по экономии памяти, но и другие исследования по оптимизации программ, в частности дали хороший пример построения практичных теоретических моделей для оптимизации программ.
Дальнейшие работы Ершова по оптимизирующей трансляции привели к появлению широко известной системы АЛЬФА-6 [98, 106]. Повторяя во многом систему АЛЬФА, система АЛЬФА-6 обладала более компактной схемой трансляции, концептуально более четко был выделен в схеме трансляции внутренний язык представления программы как основа для алгоритмов оптимизирующих преобразований. Схема оптимизирующей трансляции системы АЛЬФА-6 представляет собой хорошую основу для построения одноязыковых трансляторов с развитой оптимизацией программ, в том числе и глобальной.
В 1968 г. А.П. Ершовым была предложена идея машинно-ориентированного языка СИГМА, основанного на расширяемости и настраиваемости на объектный язык. Этот язык был разработан им совместно с А.Ф. Раром [67], а затем реализован для ряда отечественных ЭВМ Г.Г. Степановым [238]. Язык включал в себя механизмы формального описания объектного языка и параметров машинной архитектуры и был основан на макросах свободной структуры. Компактный набор базисных макросов определял в том числе списки и слова (машинные слова) слоговой структуры, что давало возможность строить эффективные в работе структуры данных. Механизмами расширения были макросы. Опыт применения языка показал хорошие возможности его настройки на различные, в том числе и весьма специфические, машинные архитектуры. Плодотворность идеи компактного и расширяемого ядра показывает теперешняя популярность такого языка, как Форт.
В 1971 г. Ершовым были опубликованы статьи [85, 86], которые положили начало работе по проекту БЕТА. Исследования по проекту БЕТА представляли собой многолетнюю (итоговая публикация появилась в 1982 г. [240]) методологическую и экспериментальную работу, связанную с осознанием фундаментальных основ трансляции и языков программирования. Сам подход к совместной реализации широкого класса языков программирования требовал выявления сущностей, определяющих эти основы.
Работы по проекту БЕТА складывались из исследовательской и экспериментальной работ (они осуществлялись в 70-х гг.) и собственно работы по созданию многоязыковой транслирующей системы (она заняла первую половину 80-х).
Семидесятые годы характерны тем, что именно в это время складывалась современная методология трансляции, проходило освоение и внедрение в практику программирования нового поколения алгоритмических языков высокого уровня: от ПЛ/1 до Паскаля. Позднее появившиеся в практике программирования языки, такие как Си, Ада, Модула-2, как по языковым свойствам, так и по реализации во многом продолжали линию указанных выше языков.
Исследования по проекту БЕТА шли в русле этих общих исследований и во многом повлияли на них. Насущной была проблема выработки типовой, общей для широкого класса языков схемы трансляции. Именно такая схема была предложена и реализована в системе БЕТА [133]. Важно заметить, что создаваемая на опыте языков 70-х гг., она оказалась практически пригодной и для языков 80-х: в системе БЕТА по общей схеме были реализованы как Симула-67 и Паскаль, так и Ада и Модула-2. В исследованиях проекта БЕТА была предложена и отрабатывалась идея метапроцессоров [118], автоматизированным образом создающих соответствующие фрагменты транслирующей схемы, что составляет основу современных систем построения трансляторов. Правда, в окончательной реализации метапроцессоры были сведены к общей библиотеке транслирующих процедур, что оказалось практически выгодным и также представляет перспективное направление автоматизации построения языковых процессоров. В работе [155] (совместно с В.В. Грушецким) существенно развивается понятие абстрактного синтаксиса, введенное Маккарти, что заложило основу широкого внедрения этого понятия в создание различных языковых процессоров и автоматизацию их построения.
Одной из центральных концепций схемы трансляции в проекте БЕТА является концепция внутреннего языка [116]. Исследования по внутреннему языку в проекте БЕТА составили заметную часть общемировых исследований, которые ввели понятие внутреннего языка, внутреннего представления программы как фундаментальное для методологии построения большого числа различных языковых процессоров — трансляторов, анализаторов свойств, систем преобразований программ и пр. В системе БЕТА внутренний язык выступает в трех качествах: как семантический базис входных языков, как основа для оптимизирующих преобразований на его уровне, как исходное представление для генерации объектного кода на различные ЭВМ. С этой функциональной нагруженностью внутреннего языка были связаны и трудности его разработки. Начальные подходы к внутреннему языку как минимальному набору ортогональных понятий были интересны в теоретическом и методологическом отношении, но практически оказались не совсем подходящими. Окончательная версия внутреннего языка была создана на основе подхода, указанного Ершовым в [85], как объединение абстракций общих понятий и конструкций входных языков с включением не полностью интерпретируемых конструкций, зависящих от конкретного входного языка. Анализ большого числа входных языков, выделение общностей и построение абстракций [131, 147] были важной и значительной работой, обогатившей понимание общей содержательной семантики существующих языков программирования.
Созданный на основе идей и подходов, предложенных Ершовым, внутренний язык системы БЕТА показал свою практическую пригодность для алгоритмов потокового анализа и оптимизирующих преобразований [119]. Внесение в этот язык машинно-ориентированных свойств сделало практичным генерацию с этого языка на весьма различающиеся машинные архитектуры — такие как БЭСМ-6 и СМ ЭВМ.
В некотором смысле из анализа общих понятий языков программирования и осознания их определенной ограниченности выросла предложенная Ершовым в статье [341] фундаментальная и многообещающая идея лексикона программирования как общей среды для разработки и обоснования программ. Он определяет лексикон как «лингвистическую систему с фразовой структурой, содержащую в себе формальную нотацию для выражения всех общезначимых конструкций, употребляемых при формулировании условий задач, при синтезе и преобразовании программ».
Лексикон, говорит Ершов, «выражает не только и не столько программы, сколько их свойства и наши суждения о них. Язык программирования кодирует объекты предметной области задачи, а наше знание об этих объектах остается за пределами программного текста. Лексикон же является средством описания объектов предметных областей и содержит нотацию для построения баз знания о предметных областях. Программа, выраженная средствами лексикона, в определенном смысле содержит в своем тексте описание своей семантики в виде совокупности нетривиальных фактов о вычисляемой ею функции — в отличие от «чистых» программ, которые не говорят ничего о своих функциональных свойствах.
Лексикон, в отличие от конкретного языка программирования, является открытой системой. Для него в целом не ставится задача трансляции любого его текста в машинную программу, хотя любая машинная программа в случае необходимости может быть выражена в лексиконе. Аналогично естественному языку лексикон обладает способностью описания одной своей части средствами другой своей же части.
Не надо думать, что лексикон — это все и навсегда. Это тщательно отобранная, но развивающаяся система удачных обозначений. Степень его успеха определяется степенью общезначимости и общепонятности его нотации».
На наш взгляд, идея лексикона является одной из основных, оставленных нам Ершовым. Она может служить источником создания научных и методических основ программирования на десятки лет вперед.
Идейно к работам по автоматизации программирования примыкают и работы А.П. Ершова по теоретическому программированию. Первой его работой в этой области стала статья об операторных алгоритмах [8]. В ней предлагалась модель программы, которая была одним из источников такой известной модели, как стандартные схемы. Понятие операторного алгоритма исходило из предложенного А.А. Ляпуновым понятия логической схемы программы и ставило целью создание точной модели, хорошо представляющей свойства реальных программ. В последующих работах [17, 29] Ершовым были уточнены понятие операторного алгоритма и его отношение к реальным программам, заданным логическими схемами, и исследована его связь с такими известными понятиями алгоритма, как частично-рекурсивные функции и нормальные алгоритмы Маркова. В этих же работах ставились содержательные задачи определения на модели программ преобразований, оптимизирующих программу, и построения по реальной программе ее модели. Все эти работы Ершова были одним из основных источников современной теории схем программ.
Первой моделью программы в современной теории схем программ стали схемы Янова, предложенные Ю.И. Яновым в опубликованной в 1958 г. статье. В 1968 г. Ершов публикует статью [65], в которой придает результатам Янова ту форму, которая и является для схем Янова принятой в современной теории схем программ. Здесь он использует для схем Янова графовое представление, уже примененное в работах Ершова по операторным алгоритмам. Переизложение в новой форме аксиоматики схем Янова позволило ввести большую формализацию и сделать эту аксиоматику более ясной. Именно на эту аксиоматику опираются дальнейшие исследования схем Янова, так как упрощение аксиоматики позволило исследовать более глубокие свойства преобразований схем Янова.
В 1968 г. Ершов публикует статью [64] об операторных схемах над общей и распределенной памятью. В этой статье вводится понятие информационного графа в том виде, в котором оно используется в теории схем программ и оптимизации программ сейчас, а также понятие схем над распределенной памятью. Оба понятия оказались важными как для самой теории, так и для ряда приложений, таких, как, например экономия памяти и распараллеливание программ. В [64] рассмотрены и решены проблемы взаимных преобразований схем над распределенной и общей памятью. Создание общей теории распределения памяти завершено работой [89].
Крайне интересной и методологически богатой была монография «Введение в теоретическое программирование: Беседы о методе» [153]. В ней подведен итог исследованиям Ершова и его учеников по теории и практике экономии памяти и по схемам Янова. Непреходящая ценность этой работы заключается в том, что в ней прослеживается связь между теорией и практикой программирования, ясно показывается, как на основе практических нужд возникают теоретические модели и как затем исследования этих моделей дают нужные для практики результаты. Монографий подобного характера в мировой литературе по программированию, к сожалению, крайне мало, и книга Ершова здесь является неоценимым примером, полезным как для практиков, так и для теоретиков, стимулирующим их совместную работу. В этой книге сказался характер Ершова как ученого, всегда объединявшего в своей деятельности теорию, методологию и практику программирования.
Очень важное значение для развития теории схем программ имела статья Ершова и Ляпунова о формализации понятия программы [53]. В ней сведены воедино и сопоставлены известные к тому времени в этой теории результаты. Существенно, что здесь были охвачены и работы по теории параллельных схем программ, начатые в Новосибирске под руководством Ершова. Теоретические результаты рассматривались и в их практическом приложении к автоматизации программирования и к оптимизации программ. Важной для дальнейшего исследования была постановка ряда новых задач, связанных как с развитием теории, так и с ее приложениями.
Подобное же значение на новом этапе имели работы Ершова о современном состоянии схем программ [89,105]. Помимо вовлечения новых по отношению к [53] работ и переосмысливания возникших за это время задач следует отметить два новых аспекта. Первый заключался в содержательном изложении требований к алгебре программирования как универсальному символизму, позволяющему манипулировать с процессами-алгоритмами. Второй был связан с демонстрацией взаимного влияния внутреннего языка и теоретических моделей программ. Работа [89] — текст приглашенного доклада на Конгресс IFIP в Любляне — была затем переиздана как одна из лучших работ 1971 г.
Все работы 1967-1973 гг. оказали стимулирующее влияние на развитие теоретического программирования. В них был очерчен круг проблем теории схем программ, сопоставлены различные направления и модели этой теории, выработана общая система понятий и связаны воедино разнообразные результаты и их применения, иначе говоря, создан фундамент теории схем программ как цельного направления теоретического программирования.
Если теория схем программ имела дело с таким исследуемым и моделируемым объектом, как программа, то в дальнейшей деятельности по теории программирования Ершов делает следующий шаг, заключающийся в том, что предметом исследований становится процесс работы над программой. Начало этому новому направлению было положено Ершовым в опубликованной им в 1977 году статье «О сущности трансляции» [156]. В данной и последующих статьях он сформулировал понятие смешанного вычисления как фундаментальный принцип системного программирования, определяющий в тех или иных аспектах функционирование процессоров обработки программ.
Смешанное вычисление представляет собой некоторый универсальный процесс, определяемый над парами (программа, данные) и приводящий в общем случае к получению остаточной программы и частичных результатов. Математическим аналогом смешанного вычисления является функционал, который для определенного класса функций с несколькими аргументами строит (при задании некоторых аргументов) функции с меньшим числом аргументов. Процесс смешанного вычисления может быть, в свою очередь, задан в виде программы (смешанного вычислителя), что позволяет ставить вопрос о самоприменимости смешанных вычислений, а сам смешанный вычислитель уподобить s-n-m — функции Клини.
Понятие смешанного вычисления (и смешанного вычислителя) в применении к процессорам обработки программ, для которых программы и их атрибуты есть данные, позволяет с общей точки зрения исследовать и определить различные виды обработки программ: от трансляции и интерпретации до анализа программ, их преобразования и генерации самих языковых процессоров. В ряде работ по смешанным вычислениям и трансформационному подходу Ершов методологически исследует эту концептуальную сторону смешанных вычислений.
Именно определение принципа смешанных вычислений как общей основы большого числа процессов работы над программами отличает работу Ершова от ряда предыдущих работ и догадок Ломбарди, Футамуры, Турчина и др. Это и стало причиной того, что работы Ершова легли в основу нового и активно развивающегося направления в программировании, связанного с теоретическими исследованиями и практическими приложениями смешанных вычислений. Применение смешанных вычислений оказалось весьма полезным методологически для понимания и трактовки различных понятий и сущностей программирования.
Понятие смешанных вычислений, введенное Ершовым как общая модель для различных видов обработки программ, с необходимостью потребовало широкого круга исследований как по свойствам самой модели, так и по ее трактовке в различных областях возможного применения. Именно такая широта свойственна работам, выполненным Ершовым вместе со своими учениками — В.Э. Иткиным, Б.Н. Островским, В.К. Сабельфельдом, М.А. Бульонковым [163, 177, 184, 211, 213, 253, 357, 376, 427]. Было введено понятие корректности смешанных вычислений и определены модели смешанных вычислений и получения остаточной программы, для которых можно было доказывать корректность. Одной из таких моделей, на которых фокусировалось внимание, стала трансформационная модель, для которой смешанное вычисление задавалось набором базовых трансформаций. Сама модель смешанных вычислений и их корректность рассматривались как для императивных языков, так и для рекурсивных программ. Был получен ряд важных результатов по определению механизма задержки (замораживания) вычислений и данных, по описанию процесса смешанных вычислений для различных языков представления программ, по формулированию набора базовых трансформаций, по надежности (незацикливанию) процесса смешанных вычислений и пр.
Для реальных приложений смешанных вычислений помимо, разумеется, необходимых свойств корректности и надежности важными оказываются их гибкость и глубина. И здесь Ершову и его ученикам удалось существенно продвинуться в исследованиях. Гибкость смешанных вычислений может быть заметно увеличена, если смешанный вычислитель будет при получении остаточной программы учитывать не только свойства данных иметь конкретное значение, но и более тонкие свойства, определяемые известными соотношениями между данными (предикаты над данными). В этом случае смешанный вычислитель оперирует с некоторой определенной на данных обстановкой. Глубина смешанных вычислений определяется схемой смешанных вычислений. Наряду со строгой схемой смешанных вычислений, введенной вначале, была определена поливариантная схема, связанная с продвижением смешанных вычислений в альтернативы, даже если выбор альтернатив не может быть определен при таком вычислении.
Совместно с Островским Ершов исследовал применение смешанных вычислений в такой традиционно важной области, как трансляция, а именно построение трансляторов для заданного описания входного языка. Существенно отметить, что здесь были получены не только результаты, демонстрирующие практическую применимость принципа смешанных вычислений (удавалось строить трансляторы существенно более эффективные, чем это достигается при обычном автоматическом построении), но и ряд фактов и наблюдений, важных для сопоставления методов трансляции и понимания сущности трансляции и показывающих методологическую важность принципа смешанных вычислений.
Таким образом, в области смешанных вычислений Ершову принадлежит не только определение основополагающих понятий и моделей, но и определяющий вклад в теорию и методологию этой области. Он по праву считается основателем и лидером этого направления, активно развиваемого сейчас в разных коллективах и странах.
Отталкиваясь от трансформационной модели смешанных вычислений и от своих работ в области трансляции и оптимизации программ, в [224] Ершов определяет концепцию трансформационной машины. Трансформационная машина есть абстрактное вычислительное устройство, выполняющее программы в некотором «сверхязыке», действиями которого являются трансформации пар (программа, данные). Действия эти поддерживают сохранение некоторого инварианта, что обеспечивает корректность трансформаций. Концепция трансформационной машины представляется весьма многообещающей — и как теоретическая модель для описания и обоснования процессов обработки программ, и как методологическая основа построения различных инструментальных процессов.
Концепция трансформационной машины является тем важным вкладом в трансформационный подход к построению программ, энтузиастом и пропагандистом которого был А.П. Ершов и различные аспекты которого исследуются в ряде его работ 80-х гг. Трансформационный подход развивается сейчас в ряде коллективов у нас и за рубежом и представляется весьма перспективным, так как он дает возможность получать программы с хорошими показателями таких качеств, как надежность и эффективность, а также повышает степень переиспользования программного обеспечения. Работы Ершова по трансформационному подходу [192, 224] дают естественную точку роста для последующих исследований.
Следует заметить, что наряду с работами по языкам и методам трансляции работы по смешанным вычислениям и трансформационному подходу были источником уже упоминавшейся идеи Ершова о лексиконе программирования.
Заключают работы Ершова по теории программирования его публикации [221, 235], посвященные понятию вычислимости. Сам он определяет эти работы как попытку синтеза взглядов на вычислимость, сложившихся как в математической логике, так и в теоретическом программировании. Так как понятие вычислимости является одним из главных как в той, так и в другой области и имеет фундаментальное значение для других программистских понятий, очевидно, что определение понятия вычислимости, абстрагированного от несущественных синтаксических или модельных понятий и вместе с тем вбирающего необходимые для теории и многочисленной практики сущности, является одной из главных задач, определяющих дальнейшее взаимовлияние математики и программирования. В фундаментальной работе [235] проводится глубокий анализ большого числа определений вычислимости, сложившихся в указанных областях, их сопоставление и оценка вклада в общую теорию. На основании данного анализа Ершов нащупывает идею определения вычислимости: свести определение вычислимой функции к понятию детерминанта, т.е. того, что является инвариантным к различным способам задания вычислений. По-видимому, эти работы Ершова будут иметь такое же стимулирующее значение для исследований в данной области, как и его работы начала 70-х гг. для теории схем программ.
Одной из важных заслуг Ершова перед отечественным и мировым программированием является то, что он умел оценить текущее состояние науки и практики и наметить те реальные точки роста и перспективы исследований, которые будут определять развитие программирования. Так, во второй половине 60-х гг. он одним из первых в стране осознал те новые возможности общения с ЭВМ, которые создают системы разделения времени. В 1966 г. он организует работы по автоматическим информационным станциям (проект АИСТ). Проект АИСТ, создателем и руководителем которого был А.П. Ершов, объединял широкий круг исследований по архитектуре вычислительных комплексов, их программному обеспечению и моделированию вычислительных систем. В рамках этого проекта была создана первая в стране развитая система разделения времени АИСТ-0, проект которой был предметом доклада на Конгрессе AFIPS 1967 г. [61], а итоговый доклад был сделан на 2-й Всесоюзной конференции по программированию в 1970 г. [80]. Реализованная на многомашинном комплексе из отечественных ЭВМ, эта система была во многом пионерской и внесла большой вклад в развитие отечественных работ по архитектуре ЭВМ и операционным системам, которые, к сожалению, были в дальнейшем заторможены ориентацией на копирование зарубежных разработок. Ряд таких свойств системы, как разделение в процессорах комплекса управления и обработки, иерархичность строения программного обеспечения, выделение ядра операционной системы, естественное сочетание различных режимов общения и обработки, обеспечили хорошую эффективность и гибкость системы.
Осмысливая опыт проекта АИСТ и других подобных работ у нас в стране и за рубежом в своем докладе на Конгрессе ИФИП-68 [72], Ершов выдвигает несколько насущных тезисов: о специализации процессов в многопроцессорном комплексе для разделения времени, об универсальных и специализированных системах разделения времени и областях их применимости, о различии требований профессионалов и непрофессионалов в программировании к общению с системами разделения времени и о том аспекте систем, который впоследствии будет назван дружественностью к пользователю.
Опыт руководства такими большими проектами, как АЛЬФА и АИСТ, и работы в этих проектах дали Ершову осознание общих проблем программирования и создания программного обеспечения. В 1973 г. В журнале «Кибернетика» появляется оказавшая большое влияние на развитие отечественных работ статья «Математическое обеспечение четвертого пколения» [100]. В этой работе проводился глубокий и развернутый анализ как внешних свойств машин четвертого поколения, так и различных видов программных систем: операционных систем, систем программирования и их входных языков, специализированных систем обработки информации, в том числе пакетов прикладных программ (в работе дается классификация ППП, сохраняющая свою ценность и в наше время). Выделен ряд характерных систем обработки информации и определены их внешние и внутренние свойства. Очерчена общая модель операционной системы — так называемая базовая операционная система с концентрическим строением. Отмеченная в работе общность в реализации языков программирования, создании процессоров диалоговых языков и систем отображения хотя и не вылилась, как предполагал автор, в создание универсальных систем, но стимулировала работы по нахождению общей методологии создания таких систем (впрочем, некоторая ограниченная в своей универсальности многоязыковая транслирующая система на данной общности была построена — это система БЕТА, о которой говорилось выше).
Существенным в этой работе было также то, что в ней поднимались технологические проблемы разработки программного обеспечения. Ершов был одним из первых в стране, кто поставил проблему создания технологии программирования. Надо сказать, что стремление Ершова провести аналогию между созданием программного обеспечения и промышленным производством, ввести дисциплину, организацию, инструментирование в такой казавшийся многим старым программистам нерегламентируемый творческий процесс, как программирование, встречало у многих наших коллег конца 60-х гг. активное сопротивление и даже резкий протест. То, что сейчас кажется тривиальным утверждением, Ершову приходилось отстаивать в жарких спорах и дискуссиях.
Ершов еще в 60-х гг. отстаивал точку зрения, что программирование, несмотря на интеллектуальность и творческий характер этого процесса, нуждается в организации и регламентации, наборе или системе соглашений и правил, не говоря уже об инструментальном обеспечении. Руководя и активно участвуя в больших программных проектах, Ершов с его пытливым умом не мог не задуматься над вопросом: «Как это делается?»Еще в работах по АЛЬФА и АИСТу он пишет о ряде организационных принципов и регламентирующих соглашений. Первой его работой, полностью посвященной технологии программирования, была статья «Технология разработки систем программирования» [95], она же была первой советской работой в этом возникшем в те годы новом направлении, и сам русский термин — технология программирования (software engineering) — был предложен Ершовым. В соответствии с названием большая часть работы была посвящена собственно технологии трансляции. В ней рассматривались общие вопросы проектирования трансляторов: их структуры, системы технических процедур и пр., вопросы выбора методов реализации, вопросы организации отладки и документирования. Отдельно рассматривались проблемы автоматизации построения трансляторов и автоматизированного построения документации. Важной стороной работы было то, что проблемы технологии трансляции рассматривались в общем контексте технологии создания больших программных систем. В [95] был приведен почти исчерпывающий обзор существовавших к тому времени работ по технологии программирования и примыкающим проблемам с их развернутым анализом. Все это сделало работу фундаментальной для последующих отечественных исследований в данном направлении.
В ряде других работ Ершов исследует и развивает идеи технологии программирования. Им была предложена матричная организация коллектива разработчиков [99], внесен вклад в спецификацию этапов разработки, в том числе применительно к разработке трансляторов, проведен анализ реальной разработки (АЛЬФА-6) с точки зрения ее технологичности [131]. В работе [175], написанной совместно с Г.Д. Чининым, определяется, как должен быть организован коллектив, ведущий разработку промышленных трансляторов, как должна решаться такая важная проблема, как преемственность и переиспользование разработанного программного обеспечения, как должен проходить и информационно обеспечиваться процесс разработки. Ориентированная на технологию трансляции, эта работа дает ряд хороших идей по технологиям промышленной разработки других видов программного обеспечения.
С общеметодологической точки зрения для развития технологий программирования, их обоснования и формирования концептуального фундамента крайне важной является работа 1984 г. «Научные основы доказательного программирования»[285], представляющая текст доклада Ершова на заседании Президиума Академии наук СССР. Для программистской общественности эта работа мне кажется не менее важной, чем для членов Президиума АН, которым сделан этот доклад.
Уже давно ведутся попытки построить процесс программирования как доказательный, при котором правильность программы обеспечиваема или проверяема на каждом этапе ее построения. Для реальных технологий программирования с их несомненным требованием обеспечения надежности (высокой степени правильности) программы эти попытки при их удачном продвижении имели бы неоценимое значение. Известен, например, подход Э.В. Дейкстры, который основан на идеальной тенденции строить программу как точный вывод из математической постановки задачи. Несмотря на свою идеальность и «навязываемость» жесткой дисциплины, этот подход является идейной основой (может быть, не до конца чисто реализуемой) ряда современных технологий. Однако подход Ершова, связанный с оценкой реального опыта программирования и дифференциацией различных его видов, — не навязывание дисциплины, а ее извлечение из практики — кажется и более практичным, и более широким.
Ершов выделяет и анализирует три вида программирования, обеспечивающих его доказательность: синтезирующее, сборочное и конкретизирующее. Синтезирующее программирование (одним из типов которого является то, которое осуществляется по методу Дейкстры) связано с автоматическим, автоматизируемым или ручным манипулированием знанием о задаче, области применения и общематематических способах доказательного рассуждения. Сборочное программирование осуществляет построение программы из уже существующих (проверенных на правильность) фрагментов. Конкретизирующее программирование основано на систематическом построении специализированных программ из универсальной заготовки (одним из способов такого программирования является применение смешанных вычислений). Ершов, с одной стороны, рассматривает специфику каждого вида и отмечает их различия, которые должны выражаться в различных технологических приемах и инструментах, с другой стороны, говорит о том, что при построении реального программного обеспечения эти виды могут и нередко должны комбинироваться. Все это дает основу для создания развитого методологического фундамента будущих технологий программирования.
Работа по доказательному программированию помимо ее значимости для технологии программирования примыкает, как и уже упоминавшаяся работа [99], к работам Ершова по общим проблемам программирования. Ряд таких работ Ершова в течение 70-80-х гг. четко анализировали и оценивали текущую ситуацию у нас и в мире, ясно формулировали проблемы и возможные пути их решения.
Многое говорят сами названия статей: «Вычислительные центры коллективного пользования» [137], «Система программирования для мини — и микроЭВМ» [160], «Некоторые субъективные замечания к актуальным проблемам программирования» [183], «Комплексное развитие системного программного обеспечения — постановка проблемы» [269], «Персональная ЭВМ — предок млекопитающих в динозавровом мире ВЦКП» [271], «Опыт интегрального подхода к актуальной проблематике программного обеспечения» [290]. Обращенные к профессионалам, но доступные и непрофессионалам, написанные ясным языком, обладающие продуманной, хорошо организованной структурой и четким изложением идей и суждений, эти работы оказывали большое влияние на читателей программистов, служили делу осмысления текущей ситуации, переоценки ценностей, становлению новых идей и направлений.
Статья [137] обобщает опыт разработки архитектур и программного обеспечения больших систем обработки информации и вовлекает в отечественный опыт превалировавшую тогда линию ЕС ЭВМ. Работа [160] оценивает с точки зрения применения средств вычислительной техники новый тогда феномен — появление мини — и микроЭВМ, прогнозирует те неограниченные возможности, которые они создают, выделяет те новые черты, которые характерны для программного обеспечения микроЭВМ: интегральность подхода к совместному проектированию оборудования и софтвера, специализированность программного обеспечения (ПО), его ориентация на использование непрофессионалами в программировании. Здесь же делается оправдавшийся впоследствии вывод о крайней важности для ПО этих ЭВМ проблем переноса и совместимости, а также намечаются возможные пути решения этих проблем. В [183] справедливо отрицается выдвигавшийся некоторыми специалистами тезис о стабилизации положения в программировании и излагаются активные точки роста — новые концепции в языках программирования, кристаллизация и фундаментализация понятий трансляции, переход от баз данных к базам знаний (в работе они называются «сложными» базами данных), появление инструментальных комплексов (что впоследствии с легкой руки «адистов» стало называться «окружением программирования»). Надо сказать, что прогноз Ершова полностью оправдался. Здесь же оценивается состояние теории программирования и ее соотношения с практикой, что весьма существенно для определения путей развития теории. Много в работе говорится об обучении программированию, о подготовке кадров — но об этой ее стороне скажем позднее.
Если ряд предыдущих работ, существенно повлияв на развитие программирования до настоящего времени, сыграл свою роль, то работы 1983-84 г. продолжают оставаться актуальными. Богатство содержания и лапидарность изложения не дают возможности мне сколько-нибудь представительно пересказать их основные идеи и суждения — это потребовало бы, наверное, вдвое большего объема обзора, чем тот, который перед читателем. Стержневой и объединяющей идеей здесь является необходимость создания развитой инфосферы будущего информатизированного общества. В работах оценивается состав и спецификация оборудования, нужные СССР для создания такой инфосферы, определяются черты различных систем ПО для нее, намечается большой спектр научных проблем, от решения которых зависит ее создание. В работах отмечаются те черты вычислительных средств — микропроцессоров и персональных ЭВМ (именно ПЭВМ, а не ВЦКП), которые способствуют созданию такой инфосферы. Очень важен пропагандируемый здесь тезис, что «ПЭВМ — это не просто маленькая большая машина, а технический феномен, требующий свежего, непредвзятого и в то же время глобального подхода к созданию методов и приемов работы с ним».
Важно отметить, что развитие программирования требует не только новых идей, но и глубокого осмысления уже накопленного багажа и самой эволюции программирования, определенной периодизации развития, связанной прежде всего со сменой поколений ЭВМ. В [290] об этом говорится, но помимо этого Ершовым был выполнен ряд научно-исторических работ по изучению становления и развития программирования и информатики в СССР [135, 140, 143, 144, 191] (некоторые из них написаны совместно с М.Р. Шурой-Бурой).
Становление новой научной дисциплины невозможно без осознания ее специфики в ряду других научных дисциплин. Тем более это важно для программирования, которое за сравнительно короткое время стало одной из самых массовых интеллектуальных профессий. Громадной заслугой Ершова перед отечественным и мировым программированием является то, что в своих работах он выявил и прояснил ряд существенных черт, свойственных программированию как науке и человеческой деятельности.
Замечания и суждения Ершова по этому поводу разбросаны во многих его работах, но есть несколько широко известных его статей, многократно переведенных и изданных, которые целиком посвящены не научным или техническим проблемам программирования, а чисто, если можно так выразиться, профессиологическим аспектам — что есть программирование как наука и деятельность, что есть программист как специалист специфического интеллектуального труда. Это такие работы, как «О человеческом и эстетическом факторах в программировании» [91], «Программирование — вторая грамотность» [220], «Два облика программирования» [236]. В работе [91], посвященной памяти рано умершего талантливого программиста Г.И. Кожухина, содержится конструктивный анализ противоречий, возникающих между творческой природой программистского труда и необходимой для любых массовых профессий производственной его организацией. Главный тезис статьи: «Программирование обладает богатой, глубокой и своеобразной эстетикой, которая лежит в основе внутреннего отношения программиста к своей профессии, являясь источником интеллектуальной силы, ярких переживаний и глубокого удовлетворения. Корни этой эстетики лежат в творческой природе программирования, его трудности и общественной значимости». Статья полна глубоких суждений и замечаний, поясняющих этот тезис. В статье отмечается элитарность программистов и в то же время говорится о необходимости сделать искусство программирования общим достоянием.
Продолжает и развивает эту идею статья [220]. Само название ее, ставшее популярной метафорой, употребляемой везде, в том числе и с довольно высоких трибун, без ссылки на автора, подчеркивает историческую аналогию между грамотностью, ставшей в цивилизованном обществе достоянием каждого, и умением программировать (в широком смысле), которое должно быть присуще каждому члену информатизированного общества. Ершов отмечает, что программирование необходимо современному человеку не только в силу того, что ЭВМ в ближайшем будущем пронижет все стороны жизни, но и потому, что современная жизнь требует повседневного планирования и предвидения. Он говорит: «Вторая грамотность — это не только умение писать команды, но и воспитание человека, решительного и предусмотрительного вместе». Программирование, заключает Ершов, является существенной компонентой современного обучения и воспитания.
В работе [236] Ершов четко формулирует интуитивно осознававшееся положение о том, что нельзя программирование рассматривать единообразно. Он разделяет программирование на два вида: программирование для себя и программирование для заказчика и точно описывает коренные различия этих видов, обликов программирования. Соответственно он вводит термины «программист-слуга» и «программист-хозяин» и показывает, как глубоко различаются их манеры, стили и даже критерии. Такая конструктивная дифференциация программирования крайне важна при создании реальных технологий программирования, да и для ряда более общих вещей, выражающихся даже в этике и эстетике программирования. В чисто научном плане эта работа содержит модель программной обстановки для программиста-хозяина, основанную на уже упоминавшейся трансформационной машине.
Написанные с присущим Ершову литературным талантом, несущие на себе хорошо видный отпечаток интеллектуальной силы, внутренней убежденности, активной позиции автора, эти статьи становились ярким событием программистской жизни. Хочется отметить тот аспект этих статей, который заключается в их влиянии на программистскую этику; проблемы же этики, с учетом того общественного и государственного значения, которое имеют сейчас продукты программистской деятельности и тем более которое они будут иметь в будущем, кажутся очень важными.
В ряде уже упоминавшихся работ Ершов уделял внимание проблемам обучения программированию. Впервые свою развернутую точку зрения по этим проблемам он изложил в заметке [47] (текст его выступления на Международной конференции по надежности программного обеспечения, 1975 г.) В этой работе он предложил план подготовки системных программистов в вузах, которая сочетала бы фундаментальную подготовку, глубокое изучение профессиональных курсов и реальное участие в программистских проектах. В уже упоминавшейся статье [183] рассматривается организация курса основ программирования как стержня образования системных программистов. Курс этот предполагает последовательность изложения содержательных — математических — языковых — технологических — системно-организационных основ программирования, что является наиболее продуманной организацией такого курса. Заметим, что все это было прямо основано на реальной деятельности Ершова — он был профессором Новосибирского университета, ставил и читал первые годы общий курс программирования на механико-математическом факультете этого университета, руководил организацией обучения специалистов по системному и теоретическому программированию на мехмате НГУ.
В дальнейшем Ершова привлекло обучение программированию и, более широко, информатике в школе. Поняв принципиальную важность обучения информатике для страны и человечества, Ершов отдал этому делу в последний десяток лет и большую долю своей энергии, и то, что называют жаром души. Ершов был одним из создателей так называемой школьной информатики, признанным лидером советской школьной информатики и одним из ведущих мировых специалистов в ней. В написанной вместе с Г.А. Звенигородским и Ю.А. Первиным работе «Школьная информатика. Концепции, состояние, перспективы» [193] он определил развитие этого направления вплоть до наших дней. Ершов был одним из авторов и редакторов первого школьного курса информатики, а также методического пособия к этому курсу. Незадолго до его смерти появился новый учебник по информатике [431, 432], одним из авторов и редактором которого он являлся. Он создавал телевизионный курс по этому предмету, руководил созданием школьных систем программирования и школьного программного обеспечения вообще, вел большую организационную и экспертную работу и т.п. Здесь, как и во многом другом, проявилась его активная жизненная позиция, высокое чувство гражданской и общечеловеческой ответственности. Преодолевая множество помех и затруднений, часто мелочных и изматывающих, ведя пропагандистскую, воспитательную, организаторскую работу, выступая в самых неожиданных, но требуемых обстоятельствами амплуа, Ершов посвятил становлению школьной информатики много своих сил и времени.
Необходимо отметить, что для работ Ершова по школьной информатике характерна серьезная научная обоснованность предлагаемых решений, их связь с глубоко понимаемой сущностью информатики. В работах [220, 330] Ершов обосновывает строение курса исходя из ряда принципов: разделения и сочетания «теоретического» и «операционного» умения, антропоцентрического подхода (отождествление учащимися себя с исполнителем алгоритмов), апелляции к повседневному опыту и т.д. Он подчеркивает важность отдельного осознания понятия алгоритма и существования системы обозначений для выражения алгоритмов (алгоритмического языка), дает схему алгоритмизации и решения задач, естественную для начального обучения. В одной из своих последних работ [455] Ершов дает обстоятельный анализ состояния дела в СССР с компьютеризацией школьного образования и преподаванием информатики в школе и, что важно, рассматривает проблемы школьной информатики в широком контексте информатизации общества и связывает их с проблемами математического образования. Незадолго до смерти им была подготовлена рукопись рабочего варианта концепции информатизации народного образования, которая была издана в 1990 г. [456]. Делом его последних лет, которому Ершов отдал много сил и внимания, было создание школьной энциклопедии по информатике.
Заметной линией работ Ершова являются работы, посвященные общению с ЭВМ на естественном языке. Начальным подходом к конструктивизации этих проблем была работа «Об одном виде контакта человека с машиной» [32]. Впервые в отечественной и, по-видимому, мировой литературе Ершов попытался сформулировать ряд точно поставленных задач реализации такого общения. Размышления по этому поводу, объединенные с исследованиями лингвистов (И.А. Мельчук) и системных программистов (А.С. Нариньяни), привели к появлению проекта РИТА, опубликованного в [132]. Проект РИТА в таком виде, как описывался, не был реализован, но можно четко проследить, как ряд существенных идей этого проекта перешел во впоследствии реализованные лингвистические процессоры и системы искусственного интеллекта: выделение промежуточного уровня семантического представления, соотношение лингвистических и программных составляющих диалоговой системы, наличие интерфейсных блоков для других (классических) программных систем, множественность значений интерпретирующих функций (что позже А.С. Нариньяни было обобщено в понятии недоопределенных множеств) и т.д.
В последующем Ершов проводит дальнейшую конструктивизацию проблем общения на естественном языке, выделяя из естественного языка очень важное подмножество языка деловой прозы. В работе [182] он дает общее определение деловой прозе как языковому носителю производственных отношений человека и отмечает, что она фактически выделяется в особую лингвистическую категорию. Ряд свойств деловой прозы — внутренняя формализованность, четкость функций сообщения — говорит об актуальности не только необходимости, но и возможности научить машину полностью (Ершов это подчеркивает) понимать и воспринимать этот язык. Далее Ершов рассматривает некоторые существенные черты глобальной модели полного восприятия языка применительно к деловой прозе.
Здесь в своих исследованиях и рассуждениях Ершов выходит за пределы собственно программирования и формулирует фундаментальную проблему создания машинного фонда русского языка. Отмечая связь этой проблемы с решением задачи общения с ЭВМ на естественном языке, он подчеркивает очень важную научную, общекультурную и прикладную значимость этой проблемы. К уточнению внешней постановки этой проблемы он возвращается в работах [320, 386] — после того, как эта задача была осмыслена и подхвачена лингвистами. Интересно отметить, что пионерство Ершова в постановке такой проблемы подчеркивается и чисто внешне тем, что цитаты из статьи [182] вынесены как элементы оформления на обложку сборника статей по этому вопросу.
Это — только один из примеров пионерских работ Ершова в новых областях программирования и, более широко, применения ЭВМ. Много таких примеров уже приводилось. Список их, однако, может быть продолжен.
Один из первых подходов к созданию интеллектуальных систем был представлен в работе [52], написанной совместно с Г.И. Марчуком (доклад на конгрессе IFIP 1965 г.). Становлению проблематики пакетов прикладных программ в отечественном программировании способствовала совместная с В.П. Ильиным работа [170] «Пакеты программ — технология решения прикладных задач». Важное значение для отечественных работ в таком новом направлении, как бюротика, имеет работа «Автоматизация работы служащих» [281].
Публикации Ершова в профессиональных изданиях далеко не исчерпывают его творческого наследия. Статьи в газетах и журналах, обращенные к широкому кругу читателей, редакционные предисловия к многочисленным монографиям и сборникам работ по программированию и информатике — все это написано с литературным блеском, четкостью формулировок, великолепной манерой изложения — полны ценных идей, суждений, оценок, интересных и профессионалам, и тем, чья область деятельности только соприкасается с информатикой, и тем, кто достаточно далек от нее.
Очень хорошим примером являются его колонки редактора в журнале «Микропроцессорные средства и системы»- достаточно перечислить лишь некоторые названия этих редакторских обращений: «Как учить программированию», «Об информационной модели машины», «Об объектно-ориентированном взаимодействии с ЭВМ», «Школьный компьютер — вызов промышленности», «Вызов программистам», «Обработка информации: от данных к знаниям», «Школьная информатика — второй звонок», «Академик А.И.Берг о кибернетике и перестройке в 1959 году», «Как перестроиться программистам», «Модем для ПЭВМ — недорогой и надежный», «Персональные ЭВМ: как сделать их полезными», «Союз информатики и вычислительной техники — на службу обществу». Сам Ершов придавал этому диалогу с читателем (а все эти обращения возбуждали активный отклик) большое значение, и не зря! Редакционная колонка, которую вел Ершов, придавала журналу неповторимое своеобразие доверительного разговора и приглашения к дискуссии.
Ершов был инициатором и идейным руководителем и ряда других проектов — таких, как система программирования СЕТЛ для языка сверхвысокого уровня (языка спецификаций), профессиональная рабочая станция МРАМОР или школьная система программирования ШКОЛЬНИЦА. Хотя Ершов не был разработчиком в таких проектах и не участвовал в публикациях по ним, эти проекты питались его идеями и обсуждениями с ним.
Научные направления деятельности Ершова многообразны. В принципе это свойственно многим программистам 50-х и начала 60-х гг. — можно привести немало примеров советских и зарубежных программистов, которые имеют хорошие результаты в трех — четырех различающихся научных направлениях. Такой характер деятельности естествен для ученых, стоящих у истоков новой научной дисциплины (и, к сожалению, мало доступен тем, кто вступает в уже сложившуюся, с большим спектром оформившихся направлений науку). Но даже и на фоне первых программистов Ершов выделяется поистине «ломоносовской» широтой своих интересов и результатов.
Творческое наследие академика А.П. Ершова, одного из выдающихся ученых в области информатики, внесло определяющий вклад в становление и современное состояние мирового программирования. Оно содержит как подходы и методы, прочно вошедшие в теорию, методологию и практику современного программирования и овеществленные в них, так и ряд идей и концепций, дающих основу для будущих исследований.
И.В. Поттосин
Шпаргалка по Fenom | BUSTEP.RU
Описание по подключению плейсхолдеров на страницу
информация с официальной документации pdotools
MODX | Fenom | Описание |
---|---|---|
[[+pagetitle]] | {$pagetitle} | Заголовок |
[[*pagetitle]] | {$modx->resource->pagetitle} | Заголовок |
[[%lexicon]] | {$modx->lexicon(‘lexicon’)} | вывод словарей |
[[~[[+id]]]] | {$modx->makeUrl($id)} | укл на страницу |
[[++site_url]] | {$modx->config.site_url} | настройки modx |
[[$chunkName]] | {$pdoTools->getChunk(‘chunkName’)} или {include ‘chunkName’} | чанк |
[[!snippetName]] | {$modx->runSnippet(«pdoResources», [‘parents’ => 0])} | сниппет |
[[*id:is=`1`:then=``:else=``]] | {if $id = 1}{else}{/if} | if else |
[[+pagetitle:modificator]] | {$pagetitle | modificator} | модификатор |
[[+pagetitle:modificator]] | {$_modx->placeholders} | массив с системными плейсхолдерами |
Другие параметры
Fenom | Описание |
---|---|
{$_modx->placeholders} | массив с системными плейсхолдерами |
{$_modx->config} | массив с системными настройками |
{$_modx->context} | массив (не объект!) с текущим контекстом |
{$_modx->user} | массив (не объект!) с текущим пользователем |
{$_modx->resource} | массив (не объект!) с текущим ресурсом |
{$_modx->lexicon} | служба загрузки лексиконов |
{$_modx->lexicon()} | функция для вывода строки из лексикона |
{$_modx->runSnippet()} | запуск сниппета |
{$_modx->runProcessor()} | запуск процессора |
{$_modx->getChunk()} | вывод чанка |
{$_modx->runSnippet(‘!pdoResources’)} | не кэшируемый |
{$. get.test} | GET |
{$.post.test} | POST |
{$date|date:»Y»} | текущий год |
{55|url} | Ссылка на документ |
Модификаторы MODX FENOM
Fenom | Описание |
---|---|
{$date| date: «Y»} | текущий год |
{55| url} | Ссылка на ресурс |
Подключение наборов параметров
Fenom | Описание |
---|---|
{$_modx->getChunk(‘Name@PropertySet’)} | для чанка |
{include ‘Name@PropertySet’} | |
{$_modx->runSnippet(‘NameName@PropertySet’)} | для сниппетов |
{include ‘template:TemplateName@PropertySet’} |
Подключение шаблона
Fenom | Описание |
---|---|
{include ‘template:имя шаблона’} | подключение шаблока |
{include ‘имя чанка’} | подключение чанка |
{include ‘имя чанка’} | подключение чанка |
{block ‘content’}контект{/block} | расcтановка блоков |
{extends ‘file:templates/base.tpl’} | наследование шаблона |
Примеры работы
// загрукзка ресурсов
{$_modx->runSnippet('pdoResources', [
'parents' => 19,
'depth' => 0,
'where' => ['isfolder' => 0],
'showLog' => 1,
])}
// загрукзка меню
{$_modx->runSnippet('pdoMenu', [
'parents' => 0,
'level' => 2
])}
<p>
{$_modx->lexicon->load('ms2gallery:default')}
Проверка словарей ms2Gallery: {$_modx->lexicon('ms2gallery_err_gallery_exists')}
</p>
<p>
{if $_modx->isAuthenticated('web')}
Привет, {$_modx->user.fullname}!
{else}
Вам нужно авторизоваться =(
{/if}
</p>
<p>Текущий контекст: {$_modx->context. key}</p>
Создание значения из переменной с добавление префикса
{set $lexicon = "ms2_product_{$field}"}
{('ms2_product_' ~ $name) | lexicon}
Тег foreach
предоставляет простой способ перебора массивов.
Foreach
работает только с массивами, объектами и интервалами.
{foreach $list [as [$key =>] $value] [index=$index] [first=$first] [last=$last]}
{* ...code... *}
{break}
{* ...code... *}
{continue}
{* ...code... *}
{foreachelse}
{* ...code... *}
{/foreach}
{foreach}
Перебор значений массива $list:
{foreach $list as $value}
<div>{$value}</div>
{/foreach}
{foreach 1..7 as $value} {* так же хорошо работает и с интервалами *}
<div>№{$value}</div>
{/foreach}
Перебор ключей и значений массива $list:
{foreach $list as $key => $value}
<div>{$key}: {$value}</div>
{/foreach}
Получение номера (индекса) итерации, начиная с 0
{foreach $list as $value}
<div>№{$value@index}: {$value}</div>
{/foreach}
или
{foreach $list as $value index=$index}
<div>№{$index}: {$value}</div>
{/foreach}
Определение первой итерации:
{foreach $list as $value}
<div>{if $value@first} first item {/if} {$value}</div>
{/foreach}
или
{foreach $list as $value first=$first}
<div>{if $first} first item {/if} {$value}</div>
{/foreach}
Переменная $value@first
будет иметь значение TRUE, если текущая итерация является первой.
Определение последней интерации:
{foreach $list as $value}
<div>{if $value@last} last item {/if} {$value}</div>
{/foreach}
или
{foreach $list as $value last=$last}
<div>{if $last} last item {/if} {$value}</div>
{/foreach}
Переменная $value:last
будет иметь значение TRUE, если текущая итерация является последней.
Замечание:
Использование last
требует от $list
быть countable.
{break}
Тег {break}
используется для выхода из цикла до достижения последней итерации.
Если в цикле встречается тег {break}
, цикл завершает свою работу, и далее, выполняется код, следующий сразу за блоком цикла
{continue}
Тег {continue}
используется для прерывания текущей итерации.
Если в цикле встречается тег {continue}
, часть цикла, следующая после тега, не выполняется, и начинается следующая итерация.
Если текущая итерация была последней, цикл завершается.
{foreachelse}
Тег {foreachelse} ограничивает код, который должен быть выполнен, если итерируемый объект пуст.
{var $list = []}
{foreach $list as $value}
<div>{if $last} last item {/if} {$value}</div>
{foreachelse}
<div>empty</div>
{/foreach}
В блоке {foreachelse}...{/foreach}
использование {break}
, {continue}
выбросит исключение Fenom\CompileException
при компиляции
08 февраля 2019, 09:10 19471
О лексиконе: Лексикон кодеров
The Coders Lexicon, основанный в 2012 году, представляет собой веб-сайт, посвященный развитию компьютерного программирования и разработке программного обеспечения. Его главная цель — предоставить программистам жизнеспособные решения с помощью краткого, простого в использовании и хорошо документированного кода, который служит лексиконом современного программиста. Программисты — люди занятые. Они не хотят просеивать горы информации, чтобы найти ответ, или сидеть на доске, слушая, как дюжина людей спорят о преимуществах использования C ++ и Java.Итак, являетесь ли вы старым специалистом в Java / C ++ / .NET или новым студентом, начинающим информатику, вы обязательно найдете здесь какое-то решение, которое может спасти положение.
Миссия
The Coders Lexicon преследует прямую миссию… предоставлять простейшие советы, факты и простые в использовании фрагменты кода для программистов любого уровня подготовки. В дополнение к этому предоставьте место, где программисты могут учиться и расти. Мы достигнем этой цели за счет использования хороших соглашений об именах, простого документирования кода, объяснений стиля обучения, адекватного тестирования и модульной ориентации.Только тогда мы сможем гарантировать, что предоставим всем программистам надежные и своевременные решения.
Основатель, мученик2
Martyr2 — ветеран-программист более 22 лет из Ванкувера, Канада. Он работает в популярной компании по разработке программного обеспечения, у которой есть продукты для некоторых из крупнейших мировых телекоммуникационных компаний, а также на миллионы настольных компьютеров и мобильных устройств; включая iOS и Android. Он также работал в различных компаниях, разрабатывающих программное обеспечение в сфере образования, путешествий и розничной торговли.
Последние 13 с лишним лет он проводил время на Dream.In.Code, очень популярном форуме по программированию, где он достиг звания наставника и основал свой блог под названием Programming Underground. Помогая тысячам программистов на протяжении многих лет, Martyr2 решил, что должно быть место, где хороший код мог бы собираться и быть найден теми, кто новые и старые в отрасли… справочная библиотека, если хотите. Тогда этот ресурс будет содержать вещи, которые можно быстро найти, легко реализовать и просто понять.Лексикон кодеров является этим ресурсом.
language agnostic — Словарь программистов / лексика для не носителей языка
Другие не англичане здесь:
Как вам удалось с этим справиться?
Хороший нейминг в вопросах кода. Использование английского языка является предпочтительным, но если вы не очень хорошо владеете английским, результат может быть контрпродуктивным.
У меня был друг, который просто догадался, какое имя будет правильным, и результат был ужасен.т.е.
String EmployiiNeim; // Имя сотрудника
int eich; // возраст
Проблема с английским языком заключается в том, что он не произносится так, как написано (у французского есть эта незначительная характеристика … эээ). В других языках, таких как испанский, немецкий, голландский и другие, все буквы в слове печатаются и произносятся.
Это становится особенно актуальным, когда вы кодируете бизнес-правила или бизнес-модели. В этом случае лучше использовать свой родной язык.
String nombreEmpleado;
int edad;
Намного лучше, особенно когда вы работаете с другими.
Вы так хорошо выучили английский, что это не проблема?
Ага, другого выхода нет, а практики много.
Вы можете изучать английский так же, как изучаете языки программирования. У вас может быть учитель, вы можете посещать классную комнату и заниматься по часу в день. Или (как я) вы можете просто взять что-то, что вам интересно, и попытаться понять это.Например, у вас есть небольшой документ с описанием того, что вам небезразлично, вы читаете блоги или читаете контент здесь, в StackOverflow, вы переводите понравившуюся песню и т. Д. И т. Д.
Все это формы для учебы. Другого пути нет, ты не проснешься однажды и не скажешь: «… Я знаю кунг-фу» Я имею в виду, и скажи: … «Я знаю английский»
Или вы читали так много кода, именование становится естественным?
Также помогает, но если вы не понимаете, что означает код, вы… ну не будет никакого прогресса.
Вы выучите язык программирования, и это поможет вам немного лучше понимать английский, но не поможет вам выучить его. Это потому, что, когда мы программируем, мы изучаем язык программирования , а не родной язык.
Или много обсуждали с англоговорящими?
Ээээ … нет. Если у вас есть такая возможность, продолжайте, это улучшит ваше восприятие речи и слушание, но не обязательно ваше письмо.
Самый эффективный способ улучшить свой словарный запас и грамматику английского языка — это ЧТЕНИЕ (чтение на родном языке также улучшает ваш родной язык, кстати)
Итак, я бы сказал, читайте как можно больше. Говорите на своем родном языке, приобретая больше уверенности и продолжайте учиться.
Англичане придут со временем.
Глоссарий терминологии программирования | Кодирование Dojo
Присоединяйтесь к нашему следующему виртуальному открытому дому
Интересующий университетский городок
Белвью, Вашингтон, Кремниевая долина, Калифорния, Арлингтон, Вашингтон, Чикаго, Иллинойс, Даллас, Техас, Лос-Анджелес, Катулса, Окленд, Окленд, Кабуаз, округ Айда-Орандж, CAOnline
Дата посещения
22 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
24 марта 2021 г.
(12: 00–13: 00 по тихоокеанскому стандартному времени)
29 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
22 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
24 марта 2021 г.
(12: 00–13: 00 по тихоокеанскому стандартному времени)
29 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
22 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
24 марта 2021 г.
(12: 00–13: 00 по тихоокеанскому стандартному времени)
29 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
22 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
24 марта 2021 г.
(12: 00–13: 00 по тихоокеанскому стандартному времени)
29 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
22 марта 2021 г.
(18: 00-19: 00 CST)
24 марта 2021 г.
(14: 00–15: 00 CST)
29 марта 2021 г.
(18: 00-19: 00 CST)
22 марта 2021 г.
(18: 00-19: 00 CST)
24 марта 2021 г.
(14: 00–15: 00 CST)
29 марта 2021 г.
(18: 00-19: 00 CST)
22 марта 2021 г.
(С 19:00 до 20:00 по восточному стандартному времени)
24 марта 2021 г.
(15: 00–16: 00 EST)
29 марта 2021 г.
(С 19:00 до 20:00 по восточному стандартному времени)
22 марта 2021 г.
(18: 00-19: 00 CST)
24 марта 2021 г.
(14: 00–15: 00 CST)
29 марта 2021 г.
(18: 00-19: 00 CST)
22 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
24 марта 2021 г.
(12: 00–13: 00 по тихоокеанскому стандартному времени)
29 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
22 марта 2021 г.
(17: 00–18: 00 MST)
24 марта 2021 г.
(13: 00–14: 00 MST)
29 марта 2021 г.
(17: 00–18: 00 MST)
22 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
24 марта 2021 г.
(12: 00–13: 00 по тихоокеанскому стандартному времени)
29 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
22 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
24 марта 2021 г.
(12: 00–13: 00 по тихоокеанскому стандартному времени)
29 марта 2021 г.
(С 16:00 до 17:00 по тихоокеанскому стандартному времени)
Отправляя эту форму, вы соглашаетесь получать допуски и маркетинговые сообщения по электронной почте или в автоматическом режиме, а также соглашаетесь с нашей Политикой конфиденциальности и Условиями использования сайта.
842 зарегистрированных за последние 7 дней
47 Термины, которые следует знать при работе с разработчиком
Мы все были там: вы разговариваете с разработчиком своего веб-сайта, все идет гладко, а затем они отказываются от таких терминов, как «301 редирект» или «CSS. ” Записывать. Царапать. После доли секунды Scooby Face вы улыбаетесь и киваете. Разговор заканчивается, и вы думаете: Какого черта они только что сказали ?! Скорее всего, если вы погуглите, вы получите много технических разговоров, которые также могут быть голосом учителя от Чарли Брауна.
Не бойтесь: мы собрали некоторые из наиболее часто используемых слов, сокращений и фраз, которые возникают при работе с разработчиком, вместе с нашими определениями для них. Человеческие определения. Вот глоссарий разработчиков Whole Whale: 47 ключевых терминов, которые нужно знать при работе над веб-проектом.
404
Сообщение об ошибке, когда запрошенное не может быть найдено; часто из-за того, что запрошенная ссылка не работает или не работает.
API
«Интерфейс прикладных программ.»Как компьютеры и приложения взаимодействуют друг с другом.
Приложение
Эти программы, также известные как приложения, предназначены для выполнения определенных функций. Сюда входят мобильные приложения.
Атрибут
Информация об элементах компонента в дизайне / сборке вашего сайта.
Задняя часть
Все скрытые цифровые операции, необходимые для поддержания работоспособности внешнего интерфейса веб-сайта, такие как кодирование, стиль и плагины.Если передняя часть вашего веб-сайта — это то, что аудитория видит на сцене, то в бэкэнд входят рабочие сцены, визажисты, костюмеры, технический персонал, менеджеры сцены и т. Д., Одновременно ведущие шоу из-за кулис.
Браузер
Программа, которую вы используете для доступа в Интернет, например Chrome, Firefox или Safari. Если у вас возникла проблема с веб-сайтом, лучше всего отправить разработчику тип и версию браузера, который вы используете, поскольку зачастую эти проблемы связаны с конкретным браузером.Вы можете легко в этом разобраться благодаря WhatsMyBrowser.org.
Ошибка
Ошибка или недостаток на веб-сайте или в приложении, из-за которого оно не работает должным образом.
Кэш
Хранение определенных элементов для ускорения загрузки повторных посетителей сайта. Часто разработчики советуют вам очистить кеш браузера, если они вносят изменения на веб-сайт, который вы не видите — скорее всего, ваш кеш хранит старую версию и еще не освободил место для новой.(Что-то вроде того периода времени между тем, как вы переезжаете в колледж, и когда ваши родители превращают вашу детскую спальню в домашний кабинет — косую черту — тренажерный зал.)
Классы
. В CSS — идентификатор, указывающий, на что именно вы хотите настроить стиль.
В других языках программирования классы немного шире используются в качестве чертежа для создания чего-либо — подобно использованию чертежа существующего автомобиля для создания автомобиля нового типа.
CMS
«Система управления сайтом.»Программа, которую вы используете для создания и поддержки содержания вашего веб-сайта. Обычно они предназначены для пользователей, не являющихся разработчиками, для простоты использования. Наш личный фаворит в Whole Whale — WordPress.
Преобразование
Цели, которые у вас есть для RGS (действительно хорошие вещи), происходящие на вашем веб-сайте, такие как пожертвования, подписка по электронной почте и загрузки. Если бы ваш пользователь и ваш веб-сайт были в отношениях, они бы сказали: «Я люблю тебя».
Файлы cookie
Источник всего хорошего, шоколадного и сладкого в мире… Шучу.(Вроде.) Это данные, отправляемые интернет-сервером в браузер. Каждый раз, когда браузер обращается к одному и тому же серверу, он отправляет данные обратно, чтобы отслеживать, как (и как часто) он обращается к серверу. Вот почему ваш домашний компьютер всегда знает ваш логин в Netflix.
Cookie: не только для Cookie Monster. 47 терминов @ WholeWhale, которые нужно знать при работе с разработчиком. Нажмите, чтобы твитнуть
Ползать
Когда поисковые системы отправляют ботов на ваш сайт, чтобы собрать информацию о существующих и несуществующих страницах, чтобы определить, какой контент следует отображать или удалять в поисковых системах.
CRM
«Управление взаимоотношениями с клиентами». При разработке веб-сайтов это относится к программному обеспечению и приложениям, используемым для сбора, анализа и хранения информации о клиентах, спонсорах и потенциальных клиентах.
CSS
«Каскадная таблица стилей». Код, который сообщает браузерам, как отображать веб-страницу для конечного пользователя. Это программирование форматирует шрифты, цвета и другие визуальные элементы. При переработке веб-сайта редактировать эти элементы на этапе макета / графического интерфейса намного проще, чем изменять в CSS.
CTA
«Призыв к действию». Кнопки на вашем веб-сайте, которые приводят к определенным конверсиям или целям, например пожертвованиям, подписке на рассылку новостей или регистрации пользователей.
DevOps
«Операции по разработке». Система работы, которая помогает держать отделы разработки, ИТ-операций и обеспечения качества на одной странице, чтобы улучшить конечные продукты и сотрудничество.
Домен
Адрес веб-сайта, введенный в браузере (наш www.allwhale.com!). Если ваш сервер — это земля, на которой построен ваш веб-сайт, а хостинг — это его дом, домен — это его почтовый адрес.
Favicon
Сокращенно от «избранный значок» — это значок, который отображается на вкладке браузера вашего веб-сайта. (Наш талисман, Моби.)
Поля
Если вы его построите, они появятся: Самый простой из строительных блоков для сбора данных. Это единицы хранения, которые посетители вашего веб-сайта используют для ввода своих имен, адресов электронной почты, заметок и т. Д.Если вы запрашиваете имя, фамилию, адрес электронной почты, город и почтовый индекс в пяти разных полях, это пять полей.
Межсетевой экран
Система для защиты защищенной сети от незащищенной сети (т. Е. Остальной части Интернета).
Каркас
Набор программ, используемых при разработке веб-сайтов или программного обеспечения. Это закладывает основу для типа языка программирования, используемого для разработки вашего сайта или приложения.
Передняя часть
Часть веб-сайта или приложения, которую видит пользователь.Если внутренняя часть вашего веб-сайта — это все за кадром, это то, что происходит на сцене.
FTP
«Протокол передачи файлов». Способ обмена файлами с одного компьютера на другой. Таким же образом веб-сайты загружаются в Интернет.
графический интерфейс
«Графический интерфейс пользователя». Изображение того, как веб-сайт устроен и с которым нужно взаимодействовать. В дизайне веб-сайтов все будет идеально выглядеть в макете (ваш опыт может отличаться, когда вы переходите к разработке, учитывая количество разных браузеров и версий).
HTML
«Язык гипертекстовой разметки». Язык кодирования, используемый для создания веб-сайта с точки зрения как формы, так и функций.
Мета-тег
Дополнительная информация о веб-страницах или элементах, такая как способ отображения части контента в результатах поиска Google, фото-кредит для изображения или основные ключевые слова, связанные с плагином. Это очень важно для SEO. Мы рекомендуем плагин Yoast для WordPress для добавления всей необходимой метаинформации для настройки вашего сайта для успеха SEO.
Навигация
Ссылки на домашней странице, разделяющие другие страницы веб-сайта. Это может быть как в меню вверху сайта, так и в нижнем колонтитуле (желательно и то, и другое).
OOTB
«Из коробки». Также известен как «С полки». Это готовые, подключаемые по принципу «plug-and-play» возможности и функции, которые вы можете загрузить и установить без необходимости настраивать или настраивать. Вместо того, чтобы делать пирожные с нуля, вы используете смесь (в любом случае, это все равно вкусно).
Открывающие / закрывающие теги
Угловые скобки (<>), которые закрывают HTML-элемент, чтобы помочь построить структуру веб-страницы. Закрывающие теги включают косую черту (>). Например, если бы мы собирались выделить часть этого предложения курсивом, мы бы открыли его с и закрыли с помощью .
Шаблон страницы
Макет веб-страницы — страницы со схожей структурой используют один и тот же шаблон (например, страницы с подробными сведениями о различных событиях на одном и том же веб-сайте).Кардинально разные страницы используют отдельные шаблоны.
Плагин
Модули или программное обеспечение, которые могут быть добавлены («подключены») к системе для дополнительных функций или возможностей.
Недвижимость
Характеристики, продиктованные CSS, например цветовые схемы и шрифты.
Перенаправляет
Автоматическая переадресация с одного URL-адреса на другой — обычно с URL-адреса старого веб-сайта на ту же страницу на новом веб-сайте (это называется переадресацией 301).Другие перенаправления могут перемещаться между двумя доменами (например, idealist.com перенаправляет на idealist.org), сокращенным URL-адресом на полный URL-адрес (например, URL-адрес bit.ly) и URL-адресами с геотаргетингом.
Регистратор
Компания, используемая для регистрации доменов (например, GoDaddy, Hover, Network Solutions).
Разрешение
По сути, насколько большое изображение или графику можно отобразить на дисплее. Часто разработчики говорят о разрешении фотографий, поскольку фотографии с низким разрешением также не отображаются, если их размер должен соответствовать ширине экрана рабочего стола.Разрешение измеряется в пикселях (например, разрешение экрана MacBook Air составляет 1440 x 900 пикселей).
Адаптивный дизайн
веб-сайтов, соответствующих экрану, на котором они просматриваются. Это стало огромной тенденцией в дизайне веб-сайтов, когда просмотр на мобильных и планшетных устройствах стал более популярным, что побудило многих разработчиков выбрать подход «сначала мобильные» — сначала оптимизировать дизайн веб-сайта для использования на телефоне и планшете, а затем убедиться, что он хорошо смотрится на ноутбуке / настольном компьютере.
Платформы SAAS
«Программное обеспечение как услуга». Самая простая из облачных платформ; позволяет пользователям обмениваться файлами и совместно работать над проектами через браузер. Некоторые платформы SAAS включают Google Drive и Dropbox. Другими вариантами облачных вычислений являются «Платформа как услуга» (PAAS; Facebook, Twitter и т. Д.) И «Инфраструктура как услуга» (IAAS; Amazon Web Services, Microsoft Azure).
Сервер
Компьютеры, на которых установлено программное обеспечение, позволяющее пользователям получить доступ к вашему сайту — это то, что размещает хостинг.Если ваш домен является почтовым адресом веб-сайта, а хостинг — его домом, сервер — это земля, на которой он построен.
Карта сайта
Схема всех страниц веб-сайта, организованная в иерархическом порядке — во многом аналогично схемам, которые вы использовали для своих курсовых работ в колледже.
Слайдер
Карусель изображений, обычно размещаемых на главной странице сайта, которые вращаются, выделяя различные фотографии, ссылки и контент.
SOS
Замечательная песня ABBA, которая включена по крайней мере в один рабочий плейлист Whaler.Да, это шутка, но если вы дошли до этого конца страницы и уже использовали так много сокращений, вы заслуживаете небольшого количества сокращений.
UI
«Пользовательский интерфейс». Визуальные элементы, которые входят в состав веб-сайта или приложения. Это форма функции UX.
UX
«Пользовательский опыт». Взаимодействие пользователя с интерфейсом с акцентом на то, насколько он приятен и успешен. Функция для дополнения формы пользовательского интерфейса.
Виджеты
Приложения, которые позволяют выполнять определенные интерактивные функции на веб-сайте.
Каркас
Базовая структура веб-сайта. Никаких шрифтов, цветов или изображений, этот макет является первым шагом к тому, чтобы убедиться, что основа надежна, перед добавлением контента.
WYSIWYG
«Что видишь, то и получаешь». Редактор визуального контента в CMS, который позволяет вам изменять контент на вашем веб-сайте без необходимости знать HTML. Если вы когда-либо делали текст на своем веб-сайте жирным, просто выделяя и нажимая «Полужирный», вы использовали WYSIWYG.
Язык программирования | Определение языка программирования на Dictionary.com
[proh-gram-ing lang-gwij] SHOW IPA
/ ˈproʊ græm ɪŋ ˌlæŋ gwɪdʒ / PHONETIC RESPELLING
существительное
язык высокого уровня, используемый для написания компьютерных программ, как C ++ или Python, а иногда и язык ассемблера.
ВИКТОРИНЫ
БУДЕТ ЛИ ЭТА ВИКТОРИНА DASHES ВЫГОДНОЙ ПОБЕДОЙ ДЛЯ ВАС?
Думаете, вы отличите дефисы от дефисов? Вы стойкий приверженец em dash? Проверьте свою «лихую» силу духа с помощью этой викторины на всех рывках.
Вопрос 1 из 7
В то утро она проснулась ___ облачным, невзрачным утром ___ совершенно не подозревая, что ее жизнь вот-вот изменится с приходом письма от бабушки.
Также называется кодовым языком [koh-ding lang-gwij] / ˈkoʊ dɪŋ ˌlæŋ gwɪdʒ /.
Происхождение языка программирования
Впервые зарегистрировано в 1955–1960 годах
Слова рядом с языком программирования
Методика оценки и анализа программ, музыкальная программа, программа обучения, программист, программирование, язык программирования, музыка программы, изображение программы, утверждение программы, программа , к, программа торговая
Словарь. com Несокращенный
На основе Несокращенного словаря Random House, © Random House, Inc. 2021
Слова, относящиеся к языку программирования
информационные технологии, искусственный интеллект, робототехника, обработка данных, кибернетика, поиск информации, моделирование, системный анализ, обработка естественного языка, нейронные сети , операционные системы, программирование
Примеры предложений из Интернета для языка программирования
.expandable-content {display: none;}. css-12x6sdt.expandable.content-extended>.expandable-content {display: block;}]]>
Веб-оболочки создаются с использованием языков веб-программирования, таких как PHP, JSP или ASP.
Он объяснил, что использовал так называемое кодирование, используя язык программирования, чтобы заставить компьютер что-то делать.
Как и любые другие языки программирования, структурированные данные должны иметь правильный синтаксис, чтобы предоставлять немедленные и удобные для понимания факты и цифры.
За годы, прошедшие после этих программ, я изучил различные языки программирования и более тонкие методы быстрого проектирования и изготовления машин, выполняя анализ методом конечных элементов для своих собственных проектов по выходным.
Гвидо ван Россум, создатель языка программирования Python, объявил сегодня, что он ушел на пенсию и присоединился к отделу разработчиков Microsoft.
Однако, несмотря на резкие формулировки, ни JPO, ни Lockheed не могли оспорить ни одного факта в любом отчете Daily Beast.
Некоторые из них уже берут уроки языка в Германии.
Его первым языком был русский, затем он выучил шведский, но предпочитает выступать на односложном ломаном английском.
У нас также есть язык, наполненный отвращением к гражданским «другим».
Разногласия будут касаться правильного и неправильного, а не анализа юридических формулировок.
«Возможно, вы не говорите на моем языке», — сказала она на урду, языке, который наиболее часто встречается в Верхней Индии.
Я прошу вас представить его переведенным на все языки, общим материалом для понимания во всем мире.
И во всем мире каждый язык преподавался бы с одним и тем же акцентом, количеством и идиомами — это действительно очень желательно.
Но не охотитесь за ними, в темноте забытого языка все еще живут современные Бессмертные.
Свет, символ жизненной радости, кажется первым языком, на котором дух красоты говорит с ребенком.
СМОТРЕТЬ БОЛЬШЕ ПРИМЕРОВ СМОТРЕТЬ МЕНЬШЕ ПРИМЕРОВ
Изучить Dictionary.com
li {-webkit-flex-based: 49%; — ms-flex-предпочтительный-размер: 49%; гибкая основа : 49%;} @ экран только мультимедиа и (max-width: 769px) {.css-2jtp0r> li {-webkit-flex-базис: 49%; — ms-flex-предпочтительный-размер: 49%; гибкий-базис: 49%;}} @ media only screen and (max-width: 480px) { .css-2jtp0r> li {-webkit-flex-базис: 100%; — ms-flex-предпочтительный-размер: 100%; гибкий-базис: 100%;}}]]>
Британский словарь определений для языка программирования
Словарь английского языка Коллинза — полное и несокращенное цифровое издание 2012 г.
© William Collins Sons & Co. Ltd. 1979, 1986 © HarperCollins
Издатели 1998, 2000, 2003, 2005, 2006, 2007, 2009, 2012
Научные определения для языка программирования
Искусственный язык, используемый для написания инструкций, которые могут быть переведены на машинный язык и затем выполнены компьютером.Английский и другие естественные языки не используются в качестве языков программирования, потому что они не могут быть легко переведены на машинный язык. ♦ Компилируемый язык — это язык, на котором набор инструкций (или кода), написанный программистом, преобразуется в машинный язык с помощью специального программного обеспечения. вызывается компилятором перед выполнением. C ++ и SmallTalk являются примерами компилируемых языков. ♦ Интерпретируемый язык — это язык, на котором набор инструкций (или кода), написанный программистом, преобразуется в машинный язык специальным программным обеспечением, называемым компилятором, перед выполнением.Большинство языков сценариев и макросов являются интерпретируемыми языками. См. Также программу.
Научный словарь американского наследия®
Авторские права © 2011. Издано издательской компанией Houghton Mifflin Harcourt Publishing Company. Все права защищены.
Культурные определения языка программирования
В компьютерных технологиях — набор соглашений, в которых записываются инструкции для машины. Есть много языков, которые позволяют людям общаться с компьютерами; Наиболее распространены C ++, BASIC и Java.
Новый словарь культурной грамотности, третье издание
Авторские права © 2005 издательской компании Houghton Mifflin Harcourt. Опубликовано Houghton Mifflin Harcourt Publishing Company. Все права защищены.
Прочие — это Readingli {-webkit-flex-base: 100%; — ms-flex-предпочтительный размер: 100%; flex-base: 100%;} @ media only screen и (max-width: 769px) {. Css -1uttx60> li {-webkit-flex-base: 100%; — ms-flex-предпочтительный-размер: 100%; flex-base: 100%;}} @ экран только мультимедиа и (max-width: 480px) {. css-1uttx60> li {-webkit-flex-base: 100%; — ms-flex-предпочтительный-размер: 100%; flex-base: 100%;}}]]>
4434 — Sr.API / облачный разработчик
Это захватывающее время, чтобы присоединиться к нашему клиенту, поскольку он возглавляет преобразование энергии, которое позволит использовать силу чистых и возобновляемых ресурсов в будущем.
Старший API / облачный разработчик
В этой роли у вас будет уникальная возможность привнести новую область знаний в их организацию. В этой роли вы будете разрабатывать программную логику и добиваться бизнес-результатов для новых приложений или анализировать и изменять логику в существующих приложениях в AWS.Вы будете кодировать, тестировать, отлаживать и документировать программные приложения, а также анализировать требования, тестировать и интегрировать компоненты приложений. Вы убедитесь, что указанные требования связаны со стратегическими результатами и что улучшения системы успешно внедрены в AWS. Вы будете отслеживать внедренные решения и следить за их рентабельностью и их использованием. Вы разработаете матрицу облачных решений (критерии приемлемости) и убедитесь, что разрабатываемые услуги полностью автоматизированы.
Основные обязанности
— Программирование / разработка программного обеспечения — устанавливает местные или коллективные стандарты для инструментов и методов программирования, включая рекомендации по безопасности и выбор подходящих методов разработки. Консультирует по применению стандартов и методов и обеспечивает соблюдение. Берет на себя техническую ответственность за все этапы и / или итерации проекта разработки программного обеспечения, предоставляя технические советы и рекомендации по конкретным методам для заинтересованных сторон проекта.Назначает рабочие пакеты, отслеживает производительность и динамически управляет контролем изменений для оптимизации производительности. Предоставляет советы, рекомендации и помощь менее опытным коллегам по мере необходимости.
— Поддержка приложений — разрабатывает и поддерживает процедуры и документацию для поддержки приложений. Управляет усовершенствованиями приложений для повышения эффективности бизнеса. Консультирует по вопросам безопасности приложений, лицензирования, обновлений, резервного копирования и аварийного восстановления. Обеспечивает рассмотрение всех запросов о поддержке в соответствии с установленными стандартами и процедурами.
— Управление инцидентами — Обеспечивает обработку инцидентов в соответствии с согласованными процедурами. Расследует эскалацию инцидентов ответственным владельцам услуг и ищет решения. Облегчает восстановление после разрешения инцидентов. Гарантирует, что разрешенные инциденты должным образом задокументированы и закрыты. Анализирует причины инцидентов и информирует владельцев сервисов, чтобы свести к минимуму вероятность повторения и внести свой вклад в улучшение сервиса. Анализирует показатели и отчеты о производительности процесса управления инцидентами.
— Управление проблемами — Обеспечивает принятие соответствующих мер для прогнозирования, исследования и решения проблем в системах и службах. Гарантирует, что такие проблемы полностью задокументированы в соответствующей системе (ах) отчетности. Позволяет разработать решения проблем. Координирует применение согласованных средств защиты и профилактических мер. Анализирует закономерности и тенденции.
— Проектирование систем — определяет и проектирует большие или сложные системы. Выбирает соответствующие стандарты проектирования, методы и инструменты, соответствующие согласованным архитектурам предприятия и решений, и обеспечивает их эффективное применение.Рассматривает проекты других систем, чтобы гарантировать выбор подходящей технологии, эффективное использование ресурсов и интеграцию множества систем и технологий. Вносит вклад в политику выбора компонентов архитектуры. Оценивает и проводит анализ воздействия на основные варианты дизайна, а также оценивает связанные с ними риски и управляет ими. Обеспечивает баланс между функциональными требованиями, качеством обслуживания, безопасностью и системным менеджментом при проектировании системы.
— Системная интеграция — проектирует и создает интеграционные компоненты и интерфейсы.Ведет практическую интеграцию под техническим руководством дизайнера системы / сервиса. Может способствовать общему дизайну службы. Может определять технические критерии для выбора продукта / компонента. Способствует принятию решений об инструментах, методах и подходах.
Образование / Опыт / Сертификаты
— Требуется степень бакалавра в области бизнеса, информатики, инженерии, менеджмента или другой смежной области или эквивалентный опыт.
— 8+ лет крупномасштабной разработки программного обеспечения или разработки приложений с недавним опытом программирования на трех или более из следующих языков: Python, Java, JavaScript, C / C ++, C #, Node.js, SQL. Предпочтение отдано Python.
— Продемонстрированный опыт разработки API и создания бессерверных микросервисов RESTful в облаке (предпочтительно AWS).
— Продемонстрированный опыт разработки решений с использованием ресурсов / сервисов AWS, включая S3, Lambda, EC2, EMR, API Gateway, Glue, Snowflake, RDS, DynamoDB.
— Опыт моделирования данных, разработки ETL и создания хранилищ данных в облаке.
— Желателен опыт разработки комплексных решений для больших наборов структурированных и неструктурированных данных, охватывающих облако AWS, локальную среду и среду SaaS.
— Требуется продемонстрированный опыт в гибкой разработке программного обеспечения и практиках DevOps, таких как инструменты непрерывной интеграции (например, Jenkins), репозиторий кода, создание конвейеров CI / CD.
— Требуется знание лучших практик облачной архитектуры AWS, таких как пиринг VPC, VPN-туннель, безопасность (NACL / ACL) и облачных сервисов AWS, таких как ALB / ELB, VPC, KMS EC2, CloudTrail, CloudWatch.
— Большой практический опыт разработки приложений в системах на базе Linux и Windows.
— Представления на публичных мероприятиях, таких как технологические конференции, хакатоны и т. Д.
— Опыт управления проектами и лидерство в команде.
— Опыт работы над несколькими одновременными проектами.
— Опыт работы над проектами в многопрофильных командах разработчиков.
Компетенции (знания, навыки, способности):
Функциональные компетенции:
— Глубокое знание бизнес-целей и масштабов инициатив по изменениям
— Глубокое знание фреймворков дизайна пользовательского опыта
— Глубокие знания процессов управления изменениями
— Глубокие знания конфигурации программного обеспечения
— Глубокие знания концепций баз данных
— Глубокие знания в области планирования и поддержки непрерывности услуг
Общие компетенции:
— Расширенные навыки клиентоориентированности
— Высокие навыки точности
— Продвинутые навыки управления рисками
— Продвинутые устные и письменные коммуникативные навыки
— Продвинутые навыки межличностного общения
— Продвинутые навыки принятия решений
— Продвинутые навыки организации и расстановки приоритетов
— Продвинутые навыки проведения встреч
— Продвинутые навыки построения команды
программных исследований | MIT Press
Культурный справочник по программному обеспечению: художники, информатики, дизайнеры, теоретики культуры, программисты и другие определяют новую область исследования и практики.
Этот сборник коротких пояснительных, критических и теоретических текстов предлагает практическое руководство по культурному, политическому, социальному и эстетическому влиянию программного обеспечения. Компьютеры и цифровые медиа необходимы для того, как мы работаем и живем, и об их влиянии уже много говорилось. Но сам материал программного обеспечения часто оставался невидимым. В исследованиях программного обеспечения ученые-информатики, художники, дизайнеры, теоретики культуры, программисты и другие представители различных дисциплин берут на себя ключевую тему в понимании программного обеспечения и работ, которые его окружают.К ним относятся алгоритмы; логические структуры; способы мышления и действия, которые просачиваются из области логики в повседневную жизнь; ценностные и эстетические суждения, встроенные в компьютерную технику; собственные субкультуры программирования; и четко сформулированные строительные блоки, которые работают, чтобы создавать, называть, приумножать, контролировать и переплетать реальность. Растущее значение программного обеспечения требует нового типа культурной теории, которая может понять политику пикселей или поэзию цикла и заниматься микроанализом повседневных цифровых объектов.Участники исследования программного обеспечения грамотны в области вычислений (и каким-то образом участвуют в производстве программного обеспечения), а также активно создают и теоретизируют культуру. Исследования программного обеспечения предлагают не только исследования программного обеспечения, но и программу дисциплины, которая рассматривает программное обеспечение как объект изучения с новых точек зрения.
Авторы
Элисон Адам, Уилфрид Хоу Дже Бек, Мортен Брейнбьерг, Тед Байфилд, Венди Хуэй Кьонг Чун, Джефф Кокс, Флориан Крамер, Сесиль Крутцен, Марко Дезериис, Рон Эглаш, Мэттью Фуллер, Эндрю Гоффи, Стив Гудман, Ольга Гориунова, Грэм Харвуд, Фрид Киттлер, Эрна Коткамп, Йоасия Крыса, Адриан Маккензи, Лев Манович, Майкл Матеас, Ник Монфорт, Майкл Мерто, Юсси Парикка, Сорен Полд, Дерек Робинсон, Уоррен Сэк, Грзесик Седек, Алексей Шульгин, Матти Тедре, Рихард Уорд, Эдрайт Уорд Саймон Юилл
.