С другой стороны, с облачными вычислениями связаны непростые вопросы конфиденциальности и безопасности. Кому принадлежат данные, хранящиеся в облаке? Кто имеет к ним доступ и на каких условиях? Существует ли какая-либо ответственность в случае неумышленного разглашения информации? Как поступают с аккаунтами умерших людей? Кто может принудить раскрыть данные? Например, в каких ситуациях ваш поставщик почтовых услуг (добровольно или под угрозой иска) может переда
Важная часть реального программирования – тестирование. Компании-разработчики ПО, надеясь выявить как можно больше ошибок перед отправкой продукта пользователям, часто пишут больше тестов, чем кода, и у них работает больше тестировщиков, чем программистов. В целом можно достичь состояния, когда ошибки встречаются хотя бы нечасто, пусть это и сложно.
Ошибки встречаются в программах любого масштаба: при определенных обстоятельствах они будут что-то делать неправильно или выдавать неверные ответы. Эти недостатки называются «багами», то есть «жуками», и первое употребление термина часто приписывают Грейс Хоппер, которая упоминалась выше. В 1947 году ее коллеги обнаружили настоящего жука (дохлую моль) в механическом компьютере «Марк II», с которым они работали, и Хоппер, по-видимому, сказала, что они «очищали [машину] от жуков» (англ, debugging), то есть занимались отладкой.
Сервисы, предоставляемые библиотекой функций, описываются для программистов в терминах API (Application Programming Interface), то есть программного интерфейса прикладных задач. В нем перечисляются сами функции и то, что они выполняют, указывается, как их использовать в программе, какие входные данные требуются и какие значения они выдают. В API также могут описываться структуры данных (организация данных, передающихся назад и вперед) и еще всякая всячина, которая совместно определяет, как именно программист должен обращаться к сервисам и что будет вычислено в качестве результата. Здесь нужна подробная и точная спецификация, потому что в конечном счете программу будет интерпретировать тупой прямолинейный компьютер, а не дружелюбный и сговорчивый человек.
API включает в себя не только описание синтаксических требований, но и вспомогательную документацию, благодаря которой программисты эффективно используют систему. Современные крупные комплексы часто включают в себя SDK (Software Development Kit), то есть пакет средств разработки ПО, чтобы люди могли ориентироваться во все более замысловатых программных библиотеках.
Проще говоря, ЯП обеспечивают функциональный механизм, с помощью которого один программист пишет код для выполнения полезной операции, а затем упаковывает его в такую форму, что другой разработчик может использовать этот код в своей программе, даже не зная, как именно он действует.
Большая часть работы заключается в том, чтобы разобраться в этих компонентах и склеить их по-своему. Естественно, такие элементы опираются на другие, более простые и базовые, часто в несколько слоев. Ну, а фундаментом служит ОС – программа, которая управляет оборудованием и контролирует все, что происходит.