Урок 1. Программирование. Общее представление. Команды для программирования


Команда (программирование) - это... Что такое Команда (программирование)?

У этого термина существуют и другие значения, см. Команда.

В программировании, команда — это указание компьютерной программе действовать как некий интерпретатор для решения задачи. В более общем случае, команда — это указание некоему интерфейсу командной строки, такому как shell.

В частности, термин команда используется в языках императивного программирования. Эти языки так названы, потому что их операторы, как правило, пишутся наподобие глаголам в повелительном наклонении, используемому во многих естественных языках. Если посмотреть на оператор императивного языка как на предложение естественного языка, то команда, в общем, подобна глаголу.

Многие программы допускают использование специально отформатированных аргументов, известных как ключи, которые изменяют стандартное поведение команды, в то время как дополнительные аргументы описывают действия команды. Сравним с естественным языком: ключам соответствуют наречия, в то время как иным аргументам — дополнения.

Примеры

Ниже приводятся несколько команд для интерпретатора командной строки операционной системы UNIX (UNIX shell).

Команда cd изменяет расположение пользователя в дереве каталогов с текущего на каталог /home/pete. Команда echo выводит текст hello в поток стандартного вывода, который, в этом случае, напечатает этот текст на экране. Кавычки (заметьте: не такие, какие приняты в Википедии) необходимы для вывода нескольких слов, разделённых пробелами, однако всё зависит от конкретной реализации команды: возможен вывод нескольких слов даже без кавычек; возможно восприятие кавычек в качестве аргумента команды, то есть вывод текста вместе с ними. Команда ls выводит список всех файлов каталога /bin в полном виде (ключ -l), отсортированных по времени (ключ -t) в обратном порядке (ключ -r). Команда chmod используется для предоставления доступа на чтение, запись или выполнение к файлу с именем filename. В символьной записи первая цифра указывает на права пользователя, в то время как остальные две цифры используются для указания прав групп пользователей на чтение, запись или выполнение Вашего файла. 1 — доступ к Вашему файлу на выполнение, 2 — доступ к Вашему файлу на запись, 4 — доступ к Вашему файлу на чтение. 4+1=5 означает, что к Вашему файлу имеется только доступ на чтение и выполнение, 4+2+1=7 означает, что к Вашему файлу имеется доступ на чтение, на запись и на выполнение.

См. также

dic.academic.ru

Основы программирования 1 Машинный код Команды поступающие

Основы программирования 1

Машинный код Команды, поступающие в процессор по шинам, представляют собой последовательности нулей и единиц, то есть числа. Поэтому программа, с которой работает процессор, представляет собой последовательность чисел, называемую машинным кодом. Каждая модель процессора имеет свой собственный набор команд. Говорят, что процессор A совместим с процессором B, если процессор A полностью «понимает» машинный код процессора B.

Программа «Hello, world!» для процессора архитектуры x 86 выглядит следующим образом (в шестнадцатеричном представлении ): BB 11 01 B 9 0 D 00 B 4 0 E 8 A 07 43 CD 10 E 2 F 9 CD 20 48 65 6 C 6 C 6 F 2 C 20 57 6 F 72 6 C 64 21 3

Алгоритм Точно определенное описание способа решения задачи в виде конечной (по времени) последовательности действий. Для представления алгоритма в виде, понятном компьютеру, служат языки программирования. Алгоритм записывается на одном из таких языков, полученный текст программы с помощью трансляторов (спец. служебные приложения) переводится в машинный код, либо исполняется.

Язык программирования формализованный язык. Синтаксис языка программирования определяет «слова» , понятные транслятору, и правила записи команд (операторов). Синтаксис – это описание языка программирования, определяющее вид, форму и структуру конструкций языка. Пример. «Это кошка страус зеленая» . Слова и символы допустимы для русского языка, но вместе составляют недопустимую конструкцию (синтаксическая ошибка)

Семантика языка программирования определяет смысл каждой синтаксической структуры. Семантика языка – это интерпретация абстрактного синтаксиса в терминах модели. Пример. «Зеленая кошка – это страус» . Синтаксис правильный, но фраза лишена смысла (семантическая ошибка). Процесс поиска ошибок в программе (синтаксических или семантических) называется тестированием, процесс устранения ошибок – отладкой. 6

Постановка задачи Загружаемый модуль программы Разработка алгоритма Исходный текст программы Трансляция (лексический, семантический анализ, создание объектного кода) 7

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

Интерпретатор сразу выполняет команды языка, указанные в тексте программы. Интерпретатор берет очередной оператор, анализирует его структуру и исполняет, затем происходит переход к следующему оператору и т. д. ØПрограммы с большим объемом повторяющихся вычислений могут работать медленно ØДля работы на другом компьютере требуется наличие интерпретатора 9

В реальных системах программирования используются и компиляция, и интерпретация. Отладка может выполняться в процессе интерпретации, а результирующий код не обязательно будет машинным – он может быть промежуточным машинно-независимым кодом абстрактного процессора, который в различных компьютерных архитектурах станет выполняться с помощью интерпретатора или компилироваться в соответствующий машинный код. 10

Уровни языков программирования Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. Пример: язык ассемблера. Представляет каждую команду машинного кода не в виде чисел, а с помощью символьных условных обозначений, называемых мнемониками. Преобразование одной машинной инструкции в одну команду ассемблера называется транслитерацией.

Язык ассемблера применяется там, где требуется компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам. Применяется для написания небольших системных приложений, драйверов, модулей стыковки с нестандартным оборудованием. 12

Языки программирования высокого уровня не учитывают конкретных компьютерных архитектур. Создаваемые программы легко переносятся на другие платформы, для которых создан транслятор этого языка. 13

Парадигмы языков программирования q q Императивные (процедурные) языки описывают решение задачи как последовательность процедур Функциональные языки описывают требуемый результат в виде набора вложенных друг в друга функций (Haskell) Логические языки описывают требуемый результат в виде суммы логических операций (Prolog) Объектно-ориентированные языки способны определять абстрактные типы данных и реализовывать основные парадигмы ООП: инкапсуляцию, наследование и полиморфизм (C++, Java, Object Pascal и др. )

Поколения языков программирования Первый этап – машинные коды (50 -е гг. ) Фрагмент программы в машинном коде Фрагмент программы на языке ассемблера

Второй этапа – языки высокого уровня (60 -е гг. ) Каждая команда в языке высокого уровня скрывает десятки и сотни команд на языке ассемблера. ALGOL, Fortran, APL 16

Третий этап – структурное программирование Вырабатывался наиболее общий алгоритм работы программы, а затем производилась декомпозиция этого алгоритма до уровня подпрограмм. ALGOL-68, C, Pascal 17

Четвертый этап – модульное программирование Программа делится на модули, которые при компиляции образуют отдельные объектные файлы. Объектные файлы собираются в единое целое и получается исполняемая программа. Модули можно использовать многократно как в виде исходного кода, так и скомпилированных объектных файлов. 18

Пятый этап – объектно-ориентированный подход Объекты окружающего мира находят свое абстрактное отражение в сложных типах данных, называемых классами. C++, Java, Object Pascal, языки семейства Microsoft. NET 19

Шестой этап – компонентный подход Построение программного обеспечения из независимых друг от друга «кирпичиков» , которые объединяются между собой благодаря специальным стандартизированным интерфейсам. Компоненты могут быть написаны на разных языках программирования и скомпилированы в разных средах разработки. 20

ОБЗОР ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ 21

Процедурное программирование Программа представляет собой последовательность команд, определяющих алгоритм решения задачи. Основная идея процедурного программирования - использование памяти для хранения данных. Основная команда - присвоение, с помощью которой определяется и меняется память компьютера. Программа производит преобразование содержимого памяти, изменяя его от исходного состояния к результирующему

Языки процедурного программирования Фортран создан в начале 50 -х годов для программирования научно-технических задач; Кобол – создан в конце 60 -х годов 20 -го века для решения задач обработки больших объемов данных, хранящихся на различных носителях данных; Алгол (1960 год) – это многоцелевой расширенный язык программирования. В нем впервые введены понятия «блочная структура программы» и «динамическое распределение памяти» . Не получил развития из-за отсутствия хороших компиляторов.

BASIC – язык программирования для начинающих. Характеризуется простотой освоения и наличием универсальных средств для решения научных, технических и экономических задач. Паскаль (1968 -1971 гг). В основу языка положен подход от общей задачи к частным (более простым и меньшим по объему). Си - планировался как язык для реализации операционной системы Unix вместо языка Ассемблера. Похож на Паскаль и имеет дополнительные средства для прямой работы с памятью. 24

Языки объектно-ориентированного программирования С++ (Си++) – объектно –ориентированное расширение языка Си, созданное Страуструпом в 1980 г. Java (джава, ява) – создан компанией Sun в нач. 90 -х гг. на основе С++. Призван упростить разработку приложений на основе С++ путем исключения из него всех низкоуровневых возможностей. Главная особенность – компиляция не в машинный код, а в платформенно-независимый байт-код. Этот байт -код выполняется с помощью интерпретатора – виртуальной java-машины, версии которой созданы для любой платформы.

С# (Си шарп) – создана в конце 90 -х гг. в Microsoft. В нем воплотились лучшие идеи С и С++, а также достоинства Java. 26

Языки программирования баз данных База данных – это файл (или группа файлов), представляющий собой упорядоченный набор записей, имеющих единообразную структуру и организованных по единому шаблону. Для работы с базами данных был создан структурированный язык запросов SQL (Structured Query Language). Для управления большими базами данных разработаны СУБД (системы управления базами данных). В каждой СУБД помимо поддержки языка SQL имеется также свой уникальный язык.

Языки программирования для Интернета Языки программирования для компьютерных сетей являются интерпретируемыми. Perl - язык, приспособленный для обработки произвольных текстовых файлов, извлечения из них необходимой информации и выдачи сообщений. Команды Perl могут получить данные из формы HTML или другого источника и выполнить с ними какое-нибудь действие.

PHP (1995 -1997 гг) обладает средствами доступа к БД и используется создателями динамических сайтов во всем мире VRML (1994 г) создан для организации виртуальных трехмерных интерфейсов в Интернете XML. С 1996 г идет работа над созданием универсального языка структуры документов. Может стать заменой языка HTML. 29

present5.com

Список команд

Перевод этой страницы еще не завершен. Пока это не произойдет, незавершенные части будут на английском.

All commandline applications shipped with Haiku are in /boot/system/bin/. Your own or additionally installed commandline apps will appear in ~/config/bin/ when installed from a .hpkg package. Otherwise you can put them into ~/config/non-packaged/bin/. All these locations are part of the PATH variable and are therefore automatically found.Here's a list of all commandline applications that are shipped with Haiku. Each with only a short description of what it does, for more detailed information on its usage execute the command with the parameter --help.

CortexAddOnHost Запускает сервис, отслеживающий используемые аудио и видео аддоны.
FirstBootPrompt Language and keymap setup.
[ Возвращает правда/ложь после сравнения элементов.

A - E

addattr Записывает атрибут файла, приводя записываемое значение к соотвествующему типу (специфичное для Haiku)
alert Отображает окно с сообщением. (специфичное для Haiku)
arp Манипулирует системным ARP-кешем.
awk См. gawk.
base64 Кодирование или декодирование Base64 в стандартный вывод.
basename Убирает папку или опционально суффикс из строки /путь/до/имяфайла.
bash Оболочка bash
bc Арифметический язык-калькулятор.
beep Воспроизводит системный сигнал.
bunzip2 См. bzip2.
bzip2 File compressor.
c++ C -Compiler.
cal Отображает календарь.
cat Объединяет файлы и печатает в стандартный вывод.
catattr Выводит содержимое аттрибутов файла. (специфичное для Haiku)
cc Компиллятор Си
checkfs Проверяет и исправляет файловую систему. (специфичное для Haiku)
checkitout Получает исходные коды с URL репозитория.
chgrp Изменяет группу владельцев файлов.
chmod Изменяет разрешения для файлов.
chop Разбивает файл на несколько файлов меньшего размера.
chown Изменяет владельца файлов.
chroot Выполняет команду с указанным корневым каталогом.
cksum Выводит контрольную сумму CRC и количество байтов для указанных файлов.
clear Очищает окно терминала.
clockconfig Выводит параметры часов.
cmp Производит побайтовое сравнение файлов.
collectcatkeys [Осталась после перемещения locale-kit.]
comm Производит построчное сравнение файлов.
compress Программа сжатия данных
consoled Консольный демон
copyattr Копирует все или некоторый набор атрибутов из одного или нескольких файлов в другой или новый файл. (специфично для Haiku)
cp Копирует файлы и каталоги.
csplit Разбивает файл на части, разделенные gпо указанному шаблону.
ctags Генерирует индексный файл для множества языковых объектов, найденных в файлах.
cut Выводит колонку из каждой строки файла.
date Выводит текущие дату и время.
dc Пакет для арифметических вычислений.
dd Копирует двоичные данные, производит конвертацию и ворматирование указанные в операндах.
desklink Добавляет элемент в Deskbar. (специфичное для Haiku)
diskimage Registers a file as disk device that can then be mounted. (Haiku specific)
df Выводит объем использованного и свободного пространства подключенных томов.
diff Сравнивает файлы построчно.
diff3 Построчно сравнивает три файла.
dircolors Настройка цветов для ls.
dirname Получает имя_файла из строки /путь/до/имя_файла
draggers Выводит/устанавливает состояние отображения репликантов.
driveinfo Выводит информацию об аппаратных компонентах.
dstcheck Выводит окно с сообщением о переходе с летнего / на летнее время.
du Обощает использование дискового пространства каждым файлом, рекурсивно для каталогов.
dumpcatalog [Осталось после перемещения locale-kit.]
echo Выводит строку текста.
egrep См. grep.
eject Извлекает переносной носитель.
env Выполняет программу в измененной среде.
error Выводит текстовое описание для передаваемых номеров ошибок.
expand Преобразует табуляцию в пробелы.
expr Выводит значение выражения.

F - J

factor Выводит простые множители целых чисел.
false Ничего не делает. Обозначает "неудачу" и возвращает значение "1".
fdinfo Выводит информацию о задействованных файловых дескрипторах в системе.
ffm Устанавливает следование фокуса за мышью.
fgrep См. grep.
filepanel Отображает панель загрузки/сохранения файла. (специфично для Haiku)
find Выполняет поиск файлов в структуре каталогов.
finddir Выполняет поиск специализированных каталогов, определенных на уровне системы.
fmt Переформатирует каждый абзац файла.
fold Разбивает строки файла на строки требуемой длины.
fortune Выводит случайную, и, надеюсь, интересную пословицу.
frcode Вызывается командой updatedb для сжатия списка имен файлов
freetype-config Выводит информацию о параметрах компилляции и линковки FreeType.
fstrim Send a TRIM command to an SSD drive.
ftp FTP клиент
ftpd FTP сервер
funzip Распаковывает первый элемент архива в стандартный вывод.
fwcontrol Программа управления FireWire
gawk Язык построчного разбора и обработки по заданным шаблонам.
gdb Отладчик GNU
getarch Shows the environment's compiler version.
getlimits Выводит платформозависимые ограничения в формате, удобном для использования в скриптинге.
grep Поиск по шаблону.
groups Выводит членство в группах для каждого имени пользователя.
gunzip Тоже самое что и gzip.
gzexe Упаковка/распаковка исполнимых файлов.
gzip Упаковка/распаковка файлов.
hd Дамп в шестнадцатеричных кодах
head Выводит первые строки файла.
hey Небольшой инструмент для скриптования GUI-приложений.
hostname Выводит список сетевых имен системы.
id Выводит информацию о пользователе и группе.
ident Определяет ключевые слова RCS в файлах.
ifconfig Настраивает сетевой интерфейс.
install Копирует файлы в место назначения без нарушения работы системы.
install-wifi-firmwares.sh Устанавливает прошивки для различного набора беспроводных сетевых карт.
installsound Добавляет новое звуковое событие в панели настройки Звуки.
iroster Перечисляет устройства ввода.
isvolume Получает информацию о монтируемом томе.
join Для каждой пары входных строк с одинаковыми общими полями выводит строку на стандартный вывод.

K - O

kernel_debugger Переход к отладчику ядра.
keymap Загружает либо сохраняет раскладку клавиатуры.
kill Посылает процессу сигнал выхода.
launch_roster Controls the launch_daemon, e.g. stop and restart services. (Haiku specific)
less Просматривает файл.
lessecho Выводит свои аргументы и расширяет метасимволы, такие как * и? в именах файлов.
lesskey Назначает клавишу для вызова less.
link Создает ссылку на файл.
linkcatkeys [Осталось после перемещения locale-kit.]
listarea Выводит список областей памяти для всех работающих команд.
listattr Выводит список атрибутов файла. (специфично для Haiku)
listdev Выбодит список всех аппаратных устройств.
listimage Выводит информацию об образах всех работающих команд.
listport Перечисляет все открытые порты в системе, в порядке открывших команд.
listres Перечисляет ресурсы, хранящиеся в файле.
listsem Перечисляет семафоры, отведенные указанной команде.
listusb Выводит список USB устройств.
ln Создает ссылку на файл.
locale Shows the set preferred language, its LC_CTYPE and the preferred formatting.
locate Находит файл.
logger Отправляет сообщение в системный лог.
login Открывает сессию в системе.
logname Выводит имя текущего пользователя.
ls Перечисляет содержимое каталога.
lsindex Отбражает индексированные атрибуты текущего тома/раздела. (специфично для Haiku)
mail2mbox Преобразует файлы e-mail BeOS в формат Unix.
make Утилита GNU make
makebootable Делает указанный BFS раздел/устройство доступным для загрузки, записывая загрузочный код в первые два сектора.
mbox2mail Преобразует файы Unix mailbox в файлы e-mail BeOS.
md5sum Выводит или проверяет контрольные суммы MD5.
media_client "media_client play" plays back audio files.
merge Трехстороннее слияние файлов.
message Выводит содержимое BMessage, записанное в файл.
mimeset Устанавливает MIME-тип файла.
mkdepend Makefile dependency generator.
mkdir Создаёт папку.
mkdos Инициализирует раздел FAT.
mkfifo Создает именованный канал.
mkfs Создает файловую систему.
mkindex Создает новый индекс для атрибута. (специфично для Haiku)
mktemp Безопасно создает временный файл или каталог.
modifiers Выводит (не)нажатые в данный момент клавиши-модификаторы.
more См. less.
mount Подключает файловую систему.
mount_nfs Подключает NFS раздел.
mountvolume Подключает том по имени.
mv Перемещает/переименовывает файл.
nano The default text editor in the Terminal, a clone of 'Pico'.
netcat Утилита TCP и UDP.
netstat Выводит сетевые подключения, таблицы маршрутизации, статистику интерфейсов, маскированные соединения и участие в групповых передачах.
nl Выводит файл с добавлением нумерации строк.
nohup Выполняет команду с игнорированием сигналов потери связи.
nproc Выводит число доступных процессоров.
od Утилита для вывода дампа файла в разных форматах.
open Запускает приложение/документ из командной строки. (специфичное для Haiku)

P - S

package Creates, inspects, or extracts a Haiku package.
package_repo Creates or inspects a Haiku package repository file.
passwd Изменяет пароль пользователя.
paste Печатает строки, состоящие из соответствующих строк из каждого файла, разделенных знаками табуляции.
patch Применяет diff файл на оригинал.
pathchk Диагностирует неверные или непереносимые имена файлов.
pc Калькулятор программиста
ping Отправляет ICMP-эхо-запрос сетевому хосту.
pkg-config Analyzes and configures a Haiku package.
pkgman Manages packages and package repositories.
play Воспроизводит трек с CD.
pr Разбивает на страници или колонки файл для печати.
printenv Выводит значение переменной среды.
printf Форматирует и выводит данные.
prio Изменяет приоритет процесса.
profile Профилировщик потоков.
ps Список запущенных процессов.
ptx Выводит упорядоченный предметный указатель.
pwd Выводит текущий каталог.
query Утилита командной строки эмулирующая функционал Tracker'a "Найти по формуле". (специфично для Haiku)
quit Завершает работу приложения.
ramdisk Creates a ramdisk. (Haiku specific)
rc Компиллятор ресурсов
readlink Выводит путь до объекта символической ссылки.
reindex Помещает атрибуты существующих файлов во вновь созданный индекс. (специфично для Haiku)
release Освобождает семафор.
renice Изменяет приоритер запущенных процессов.
rlog Выводит лог-сообщения и другую информацию о файлах RCS.
rm Удаляет файлы и директории.
rmattr Удаляет атрибут из файла. (специфично для Haiku)
rmdir Удаляет каталоги.
rmindex Удаляет индекс для атрибута. (специфично для Haiku)
roster Выводит информацию о запущенных командах.
route Выводит список сетевых маршрутов и позволяет ими управлять.
safemode Проверяет, запущена ли система в безопасном режиме.
screen_blanker Запускает очистку экрана.
screenmode Показывает/устанавливает режим работы экрана.
sdiff Отображает или производит слияние несоответствий в файлах в виде таблицы построчного сравнения.
seq Выводит последовательность чисел.
setarch Sets the environment to a specific compiler version.
setdecor Отображает/устанавливает декоратор.
settype Устанавливает MIME-тип, сигнатуру и предпочитаемое приложение для файла.
setversion Показывает версию файла.
setvolume Устанавливает уровень громкости системы.
setwep Provides WEP encryption for wireless networks.
sh См. bash.
sha1sum Отображает или проверяет контрольные суммы SHA1.
shar Создает архивы Unix.
shred Перезаписывает файл несколько раз.
shuf Печатает случайную перестановку входных строк.
shutdown Выключить компьютер.
sleep Выполняет остановку на количество указанных секунд.
sort Выводит ортированное слияние файлов.
spamdbm Классифицирует e-mail сообщение как спам или подлиное.
split Разбивает входные файлы на куски фиксированного размера.
stat Отображает статут файла либо файловой системы.
strace Трассирует системные выозвы потока или команды.
stty Отображает/устанавливает параметры терминала.
su Смена действующего пользователя и группы.
sum Выводит контрольную сумму и количество блоков для каждого файла.
sync Форсирует запись измененных блоков на диск, обновляет суперблок.
sysinfo Выводит системную информацию.

T - Z

tac Выводит содержимое файлов в обратном порядке.
tail Выводит последние 10 линий файла.
tcpdump Выводит дамп сетевого трафика.
tcptester [устаревшее]
tee Пишет или добавляет данные из стандартного ввода в файл.
telnet Пользовательский интерфейс для протокола telnet.
telnetd Telnet-демон
test Возвращает правда/ложь после сравнения элементов.
timeout Запускает команду и принудительно завершает ее, если она продолжает работу после истечения указанного количества секунд.
top Отображает запущенные нити и загрузку ЦП.
touch Изменяет метку времени файла.
tput Инициализирует терминал или запрос в базу данных terminfo.
tr Переводит, сжимает и/или удаляет символы со стандартного ввода.
traceroute Печатает маршрут пакетов , принятых через сеть.
translate Преобразует формат файла, используя DataTranslators.
trash Отправляет файлы в корзину или восстанавливает их.
true Ничего не делает, обозначает "удачу" и возвращает величину "0".
truncate Сжимает или расширяет размер файла.
tsort Производит топологическую сортировку.
tty Печатает имя файла терминала, подключенного к стандартному вводу.
uname Выводит информацио о системе.
unchop Воссоздает файлы, разделенные ранее с помощью chop.
unexpand Преобразует пробелы в табуляцию.
uniq Фильтрует соседние совпадающие строки из ввода, записывает в вывод.
unlink Вызывает функцию unlink для удаления указанного файла.
unmount Отключает том.
unrar Распаковывает архив rar.
unshar Распаковывает архив shar.
untrash См. trash.
unzip Распаковывает архив zip.
unzipsfx Используется для преобразования существующего zip-архива в самораспаковывающийся архив.
updatedb Обновляет базу данных локализации.
uptime Выводит дату и время, а так же время, прошедшее с момента запуска системы.
urlwrapper Обертывает URL и MIME типы для командной строки или других приложение, не поддерживающих их напрямую.
useradd Создаёт нового пользователя.
uudecode Раскодирует файл, закодированный uuencode.
uuencode Кодирует файл в uuencode для отправки по электронной почте.
vdir Выводит информацию о файлах.
version Возвращает версию файла.
vmstat Выводит информацию о виртуальной файловой системе.
waitfor Ждет пояления некотого процесса (нити). (специфично для Haiku)
watch Периодически выполяет программу.
wc Выводит количество абзацев, слов и символов (байт) в файле.
wget Инструмент для скачивания файлов через HTTP, HTTPS или FTP
which Находит команду.
whoami Выводит имя пользователя, связанного с текущим действующим ID пользователя.
xargs Собирает и выполняет командные строки со стандартного ввода.
xres Перечисляет и управляет ресурсами.
yes Многократно выводит строку, пока не будет принудительно завершена.
zcat Тоже самое что и gzip.
zcmp См. zdiff.
zdiff Сравнивает сжатые файлы.
zforce Форсирует '.gz' расширение для файлов gzip.
zgrep Поиск в сжатых файлах с использованием регулярных выражений.
zip Добавляет или заменяет элементы в zip-архиве.
zipcloak Шифрует все незашифрованные элементы в zip-архиве.
zipgrep Ищет в zip-файлах строку или шаблон.
zipinfo См. unzip.
zipnote Выводит комментарий к zip-файлу.
zipsplit Разделяет zip-архив на несколько мелких кусков.
zmore Как и more только оперирует несжатым содержимым в любом сжатом файле.
znew Перепаковывает файлы .Z в формат архивов .gz (gzip).

www.haiku-os.org

Внутренний язык программирования 1С 8.3 для начинающих программистов: условная команда в 1С

Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными.

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Внутренний язык программирования 1С 8.3 для начинающих программистов: условная команда в 1С

Автор уроков и преподаватель школы: Владимир Милькин

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

В этом уроке мы разберемся зачем эти логические выражения вообще нужны и научимся применять их на практике.

А понадобятся они нам при изучении новой команды языка программирования 1С, которая называется Условная команда.

Условная команда

Если коротко, то правила и суть этой команды можно представить так:

Более подробно:

  1. Частью условной команды являются следующие три слова: Если, Тогда и КонецЕсли.
  2. Между словами Если и Тогда всегда находится некоторое логическое выражение, которое принимает значение Истина или Ложь (логические выражения уже должны быть вам понятны по предыдущим урокам, если это не так - изучите их повторно).
  3. Между словами Тогда и КонецЕсли может находиться любое количество команд компьютеру (например Сообщить, ВвестиЧисло, ОткрытьЗначение и другие).
  4. И, наконец, самое главное: команды компьютеру, заключенные между словами Тогда и КонецЕсли выполняются только в том случае, если логическое выражение, заключенное между Если и Тогда принимает значение Истина.

И если раньше: сколько мы написали команд - столько и выполнилось, то, с появлением условной команды, это оказывается не так. Теперь мы можем составлять условия для выполнения тех или иных команд компьютеру. Проявите терпение, скоро всё прояснится. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Приведу примеры использования условной команды с подробным объяснением.

Пример №1.

ЧислоОтПользователя = 0; ВвестиЧисло(ЧислоОтПользователя); Если (ЧислоОтПользователя < 0) Тогда ОткрытьЗначение("Вы ввели отрицательное число."); КонецЕсли;

Что делает этот код?

  1. Попытайтесь разобраться сами.
  2. Затем вставьте его в свою программу и попробуйте выполнить, вводя то положительные, то отрицательные числа.
  3. И, наконец, загляните в объяснение, чтобы узнать - верно ли вы догадались.

Объяснение

Первые две строчки вам должны быть знакомы по прошлым занятиям.

Дальше следует условная команда, условием которой является логическое выражение (ЧислоОтПользователя < 0). Если число, введенное пользователем, действительно меньше нуля, то это выражение принимает значение Истина, иначе Ложь.

Идем дальше. Между словами Тогда и КонецЕсли находится всего одна команда ОткрытьЗначение, которая, как следует из правила для условной команды, выполнится только в том случае, если  логическое выражение окажется верным.

А значит, сообщение для пользователя "Вы ввели отрицательное число" выведется только, если значение, введенное пользователем, окажется отрицательным. Иначе ничего не выведется. Что и требуется логикой программы.

Пример №2.

ИмяПользователя = ""; ВвестиСтроку(ИмяПользователя); Если (ИмяПользователя = "Александр") Тогда ОткрытьЗначение("Вас зовут Александр!"); КонецЕсли;

В этом примере мы вводим имя пользователя и, если оно равно "Александр", то выводим сообщение "Вас зовут Александр!".

Пример №3.

ИмяПользователя = ""; ВвестиСтроку(ИмяПользователя); Если (ИмяПользователя <> "Александр") Тогда ОткрытьЗначение("Ваше имя точно не Александр!"); ОткрытьЗначение("На самом деле, вас зовут " + ИмяПользователя); КонецЕсли;

В этом примере мы вводим имя пользователя и, если оно не равно "Александр", то выводим сообщение "Ваше имя точно не Александр!" и следом выводим настоящее имя пользователя.

Не правда ли здорово!? Вот так потихоньку мы научили компьютер не просто складывать и умножать. Мы дали возможность ему "думать" и принимать решения. Это, конечно, ещё не искусственный интеллект, но всё же

Продолжим разбирать примеры. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Не забывайте выполнять их на компьютере.

Пример №4.

ЧислоОтПользователя = 0; ВвестиЧисло(ЧислоОтПользователя); Если (ЧислоОтПользователя > 0) И (ЧислоОтПользователя < 10) Тогда ОткрытьЗначение("Вы ввели число между 0 и 10."); КонецЕсли;

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

Таким образом, сообщение "Вы ввели число между 0 и 10." будет выведено пользователю тогда и только тогда, когда введенное число одновременно и больше нуля и меньше десяти.

Расширенная форма условной команды

Разберём расширенную форму условной команды на примере.

Пример №5.

ЧислоОтПользователя = 0; ВвестиЧисло(ЧислоОтПользователя); Если (ЧислоОтПользователя >= 0) Тогда ОткрытьЗначение("Вы ввели положительное число."); Иначе ОткрытьЗначение("Вы ввели отрицательное число."); КонецЕсли;

Пользователь вводит число. И в случае, если введенное значение больше или равно нулю, программа выводит строку "Вы ввели положительное число", иначе "Вы ввели отрицательное число".

Запустите этот пример на компьютере несколько раз. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Вводите то положительные, то отрицательные значения. Как видите, компьютер прекрасно справляется с задачей определения знака введенного числа. И всё это благодаря использованию нами логических выражений!

А теперь пройдите тест по примеру №5, описанному выше:

Задание №18. Напишите программу, которая вводит от пользователя два числа.  Если первое число больше или равно второму, то выводит "Первое число больше или равно второму", иначе "Второе число больше первого".

helpme1c.ru

Команда (программирование) - Википедия

Материал из Википедии — свободной энциклопедии

У этого термина существуют и другие значения, см. Команда.

Кома́нда — это указание компьютерной программе действовать как некий интерпретатор для решения задачи. В более общем случае, команда — это указание некоему интерфейсу командной строки, такому как shell.

В частности, термин команда используется в языках императивного программирования. Эти языки так названы, потому что их операторы, как правило, пишутся наподобие глаголам в повелительном наклонении, используемому во многих естественных языках. Если посмотреть на оператор императивного языка как на предложение естественного языка, то команда, в общем, подобна глаголу.

Многие программы допускают использование специально отформатированных аргументов, известных как ключи, которые изменяют стандартное поведение команды, в то время как дополнительные аргументы описывают действия команды. Сравним с естественным языком: ключам соответствуют наречия, в то время как иным аргументам — дополнения.

Примеры[ | ]

Ниже приводятся несколько команд для интерпретатора командной строки операционной системы UNIX (UNIX shell).

Команда cd изменяет расположение пользователя в дереве каталогов с текущего на каталог /home/pete. Команда echo выводит текст hello в поток стандартного вывода, который, в этом случае, напечатает этот текст на экране. Кавычки (заметьте: не такие, какие приняты в Википедии) необходимы для вывода нескольких слов, разделённых пробелами, однако всё зависит от конкретной реализации команды: возможен вывод нескольких слов даже без кавычек; возможно восприятие кавычек в качестве аргумента команды, то есть вывод текста вместе с ними. Команда ls выводит список всех файлов каталога /bin в полном виде (ключ -l), отсортированных по времени (ключ -t) в обратном порядке (ключ -r). Команда chmod используется для предоставления доступа на чтение, запись или выполнение к файлу с именем filename. В символьной записи первая цифра указывает на права пользователя, в то время как остальные две цифры используются для указания прав групп пользователей на чтение, запись или выполнение Вашего файла. 1 — доступ к Вашему файлу на выполнение, 2 — доступ к Вашему файлу на запись, 4 — доступ к Вашему файлу на чтение. 4+1=5 означает, что к Вашему файлу имеется только доступ на чтение и выполнение, 4+2+1=7 означает, что к Вашему файлу имеется доступ на чтение, на запись и на выполнение.

См. также[ | ]

encyclopaedia.bid

Урок 1. Программирование. Общее представление

Программа, язык программирования, программист

Для чего необходим компьютер? Ответить на этот вопрос можно по разному. Если попытаться сделать это как можно короче, то получится, что компьютер предназначен для хранения и обработки информации. В свою очередь, под информацией можно понимать почти всё, что угодно. Информацией могут быть символы, буквы, коды, слова, рисунки, звуки, видео...

С хранением информации должно быть все боле менее понятно: у компьютера есть память разного рода, куда записывается в определенном виде информация и в дальнейшем хранится там. А вот что касается ее обработки... Как же компьютер принимает решения о том, что делать с информацией? Никак и не принимает! Он ведь робот, послушная машина, он делает только то, что «скажет» (запишет в компьютерную память) человек.

Именно человек управляет поведением машин, которые лишь послушные, четкие, быстрые исполнители наших пожеланий. В быстроте, отсутствии усталости (в нашем понимании), почти безошибочности выполнения команд заключается преимущество вычислительных машин. Однако самым важным преимуществом является то, что команды человека можно записать в компьютерную память и оставить их выполнение на "потом"; кроме того, выполнять неограниченное количество раз. Итак, компьютеры не умнее людей; у машин нет желаний, творческого подхода, они самостоятельно не могут планировать свою деятельность. Чтобы компьютер что-то сделал, ему нужно руководство человека.

Как человек руководит компьютером или роботом? Составляет так называемые программы на понятном компьютеру языке (языке программирования) и закладывает их в его память. Затем, когда человеку потребуется, он командует компьютеру выполнить ту или иную программу.

Программа представляет собой набор команд, которые машина должна выполнить в определенной последовательности. При этом подразумевается, что будет достигнута та или иная цель, которую планировал человек.

Запустить программу на выполнение может любой человек. Для этого обычно бывает достаточно нажать какую-нибудь специальную кнопку или открыть определенный файл. Знаний при этом может быть минимум. Достаточно того, чтобы человек просто знал, что программа делает и как с ней работать. Такой гражданин называется пользователем. А вот чтобы написать программу (последовательность команд) на понятном компьютеру языке, нужно специальное образование, в результате которого получается так называемый программист. Именно профессиональные программисты умеют писать программы для вычислительных машин. Эти программы решают очень много разных задач. Обычному пользователю достаточно лишь знать, какая программа решает какую задачу. Ему вовсе не обязательно знать, как программа руководит компьютером, чтобы выполнить задачу, т.к. это знание - обязанность программиста.

Среда KTurtle и язык программирования Logo (Лого)

Мы с вами как начинающие программисты будем учиться составлять программы. Но поскольку мы только начинающие программисты, то и делать это будем немного "по игрушечному". Нашим исполнителем будет не настоящий компьютер (или робот), а маленькая черепашка. Это робот-черепашка, он послушный и всегда готовый к работе. От нас же требуется познакомиться с тем, как им можно командовать. Этому и будут посвящены уроки.

Сначала стоит познакомиться со средой обитания робота-черепахи. Средой является приложение (большая программа, которую написал взрослый программист) под названием KTurtle. Если вы еще не знаете, то "turtle" с английского переводится как "черепаха". Буква K впереди обозначает то, что это приложение предназначено для рабочего стола KDE для Linux.

Среда — это еще не язык программирования. Среда всего лишь создает удобное место для работы программиста и наблюдения за поведением программы. Язык программирования — это более важный компонент. Именно на нем мы "говорим" с компьютером; в нашем случае мы говорим с роботом-черепахой. Языком программирования поведения черепахи является язык Logo (или Лого - по-русски). Этот язык специально был придуман для обучения детей программированию. Команды на языке Logo могут быть как английскими, так и русскоязычными (а также французскими и др.).

Вот так выглядит приложение KTurtle сразу после запуска:

Почти всё, что умеет делать зеленая черепашка, - это бегать по холсту и рисовать на нём разным цветом, а также считать и писать. Вот такой вот нам достался незатейливый робот-исполнитель. С другой стороны, нам пока научиться управлять хотя бы им, а дальше уж дело пойдёт.

Команды на языке программирования Logo пишут в специально предназначенном для этого поле (редакторе кода). Передают их на выполнение черепахе с помощью специальной кнопки Выполнить, расположенной на панели инструментов.

После этого черепашка будет выполнять команды, написанной нами программы, а мы на холсте будем видеть результаты этого выполнения.

Вопросы и задания

  1. Что вы узнали из данного урока? Подготовьте пересказ на тему «Кто такие программисты и зачем они нужны».
  2. Может ли один и тот же человек выступать в роли и программиста и пользователя? Приведите примеры.
  3. Запустите приложение KTurtle. Расскажите, как вы будете работать в нем.
  4. Протестируйте работу приложения KTurtle. Для этого напишите в редакторе кода приведенные ниже две команды и передайте их черепахе на выполнение. Что произошло? Попытайтесь объяснить.
напиши ”Привет, мир!” вперёд 100

 

Дополнительная информация: Алгоритм и его свойства.

younglinux.info

Психология программирования в команде / Хабр

Когда над одним и тем же проектом (кодом) работает несколько людей, процесс разработки ПО начинает значительно отличаться. С этим фактом нельзя не согласиться. Вступает в действие целый ряд дополнительных факторов. Общим результатом является понижение скорости разработки, а иногда может понизиться и качество разрабатываемого ПО.

Как же быть тогда? Ведь есть проекты, которые в одиночку написать невозможно. В этой статье я попытаюсь показать один психологический аспект работы в команде программистов. Я вас вооружу некоторыми теоретическими знаниями, благодаря которым вы сможете повысить эффективность программистов и их общий эмоциональный фон.

С чем же связано снижение эффективности и качества ПО?
Факторы снижения эффективности программистов можно поделить на объективные и субъективные.Как я понимаю эти 2 термина

Объективные — это нечто, что не зависит от точки восприятия… Своего рода константы, которые не меняют своего значения, под каким углом ты на них не смотри. А вот субъективные факторы — это те, которые зависят от точки восприятия.

Субъективные факторы влияния на эффективность
Отбрасывая банальную межличностную неприязнь, предположим, что в нашей ситуации мы имеем коллектив из нескольких программистов с достаточным уровнем эмоционального взаимопонимания и уважения. Тем не менее, даже в таком коллективе могут быть проблемы.

Дело в том, что программист развивает чувство собственности к коду. Ведь код — это нечто, что он создал, и это нечто осязаемое (его видно на экране монитора). Программист может воспринимать код, как предмет (это я написал этот код) и как пространство (когда у меня в редакторе открыт этот код, я чувствую себя уютно). Таким образом код может быть «моим», «не моим» точно так же, как и стул или как комната. Это мой стул, и я на нем сижу (я написал этот код). Это стул Васи, и Вася им пользуется, и мне на нем сидеть эмоционально неудобно (Вася написал этот код).

Я хочу подчеркнуть, что мы сейчас говорим о субъективной самоидентификации программиста с кодом, который он видит на своем экране.

Программист, работая, может ощущать что этот код «его» или «не его». Эта самоидентификация с кодом довольно важна. Если человек считает, что код «его», то он:

  • не будет ощущать отторжения (нечто вроде «свое говнецо не так сильно воняет»)
  • общее эмоциональное ощущение программиста будет приподнято. Он будет ощущать себя в зоне комфорта и «у себя дома» (подумайте как он себя будет ощущать, работая с «чужим» кодом… 8 часов в день… несколько месяцев подряд)
  • у него возникнет чувство хозяина и владельца (еще примитивнее: чувство вожака, все-таки в основном программисты — мужчины). Эти чувства провоцируют мужчину к проявлению инициативы, ответственности и проактивной позиции по отношению к объекту собственности (к коду, в нашем случае)
  • в «моем» коде не страшно делать рефакторинг. Нечто вроде «это моя собственность, и я делаю с ней все, что хочу»
  • дорабатывая «свой» код, программист сделает ровно столько изменений в коде, сколько нужно для внесения необходимых корректировок и поддержания архитектуры кода. А вот если код был бы «чужим», то программист скорее всего постарался бы внести минимум необходимых изменений. Добавляя функционал, но не поддерживая архитектуру, он скорее всего «прилепил» бы новый функционал сбоку к уже существующему.
  • людям свойственно осторожничать в чужом/новом месте: если от программиста потребуется внести существенные изменения в «чужой» код, то он потратит много времени на ознакомление с кодом (попытается сделать этот код «своим») и банально будет ощущать себя более скованным в эмоциональном плане, внося нужные изменения. В худшем случае он просто «прилепит» свой код к уже существующему (см. предыдущий пункт)
  • правя «чужой» код, мы эмоционально затрагиваем его владельца. Сознательно или подсознательно, но программисты признают право собственности других программистов на участки кода точно так же, как в семье за обеденным столом негласно признается место за каждым членом семьи. Сознательно садясь на «чужой» стул за столом, вы ощущаете дискомфорт из-за оказанного эмоционального влияния на «владельца» стула.
Также, отдельно замечу, что мы сейчас говорим о правках в коде. Чтение кода и особенно использование (вызов «чужих» функций) не влияет на эмоциональное состояние программистов.
Объективные факторы
Есть еще и объективная составляющая: может быть так, что программист знает этот код, или не знает этот код. Под «знать код» я подразумеваю помнить названия функций и что они делают. Не трудно заметить, что эти знания действительно объективны — они либо есть, либо нет, и не важно как себя ощущает наш бедный подопытный программист. Для того, чтобы внести правильные изменения в код, человек должен объективно знать его.
Конкретика и постановка задачи
Что же имеем? Теоретическое идеальное состояние для проекта было бы: все программисты объективно знают весь код и все программисты считают весь код «своим». Но скажите мне, пожалуйста, может у одной зубной щетки быть 2 хозяина? К сожалению, нет. Любой программист «трогая», внося изменения в код, делает этот код более «чужим» в глазах автора кода («текущего» владельца).Цель: каждый программист должен работать (максимум возможного времени) с кодом, который он знает, и который он считает «своим». Вот такого результата уже возможно добиться.
Решение задачи
В процессе разработки ПО объективные знания о проекте и субъективные самоидентификации программистов к коду будут меняться. Нашей задачей будет влиять на распределение знаний и чувств собственности с тем, чтобы поддерживать поставленную в прошлом абзаце цель. Чем больше программист знает о проекте или чем больше кода он считает «своим» — тем лучше. Кашу маслом не испортишь. Понижать эти вещи нам не за чем, а вот повышать всегда полезно. Другое дело, что повышение этих факторов отнимает время у наших программистов. И тут уже встает вопрос рационализации: программисты могут тратить 2 ч в день на знакомство со своим проектом и 2 ч в день на повышение чувства собственности… Но ведь тогда у них будет лишь 4 ч в день на продуктивную работу :(. Прежде чем мы перейдем к вопросам рационализации, давайте рассмотрим рычаги влияния. Для повышения объективных знаний о коде подходят:
  • самый проверенный способ — быть автором кода :)
  • любая письменная документация о коде
  • устные и письменные коммуникации между программистами
Для повышения чувства собственности по отношению к коду подходят следующие методы:
  • опять же, способ №1 — быть автором кода
  • объективные знания о коде. Все-таки проще признать за «свое» ту вещь, в работе которой ты хотя бы разбираешься
  • code reviews — когда автор кода показывает код и советуется с другим программистом, этот другой программист оказывает влияние на код (возможно даже некоторые его советы попадут в код). Своеобразно, автор «знакомит» второго программиста с кодом и возникает некоторого рода собственность «наше».
  • придерживание стандартов оформления кода повышает чувство собственности «мое» среди всех членов команды, но тут есть свои оговорки (о них ниже)
Отдельный абзац о стандартах оформления кода (еще один способ повышения чувства собственности, просто слишком длинный)
Стандарты оформления кода (какие бы они не были) в основном преследуют цель унификации внешнего вида кода. Так они облегчают чтение кода, и так же они способствуют повышению самоидентификации программиста с этим кодом, даже если он его первый раз видит. Как думает программистО! Написано так, как будто я писал илиО! Смотри, а он тоже жигулевское пиво любит, и диван у него такой же мягкий как у меня дома! Мне здесь уютно! Но не тут-то было. Код может быть оформлен идентично, но вот логика, которой следует код, будет отличаться от той, которую использовал бы наш подопытный программист (наш программист тут бы использовал while цикл, а в коде написан foreach). Эти разницы между логикой кода и логикой того, кто читает этот код, и приводят к тому, что чувство собственности в итоге не создается. Вот поэтому требования к оформлению кода не дают полного ожидаемого результата с одной стороны, с другой стороны они в определенной мере сковывают свободу программистов и добавляют еще один слой бюрократии.

Одним из решений было бы заставить всех программистов думать одной и той же логикой, насаждать одну и единственно правильную логику (или детализировать требования к оформлению кода вплоть до того, когда использовать while, а когда использовать foreach). Но ведь это утопия. К тому же, все люди разные, и зачем «клонировать» 10 программистов под копирку. Лучше культивировать взаимопонимание среди программистов и помогать им знакомиться с логикой своих коллег-программистов. В частности, code reviews, могут весьма хорошо заставить программистов узнать логику друг друга. Волшебство code review в том, что программисту Васе достается в руки код, написанный программистом Петей, но Вася не должен ничего в нем править. Он лишь изучает труд Пети и после этого рассказывает Пете свои мысли (Вася предлагает Пете что-то изменить в обеденном стуле Пети, но сам стул не трогает). Пока Вася и Петя общаются, они успевают понять как и что обоим из них нравится. Таким образом в будущем Вася, видя код Пети, уже будет ощущать себя намного уютнее, зная логику Пети.

Вопросы рационализации
Как же найти баланс между тем, чтобы программисты продолжали развитие проекта, но в тоже время всегда работали над кодом, который они чувствуют «своим»? Ответ на такой вопрос будет очень сильно зависеть от контекста. Я вам лишь покажу 2 самых радикальных метода, и вряд ли эти 2 крайности когда-либо будут уместны для использования в живой ситуации, скорее вам нужно будет найти баланс между этими 2 противоположностями.
Способ №1. Разделение ответственности и «личные комнатушки»
Если специфика вашего проекта позволяет:
  • четко разбить проект на несколько подзадач, практически невзаимосвязанных друг с другом
  • иметь незаменимых программистов (если программист уйдет, то проект разрушится или очень сильно пострадает),
то дайте вашим программистам маленькие норки, где они будут единственными хозяевами ситуации. Вам нужно будет лишь четко условиться о том, как эти «норки» будут взаимодействовать друг с другом, а внутреннюю реализацию каждой норки возьмет на себя ее «хозяин» (ответственный программист). Это довольно радикальный подход, и поэтому он обладает довольно существенными недостатками:
  • у вас будут незаменяемые программисты (если хозяин норки уйдет, то сопровождать эту норку кому-то другому будет трудно)
  • если все, кроме одной «норки», будут готовы, то уже завершившие работу программисты не смогут толком помочь программисту, который отстал от графика, т.к. не знают специфики «норки» и скорее лишь будут раздражать программиста
Плюсы:
  • можно обойтись без документации внутри-норковых процессов. Т.к. одну норку поддерживает один программист, то он все это может удержать у себя в голове
  • программисты практически не тратят время на коммуникацию
Способ №2. Форум
Форум — площадь для массового общения. Так же и ваше ПО можно превратить в площадь для массового общения, когда все будут знать все части проекта и будут очень плотно взаимодействовать друг с другом. Плюсы и минусы этого метода — это, практически, инверсия плюсов метода «личных норок».
Заключение
Помимо правильного распределения программистов и коммуникации между ними, так же еще важно брать во внимание способ менеджмента и развития проекта. Ожидается ли часто менять вектор развития и часто менять текущие задачи проекта? Зрелый ли это проект? Берите во внимание особенности ваших программистов, может быть среди них есть гений, но он просто-напросто под громадным количеством бюрократии не может разогнаться и взлететь ввысь? Насколько вы уверенны в ответственности ваших программистов и в том, что они не уйдут от вас на полпути? Думайте и решайте.

habr.com