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

Это начинается с того, как мы обучаем Solidity новых разработчиков. Во-первых, мы объясним Биткойн, Эфириум, блокчейн и смарт-контракты. Затем мы показываем им смарт-контракт SimpleStorage. Все это имеет смысл, пока мы не начнем добавлять в смесь Javascript. Мы начинаем объяснять web3 и как создать графический интерфейс SimpleStorage.

Что случилось? Пытаемся ли мы научить разработке смарт-контрактов или как создавать графические интерфейсы? Представьте, что вы пытаетесь изучить Solidity как свой первый язык программирования, а затем вам говорят, что вы тоже должны знать Javascript. Это будет вызывать у меня кошмары.

Solidity постоянно рассматривается как язык второго сорта.

Это проблема не только для новичков. Опытные разработчики тратят недели на обучение, прежде чем написать единый смарт-контракт. Вместо изучения Solidity они тратят свое время на отладку проблем web3.

Лично я потратил больше месяца, пытаясь интегрировать инструменты разработки Ethereum с моей интерфейсной средой React / webpack. Проект за проектом Я все время натыкался на стены, которых не совсем понимал. Так было до тех пор, пока я не осознал, что только что потратил недели на свой инструментарий без каких-либо смарт-контрактов, которые можно было бы показать (поговорим об усталости инструмента Javascript). Попытка связать среду разработки Solidity с моим интерфейсом Javascript не принесла мне ничего, кроме боли.

Объединение наших сред Javascript и Solidity также вызывает проблемы с документацией. Большинство наших руководств по Solidity на самом деле не охватывают языковые функции. Вместо этого они сосредоточены на инструментах интеграции Javascript, которые находятся в постоянном движении. Мы документируем абстракции высокого уровня вместо основных функций. Это похоже на жизнь в мире, где Angular.js документирован лучше, чем Javascript.

Поскольку яркие графические интерфейсы обеспечивают отличную прессу, а интерфейсы командной строки только вызывают восторг у пользователей Vim, разработчики Ethereum сосредоточились на интерфейсах. Поэтому естественно, что мы добавляем смарт-контракты к нашим рабочим процессам внешнего интерфейса Javascript. Мы просто кидаем файлы .sol в каталог / контракты и прекращаем работу. Но эта стратегия не масштабируется. Чтобы децентрализованные приложения вышли из фазы прототипа, нам потребуются зрелые инструменты, которые уменьшают сложность больших систем смарт-контрактов.

Есть еще надежда

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

  1. Учебные ресурсы по Solidity: более подробные учебные ресурсы, посвященные Solidity. Это может быть приложение Hello World, которое выводит на консоль «Hello World» с помощью событий. Наличие руководств, охватывающих основы Solidity, вплоть до сложных шаблонов проектирования, творит чудеса для нашего сообщества.
  2. Менеджер пакетов Solidity: все смарт-контракты в Ethereum выполняются в рамках общей среды выполнения. Это дает большие возможности для повторного использования кода, но почему-то у нас все еще нет хорошего менеджера пакетов. npm предоставил сообществу Javascript возможность делиться и повторно использовать код. Экосистеме разработки Solidity нужен аналог.
  3. Модульное тестирование на твердость. Обычной практикой является тестирование контрактов с помощью библиотек тестирования Javascript. Эта практика вводит неявные зависимости (например, возможность подключения RPC), требует переключения контекста и трудна для разработчиков, не использующих Javascript. Вместо этого для надежных модульных тестов нам нужны мощные среды модульного тестирования Solidity. Нам нужен чай и мокко для солидности.

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

Наша экосистема уже созревает. Но если бы мы перестали использовать Javascript в качестве костыля, все было бы намного быстрее. Мы бы смягчили кривую обучения, расширили возможности разработчиков и продвинули бы нашу экосистему вперед. Тот факт, что Solidity ограничен в ресурсах, не означает, что его следует рассматривать как язык второго сорта. Если компьютер Ethereum собирается изменить мир, ему потребуется самая динамичная экосистема разработчиков, поддерживающая его.

Давайте откажемся от использования Javascript, например точек с запятой, и перейдем на новый уровень Solidity.

Первоначально опубликовано на сайте karl.tech 25 апреля 2016 г.