Подтвердить что ты не робот

Написание большого проекта с использованием J-языка программирования

Раскрытие информации

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

Мне нужно реализовать конкретный проект, который будет действительно выгоден от структур данных и абстракций, предоставляемых J. Это крупный проект, предназначенный для работы в качестве центрального компонента большого (мягкого реального -time). Поэтому производительность очень важна.

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

  • Искал Google Trends, но получил следующий ответ: "Ваши термины - язык программирования j - не имеют достаточного объема поиска для отображения графиков".
  • Искал бесплатно (код) и не нашел ни одного проекта, используя J
  • Искал на Sourceforge и не нашел ни одного проекта с помощью J
  • Искал на Lambda The Ultimate и нашел следующее обсуждение, которое наклонно ссылается на APL
  • Поиск в основном на Google и Bing, и не удалось найти примеры крупномасштабных проектов в развертывании, в которых используется J

Могу ли я ошибиться при использовании J для моего проекта? Кажется, что у меня есть все - особенно с точки зрения структуры данных, абстракции и конкретизации - что я хочу. Конечно, я мог потратить время на симуляцию всех этих свойств в F #, или С#, или на С++, но J уже имеет их, поэтому...

Может кто-нибудь скажет мне некоторые недостатки использования J (или любого неясного языка) для важных проектов? Это недостаточно эффективно? У него нет библиотек? Что-нибудь еще я должен знать?

Заранее благодарим за ваши ответы.

4b9b3361

Ответ 1

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

Две компании хорошего размера, о которых я знаю, используют J как центральную технологию для крупной программной системы - Cognos и Luen Thai. (Cognos была приобретена IBM.) Некоторое обсуждение этих систем или, по крайней мере, некоторый опыт, связанный с ними, появилось в J Chat Forum. Однако там не так много информации.

Могут быть другие большие программные системы, которые полагаются на J, но я их не идентифицировал (и я не обращал внимания на многие годы).

Дмитрий Чубаров прав думать, что трудно найти подходящих квалифицированных разработчиков, может быть серьезной проблемой. Более того, я считаю, что людям, которые еще не разработали значительное умение на языке массивов, сложно определить, сколько усилий им потребуется, чтобы стать хорошим программистом в Дж. Я лично считаю особенно важным, чтобы J можно было узнать из отношение радостного волнения, и это отношение может быть поставлено под угрозу производственным давлением программного проекта. (Можно научиться J на ​​работе и любить ее, но риск, что программист будет ненавидеть, потому что они "должны" учиться, не следует игнорировать.)

Другой вероятной трудностью являются интеграционные усилия. J имеет множество библиотек и подключен к различным другим программным системам, но контраст с тем, что было сделано для более популярных языков, драматичен. Мой опыт показал, что J интерфейс довольно легко, что я объясняю некоторыми хорошими вариантами того, как работать с внешним миром. (Это включает библиотеки DLL, файлы с отображением памяти, сокеты и текстовые скрипты). Тем не менее, в большом проекте вы будете внедрять новаторские решения гораздо чаще, чем обычно, при подключении к поддерживающему программному обеспечению поддержки.

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

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

Пол Грэм написал, что некоторые языки полагаются на секретные преимущества. Я определенно мог бы быть таким языком. Однако простого использования J было бы недостаточно, чтобы гарантировать, что он дает такие преимущества, которые он имел в виду. То, что вы описали как привлекательные аспекты J, предполагает, что такое преимущество может быть доступно вам. Если вы решите полагаться на это, может быть жизненно важно, чтобы все основные участники имели сильное и трезвое понимание того, почему этот язык выбран для этой работы.

Ответ 2

Я отвечаю на это, несмотря на уже принятый ответ.

  • Переносимость: я отвечаю за сохранение большой базы кода, построенной с помощью J, большая часть которой не переносима (или действительно опасна для этого) для J6, поэтому я застрял в J5. J не должна быть очень обратной совместимости. Фактически, большинство версий вносят нарушения. Версия 7 использует Java для своего интерфейса, поэтому ваши интерфейсы и все, что используется с драйвером Windows (wd), не будут работать. Версии 8 promises, чтобы иметь QT для своего интерфейса, поэтому ваш новый интерфейс Java, скорее всего, не будет перенесен. Справедливое предупреждение.

  • IDE: для меня большой проект должен идти рука об руку с надежной IDE. J - текстовый редактор.

  • Библиотеки: Существует много J-библиотек, но J, так же известный как он, существует несколько языков, у которых гораздо богаче библиотеки и фреймворки.

  • Структура кода: это полностью зависит от вас, и на самом деле не точка против J. J может быть написана так четко или как запутанная, как любой другой язык. Стандартные методы программирования применяются, и каждый должен всегда документировать и описывать как можно более явным образом. Это считается двойным в J, если вы обнаружите, что определенный набор "цензурных ругательств" работает лучше, чем другой.

  • Наконец, если вам нужно только J для некоторых своих возможностей, вы можете использовать J в качестве компонента. Интеграция .NET, к сожалению, была выпущена в J7 (и не была на 100% совместима с J6, особенно в ее 64-битном вкусе), но есть способы заставить ее общаться с внешним миром. KDB, например, основан на K, J отчужденном брате и в основном обертывает сопоставленные файлы для быстрого доступа, объект J тоже.

Ответ 3

Может кто-нибудь скажет мне некоторые недостатки использования J (или любого неясного языка) для важных проектов?

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

  • Как мы находим и оцениваем навыки и способности потенциальных членов команды на языке?
  • Если кто-то уйдет, сколько времени мне понадобится, чтобы заполнить пробелы в знаниях?
  • Когда нам нужна дополнительная помощь, мы можем достаточно быстро масштабировать команду разработчиков?

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

Ответ 4

Для меня J - хороший язык сценариев (в роли поддержки), особенно для математических вычислений. Он очень самодостаточен для развертывания с помощью copy-copy (особенно в среде Windows), что выгодно для ruby ​​или python.

Например, в nodejs webapp, child_process может использоваться для вызова jconsole.exe и передачи параметров через интерфейс командной строки.

Вся программа может быть развернута и запущена на платформе windows azure, а также на локальном компьютере без какой-либо дополнительной установки (т.е. node.exe и jconsole.exe включены в одну и ту же папку).