Переполнение стека как услуга

Ответы на сомнительное программирование

Эта статья предназначена исключительно для Pointer - клуба чтения для разработчиков.

Подпишитесь на Pointer.io на нашу еженедельную рассылку.

В жизни программирования все чаще встречается тот факт, что разработчики опрашивают сообщество и используют полученные ответы непосредственно в своем собственном коде. В частности, программисты используют такие сайты, как Stack Overflow, чтобы задавать вопросы. Что еще более важно, большинство программистов просто используют ранее заданные вопросы и копируют / вставляют опубликованные ответы. Эта новая захватывающая методология называется разработкой, управляемой переполнением стека (SODD). Некоторые консультанты по обучению технологиям даже предлагают полный пакет, который обучает формальному процессу, который называется Stack Overflow Driven Development, Official (SODD Off.).

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

Тем не менее, копировать код намного проще, чем зарабатывать себе на жизнь. И эта социальная сеть не будет читать сама себя, не так ли? Так что вы все равно будете копировать / вставлять. Если он компилируется, он должен работать, верно? Кроме того, разве не является правильным кодом все те утомительные тесты, которые вы написали (или скопировали и вставили)?

Но есть еще один аспект SODD, который по-прежнему утомителен и подвержен ошибкам: копирование и вставка. Во-первых, вам нужно прокрутить страницу вниз, чтобы просмотреть различные ответы. Затем вам нужно найти рассматриваемый код, который, по вашему мнению, может помочь. Затем вам нужно с трудом щелкнуть и перетащить соответствующий текст и скопировать его. Наконец, вы должны вернуться в свою среду IDE и вставить ее в свой код, прежде чем отправлять полученный беспорядок в исходный репозиторий (компиляция и тестирование, конечно, необязательны).

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

Я хотел бы представить новую библиотеку / API, которую я называю Stack Overflow as a Service, или SOaaS. Эта библиотека позволяет вам использовать ответы Stack Overflow во время выполнения для выполнения любой задачи, которую должен был выполнять ваш код. Больше не нужно просматривать сайт, пытаясь найти правильный вопрос, или читать ответы, чтобы выяснить, какой из них лучший. Просто позвольте Stack Overflow сделать это за вас.

Вот как это работает: Stack Overflow уже имеет понятие «правильность» в схеме голосования толпой. У него также есть мера того, насколько хорош или полезен ответ или даже вопрос, по голосам, поданным его многочисленными членами. Все мы, живущие в демократических странах, знаем, что механизмы всенародного голосования всегда приводят к наилучшему результату. Точно так же голосование за переполнение стека, очевидно, определяет лучшие и самые важные ответы на любой заданный вопрос. Таким образом, вы можете положиться на эту информацию, чтобы помочь своему кодексу, точно так же, как граждане полагаются на свои идеальные, избранные правительства, которые всегда будут поступать правильно.

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

Давайте посмотрим на простой пример. Здесь программист хочет написать приложение Hello World на Java, но не знает, как это сделать. Этот код импортирует основной пакет библиотеки и вызывает метод SOaaS codeThatDoes (), передавая строку с некоторыми условиями поиска:

import com.soaas.PleaseHelpMe;
public class MyHelloWorld {
  public static void main(String args) {
    PleaseHelpMe.codeThatDoes("Hello world Java");
  }
}

Метод codeThatDoes () по сути делает именно то, что вы делали бы до того, как этот замечательный API упростил задачу. Он динамически обращается к Stack Overflow, выполняет поиск по этим терминам, находит все вопросы, относящиеся к этой теме, и случайным образом выбирает один из них. Затем он находит все ответы на этой странице, случайным образом выбирает один из них, копирует все в блоке кода в этом ответе, компилирует его, вводит в ваш код, запускает и возвращает.

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

API также предлагает некоторые перегрузки для codeThatDoes (), которые позволяют вам точно настраивать результаты. Например, иногда вы можете захотеть использовать самый популярный вопрос или ответ, получивший наибольшее количество голосов, вместо вопросов и ответов, выбранных наугад. В этом случае вы можете сделать это:

PleaseHelpMe.codeThatDoes("Hello World Java", true, true);

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

В другом расширенном варианте даже будет указана минимальная полоса для количества голосов за ответ:

PleaseHelpMe.codeThatDoes("Hello World Java", true, true, 2);

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

Конечно, в API есть и другие методы для более узких требований. Например, иногда может случиться так, что вы не найдете ответа или даже аналогичного вопроса в Stack Overflow. Точно так же теоретически возможно, что ваш вызов codeThatDoes () завершится неудачно, и результат будет неопределенным. В этом случае вы захотите обработать исключение. Но реализовать исключения утомительно, не так ли? На помощь приходит SOaaS! Все, что вам нужно сделать, это вызвать метод API doException (), и он будет использовать ту же базовую технологию для возврата лучшего кода исключения, который может предложить Stack Overflow:

try {
  PleaseHelpMe.codeThatDoes("I need help with my CS homework");
} catch (Exception e) {
  PleaseHelpMe.doException("I don't understand what happened to cause this exception");
}

SOaaS также предлагает более полные решения для действительно неинтересного программиста, такие как:

  • PleaseHelpMe.doAlgorithmFor («Fibonachi fibbonaci Fib Oni Chi, я не знаю, как написать его имя»)
  • PleaseHelpMe.optimize (Метод, «Заказать N-квадрат»)
  • PleaseHelpMe.libraryFor («Исправить дыры в безопасности на военном веб-сайте»)

Разве вы не хотите работать меньше, а делать больше? Начните использовать эту библиотеку сегодня!

PleaseHelpMe.libraryFor("SODD thing that I read about in some Medium article, I think");

SOaaS: При копировании ответа слишком много работы.