Всем привет, я жареная рыба.
Все обычно используют язык Go, а в прошлом уже были C, C++, Java и PHP. Почему большие ребята из Google разрабатывают новый язык?
Можно ли сделать колеса, а другими языками не пахнет?
задний план
Язык программирования Go был задуман в конце 2007 года для решения некоторых проблем, возникающих при разработке программной инфраструктуры в Google.
Три человека на картинке — первые разработчики языка Go, и все они очень влиятельны.
- Роберт Гриземер: Участвовал в разработке движка Google V8 JavaScript и виртуальной машины Java HotSpot.
- Роб Пайк: Один из первых разработчиков операционной системы Unix, один из основателей UTF-8 и дизайнер талисмана языка Go — невестка Роба Пайка.
- Кен Томпсон: лауреат премии Тьюринга, один из первых разработчиков операционной системы Unix, один из основателей UTF-8 и разработчик языка C (бывший язык B).
возникшие проблемы
В первых интервью боссы Google считали «программирование» слишком трудоемким, им не очень нравился C++, их раздражали язык и среда, которые они использовали в своей работе, и они были полны многих функций, которых не было. очень прост в использовании.
возникшие конкретные проблемы. следующее:
- Сложное программное обеспечение: проблемы, вызванные многоядерными процессорами, сетевыми системами, крупномасштабными вычислительными кластерами и моделями сетевого программирования, можно обойти только временно и не решить в лоб.
- Масштаб программного обеспечения: Масштаб программного обеспечения также изменился, сегодняшние серверные программы состоят из десятков миллионов строк кода, над ними работают сотни или даже тысячи программистов, и они обновляются каждый день (говорят, что Go ждет 45 минут для компиляции). вне).
- Время компиляции: в больших кластерах компиляции время сборки также составляет минуты или даже часы.
цель дизайна
Для достижения вышеуказанных целей при преобразовании существующего языка необходимо решить множество фундаментальных проблем, поэтому требуется новый язык.
Новый язык должен отвечать следующим требованиям:
- Цель:Go был спроектирован и разработан для продуктивной работы в этой среде..
- Дизайн: В дизайне Go, за исключением более известных аспектов: таких как встроенный параллелизм и сборка мусора. Также учитываются: строгое управление зависимостями, адаптируемость архитектуры программного обеспечения по мере развития системы и устойчивость между компонентами.
Этот новый язык теперь Go.
Перейти в Google
Go — это язык программирования, разработанный Google, чтобы помочь решить проблемы Google, а проблемы Google огромны.
В целом прикладное программное обеспечение Google огромно, а аппаратное обеспечение огромно, с миллионами строк программного обеспечения, сервер в основном использует язык C++, а другие части - много Java и Python.
Тысячи инженеров работают над кодом в «голове» единого дерева, состоящего из всего программного обеспечения, поэтому каждый день на всех уровнях этого дерева вносятся серьезные изменения.
Большая специализированная распределенная система сборки делает разработку такого масштаба осуществимой, но она все еще велика.
Конечно, все это программное обеспечение работает на миллиардах машин, которые рассматриваются как небольшое количество независимых объединенных в сеть вычислительных кластеров.
Короче говоря, разработка Google велика, может быть медленной и часто громоздкой. Но это работает.
Цель проекта Go: устранить медлительность и неуклюжесть разработки программного обеспечения Google, тем самым сделав процесс более продуктивным и масштабируемым.Этот язык был разработан людьми и для людей, которые пишут, читают, отлаживают и поддерживают большие программные системы..
Таким образом, цель Go — не изучение дизайна языка программирования, а улучшение рабочей среды его разработчиков и их коллег.
Go больше связан с разработкой программного обеспечения, чем с изучением языков программирования. Или, другими словами, это разработка языка для разработки программного обеспечения.
Болевые точки
Когда Go был выпущен, некоторые люди утверждали, что ему не хватает определенных функций или методов, которые считались необходимыми для современного языка. Какая ценность может быть у Go при отсутствии этих возможностей?
Наш ответ: в Go есть функции, которые решают проблемы, затрудняющие крупномасштабную разработку программного обеспечения.
Эти вопросы включают в себя:
- Сборка медленная.
- Неконтролируемые зависимости.
- Каждый программист использует разное подмножество языков.
- Плохое понимание программы (плохая читаемость кода, неполная документация и т.п.).
- Повторяемость работы.
- Стоимость обновления.
- Перекос версии.
- Сложности с написанием автоинструментов.
- Построение кросс-языка.
Одна-единственная функция чистого языка не решает этих проблем, и нам необходимо взглянуть на разработку программного обеспечения шире. Поэтому при разработке Go мы старались сосредоточиться на решениях этих проблем.
Суммировать
Программная инженерия руководила разработкой Go.
В отличие от большинства языков программирования общего назначения, Go был разработан для решения ряда проблем разработки программного обеспечения, с которыми мы сталкиваемся при создании большого серверного программного обеспечения. Это может сделать звучание Го довольно скучным и индустриальным.
Но на самом деле акцент на ясности, простоте и компоновке на протяжении всего процесса проектирования вместо этого привел к созданию эффективного, забавного языка, который многие программисты сочли выразительным и мощным.
Результирующие функции Go для этого включают:
- Очистить зависимости.
- Четкий синтаксис.
- четкая семантика.
- Композиция относительно наследования.
- Простота, обеспечиваемая моделью программирования (сборка мусора, параллелизм).
- Простые инструменты (Go tools, gofmt, godoc, gofix).
Вот почему был разработан Go, и почему появились такие дизайны и функции.
Вы научились этому? :)
Если у вас есть какие-либо вопросы, пожалуйста, оставьте отзыв и обменяйтесь мнениями в области комментариев.Лучшие отношения - это достигать друг друга, твойкакэтожареная рыбаСамая большая мотивация для творчества, спасибо за поддержку.
Статья постоянно обновляется, вы можете прочитать ее в WeChat, выполнив поиск по запросу [Brain Fried Fish], эта статьяGitHub GitHub.com/Vicious Genetics/Нет...Он был включен, вы можете посмотреть его, чтобы выучить язык GoИди изучай карты и маршруты, Добро пожаловать в Star, чтобы призвать вас к обновлению.
Ссылаться на
- Перевод и редактирование»Go at Google: Language Design in the Service of Software Engineering》