Определение того, является ли язык / рамки / технологии «перспективными»

10

Я разработчик PHP, и недавно я начал работать с CodeIgniter. Кажется, что всякий раз, когда я ищу что-то, связанное с CodeIgniter, сообщения в блоге и тому подобное, как правило, относятся к '09 или '10, так что это заставляет меня задуматься, действительно ли CodeIgniter по-прежнему актуален и будет ли это в будущем? Есть ли другая структура, которая занимает его место?

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

рукав моря
источник
15
Позвольте мне проконсультироваться с моим хрустальным шаром ...
FrustratedWithFormsDesigner
1
@MobilKyle Быстрый поиск принес мне это ... tiobe.com/index.php/content/paperinfo/tpci/index.html не уверен, что это полезно, но, тем не менее, интересно.
Ominus
3
@MotorKyle Я думаю, что основной вопрос (и я страдаю от этого) заключается в следующем: «Стоит ли то, что я выбрал для изучения, того времени / усилий, которые я собираюсь вложить в это?». При таком большом количестве вариантов может быть непросто понять, как наилучшим образом инвестировать время / энергию для наибольшей отдачи в выбранной нами работе.
Ominus
1
Это то, что я имел в виду. Жаль, что они не имеют рамок в списке!
Кайл
3
COBOL - одна из самых перспективных технологий. Установленная база КОБОЛа вряд ли исчезнет. Вы можете подумать о том, что это значит.
user16764 22.02.12

Ответы:

17

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

Но я бы искал все следующее:

  • Установленная база - большая установленная база означает, что многие компании будут продолжать инвестировать в технологию и ее обслуживание, что означает, что разработчики будут нуждаться в работе с технологией. Позитивный цикл наступает. Например, Java, как и COBOL до этого, не уходит очень долго.
  • Широкая поддержка индустрии - есть ли несколько крупных игроков отрасли, поддерживающих эту технологию? Только один преданный сторонник является предупредительным знаком - он может быть сброшен или отстранен в любой момент с одной сменой стратегии.
  • Открытый исходный код - основные продукты с открытым исходным кодом зарекомендовали себя как очень хорошие долгосрочные ставки (посмотрите на Linux, Apache, Red Hat, JBoss, Eclipse, например ....). С другой стороны, проприетарные продукты находятся в какой-то степени по прихоти одного поставщика, где вы рискуете прекратить / нарастить цены / попытаться заставить перейти к «следующей большой вещи».
  • Качество - продукты высокого качества просто будут жить дольше, потому что люди захотят использовать их, а не переключаться на что-то другое. И наоборот, продукты низкого качества будут заброшены, как только появится что-то лучшее.
  • Инновация - это технология на переднем крае инноваций? Если это так, то, скорее всего, он получит признание и поддержку среди более инновационных компаний и пользователей. В конечном итоге это станет мейнстримом (я бы сказал, что новые языки, такие как Scala и Clojure, например, находятся в этой категории)
  • Сообщество - есть ли позитивное, непредубежденное, прагматичное, преданное, полезное сообщество вокруг технологии? Это люди, которые в конечном итоге гарантируют его будущее .....
mikera
источник
3
Итак, как вы объясните VB6? ;-)
SDG
4
Черная магия.....?
Микера
1
-1, так как большинство точек бездоказательны. Например, вы говорите об open source как о долгосрочных ставках. Таким образом, MacOS, Windows, Visual Studio и тысячи самых популярных продуктов - это не долгосрочные ставки? Инновация: что вы хотите показать здесь? Все продукты, которые мы используем, были инновационными, прежде чем стали массовыми. Качество: определите это. Большинство популярных фреймворков и библиотек PHP написаны в ужасном коде спагетти, но все еще популярны.
Арсений Мурзенко
1
@MainMa: Поскольку популярность открытого исходного кода растет, а популярность Windows падает, кажется, что есть доказательства. «Тысячи самых популярных продуктов - это не долгосрочные ставки» Много-много продуктов не будет вокруг через пять лет. «Ужасный код для спагетти, но они все еще популярны». Вы прочитали ответ? «[пока] что-то лучше приходит». Нет ничего лучше для PHP? Так. Наследие остается на месте.
S.Lott
3
Программное обеспечение @MainMa с открытым исходным кодом не гарантирует, что проект не будет прекращен. Но это гарантирует вам, что у вас будет возможность сохранить его, если оригинальная команда этого не сделает. Если продукт не разрабатывается огромной и успешной компанией, вы всегда рискуете застрять с устаревшей / нерасширяемой платформой, когда он закрыт.
Саймон Бергот
14

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

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

Ominus
источник
7
Поскольку будущее так трудно предвидеть, трудно понять, что может означать «будущее». «Я думаю, что существует мировой рынок для примерно пяти компьютеров», - замечание приписывают Томасу Дж. Уотсону (председатель совета директоров International Business Machines), 1943 год ».
S.Lott
7

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

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

JW8
источник
5

«Защищенность от будущего» - это не только сила воли и упрямство, но и более прагматичные проблемы.

Экстремальный пример это . Sparkle Filters по-прежнему работает на компьютере IBM 402 конца 40-х годов в качестве своей системы учета. Это машина, которая запрограммирована с использованием электрических панелей, а не «файлов».

У меня лично был опыт работы с компанией, которая до сих пор поддерживает машины на базе MS-DOS в специализированных приборах, рассчитанных на десятилетия работы. Я даже отказался от работающего PDP еще в 1997 году.

Я бы сказал, что если ваша компания посетит музей истории компьютеров, как это сделали Sparkle Filters, это будет признаком того, что вы (или ваши предки) успешно «оправдали будущее»!

Angelo
источник
Слово должно быть «проверено на будущее», вероятно :)
9000
5

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

Чтобы сделать этот вопрос ответственным, вам нужно добавить некоторые детали в требования. Например:

  • О каких временных масштабах мы говорим - 1 год, 3 года, 5+ лет?
  • Какова будет стоимость выбора чего-то, чего не будет через 5 лет?
  • Какие преимущества вы получите от выбора менее «безопасного» варианта, и перевешивают ли преимущества риски?

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

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

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

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

Сэм Элстоб
источник
3

Есть так много факторов, я бы сказал, это невозможно. Среди вещей, которые могут пойти не так:

  • Мода. Люди теряют интерес и обращают внимание на новую, более привлекательную платформу. Около 2000 года Perl почти монополировал веб-приложения.
  • Доля рынка поставщиков. Примерно в 2000 году у вас был бы C ++ / Sun Solaris до 3000 года.
  • Корпоративные Shenanigans. Пару лет назад я бы выбрал Java в качестве платформы для будущего. С ORACLE, защищающим авторские права на API и т.д.
  • Конец дороги. Я думаю о таких вещах, как Visual Basic, которые после долгой и почетной истории просто не могут быть растянуты, чтобы приспособиться к последним идеям в разработке программного обеспечения.
  • Проигравший побеждает. PHP (который мне нравится) не выиграл бы и никогда не выигрывал конкурсы красоты среди разработчиков, но он стал бесспорным королем Интернета. Когда я впервые написал какой-то php в 2004 году, я бы никогда не поддержал его как linga franca веб-разработки.
  • Гадкие утята. Javascript, не меняя ни единого фрагмента синтаксиса и не добавляя единого API, неожиданно перешел от хоккейного скриптового языка, который добавляет анимированный надоедливый баннер к центральной части WEB 2.0.

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

Джеймс Андерсон
источник
2

PHP-фреймворк Symfony прекрасно объяснил это на своем сайте .

10 критериев выбора правильной основы

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

1.Популярность и размер сообщества

Чем более известна и узнаваема среда, тем больше она будет «жить», развиваться и завершаться: новые идеи, количество и качество плагинов и т. Д.

2.Philosophy

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

3.Sustainability

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

4.Support

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

5.Technique

Чтобы не оказаться в ловушке лабиринта, всегда предпочтительнее выбрать совместимое решение; тот, который уважает лучшие практики с точки зрения развития (шаблоны проектирования)

6.Security

Любое приложение потенциально уязвимо. Чтобы минимизировать риск, всегда лучше выбрать среду, способную обеспечить функции безопасности (например, управление XSS).

7.Documentation

Абсолютно необходимо оценить природу, объем и качество существующей литературы по фреймворку: хорошо документированный инструмент является более простым в использовании и более обновляемым.

8.License

Лицензии важны просто потому, что они могут оказать значительное влияние на ваши приложения. Например, приложение, разработанное с использованием лицензированной среды GPL, обязательно будет подлежать GPL. С другой стороны, это не относится к MIT-лицензированной среде.

9. Доступность ресурсов на рынке

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

10. Попробуйте!

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

Хакан Дериал
источник
1

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

Поэтому, когда наступит время NextNewThing (tm), не стесняйтесь прыгать на подножку ... просто не для чего-то важного в первые пару лет.

GrandmasterB
источник
0

Ответ Микераса довольно хорош. Я добавлю, что будущее - это своего рода управление безопасностью или риском. Это часто требует от вас отказаться от определенных удобств и выгод от затрат / производительности сейчас, чтобы избежать проблем позже. Я уже довольно давно создаю технологию, способную обеспечить будущее. Есть определенные шаблоны, которые могут помочь. Вот несколько

  1. Данные должны храниться в открытом формате, который легко извлечь или преобразовать позже. Нечетные форматы файлов - это большая техника блокировки и область ловушек в целом. Кроме того, предпочтите более простые подходы, такие как CSV, ASN.1 или JSON, по сравнению со сложным дерьмом, таким как XML или, скажем, формат Word 97;). Идея заключается в том, что достаточно просто собрать парсер самостоятельно, а низкоуровневый парсер формата можно повторно использовать в ваших приложениях.

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

  3. Стек должен быть полностью открытым исходным кодом и свободен для изменения. Лицензии GPL, LGPL, BSD, MIT и т. Д. Подходят под этим углом зрения. Идея состоит в том, что, если сообщество начнет угасать, возможно, потребуется переместить стек в новое [оборудование / ОС / протокол / и т. Д.]. И вам нужен код, чтобы сделать это.

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

  5. Ваше приложение должно быть выполнено по модульному принципу, учитывающему детали платформы для минимизации переделок в этой области. Это также помогает структурировать функции в блоки ввода / обработки / вывода, где это возможно. Это может помочь в анализе того, что будет зависеть от порта (и в целом в анализе правильности методологии «Чистая комната»). Для платформы с минимальным риском целесообразно использовать функции наименьшего общего знаменателя, которые поддерживаются повсеместно, с одним интерфейсом, который позволяет вам использовать их, еще больше сокращая портирование. (Я сказал, что вы что-то потеряете ...)

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

  7. Держите модель параллелизма простой. Управляемая событиями передача сообщений через понятные интерфейсы переносима на ... практически все. Там также сопрограммы. Вы просто хотите избежать маршрутов, которые подвержены как ошибкам, так и проблемам переносимости.

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

Прекрасный пример: Tcl. Я знаю, многие ненавидят это, и я редко использую это сам. Тем не менее, Tcl является чрезвычайно простым языком для понимания, реализации (12 основных правил) и кодирования. Он небольшой, достаточно быстрый, интегрируется с веб-серверами, внедряется в нативные приложения, портирован на множество вещей, имеет определенные функции безопасности и регулярно обновляется с 80-х годов, когда он был сделан. Вы или я могли бы реализовать всю среду выполнения TCL в кратчайшие сроки для основного языка. Если бы нам пришлось портировать стандартную библиотеку, это было бы проще, чем портирование .NET или Java. И для этого написано немало полезного кода. И он использовался в веб-технологиях еще в то время, когда «мобильный агент» увлекался апплетами Java. Например, веб-инфраструктура OpenACS восходит к 1998 году, когда сервер был старше этого.

Другие примеры: BASIC, COBOL и LISP (схема или CL). Все эти языки восходят к 50-м или 60-м годам. Они достаточно просты, чтобы облегчить понимание, реализацию и механический перевод. Тем не менее, вы можете создавать полезные вещи с ними. COBOL по-прежнему обеспечивает большую часть обработки транзакций в мире, несколько раз обновлялась и работала даже на .NET. Старые приложения QBasic / QuickBASIC все еще работают сегодня с открытыми / бесплатными инструментами на современных платформах, наряду с возможностями переноса на более совершенные инструменты, такие как GAMBAS или RealBASIC. LISP-кодеры, естественно, делают свои системы модульными и функциональными, облегчая портирование. В течение десятилетий для него был постоянный поток реализаций, открытых и коммерческих.

Итак, интерфейсы, открытость, простота, модульность и независящая от платформы архитектура / дизайн / кодирование. ЭТО даст вам перспективу, в которой вы нуждаетесь. Во всяком случае, большую часть времени.

Ник П
источник