Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (9)

Наибольший вклад в теги

Все теги (31)

Лучшие ответы пользователя

Все ответы (7)
  • Стоит ли первым языком (после школьного Pascal) выбирать node.js?

    ramntry
    @ramntry
    Я поддержу JS и Python.

    Первый, потому что благодаря node.js он позволяет программировать и фронтент, и бекенд - одним языком вы убьёте двух зайцев, быстрее сможете начать что-то делать для своего проекта. Возможно, даже трёх зайцев, так как некоторые NoSQL базы данных используют подмножество JS в качестве языка запросов, а NoSQL-подход в изучении попроще классического реляционного (в конце концов, вы автоматически получите представление о JSON, которому в большинстве случаев удаётся эффективно замещать значительно более тяжёлый XML).

    Второй, потому что он прост и очень много умеет, как в веб, так и в области автоматизации системного администрирования. Значит, в процессе его изучения вы сможете применять получаемые знания на практике, прямо на рабочем месте. Python вам подарит Django, который до поры до времени вообще скроет от вас премудрости работы с базами данных (благодаря ORM). Проще он потому, что имеет простую объектную модель, предлагает большой набор встроенных структур данных с хорошо продуманными интерфейсами (туториал на офф.сайте сразу вам скажет, что dict - ассоциативный массив, подробно расскажет, как им пользоваться. В JS можно умом двинуться, пока поймёшь, что Object и есть ассоциативный массив и как его в таком качестве эксплуатировать).

    Но JS для фронтенда всё равно придётся выучить.

    Ruby не стану советовать. Для вас Ruby в связке с Ruby on Rails будет тем же тандемом Python + Django, только 1) ощутимо более сложным для изучения 2) практически неприменимым на основном месте работы 3) перегруженным в смысле конкуренции на рынке труда не хуже PHP.

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

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

    ramntry
    @ramntry
    Если @egor_nullptr вас понял правильно, и вам нужно проверить, что массив b хотя бы в одном экзепляре содержит каждый элемент массива a, то предлагаю такое решение:
    Array.prototype.hasAll = function(a) {
        var hash = this.reduce(function(acc, i) { acc[i] = true; return acc; }, {});
        return a.every(function(i) { return i in hash; });
    };

    По сравнению с решением @egor_nullptr оно асимптотически быстрее: O(n + m) против O(n * m), где n, m - размеры массивов a, b. При n = m = 100 000 на моей машине мой вариант отрабатывает быстрее в 200 раз. Тестировал так.

    Знаете, каков мой опыт разработки на JavaScript? Я программирую на нём 40 минут, в обнимку с JavaScript Reference от Mozilla. Мой основной язык - C++. А вам очень советую добраться-таки до какой-нибудь книжки по алгоритмам и структурам данных (например, до "Introduction to Algorithms". Она есть на русском, лучший перевод, на мой взгляд, от МЦНМО). Это полезно, уверяю вас.
    Ответ написан
    5 комментариев
  • Язык с нормальным порядком редукции?

    ramntry
    @ramntry Автор вопроса
    О! Нашлась такая вещь: LCI Очень неплохо для начала.
    Ответ написан
    Комментировать
  • Язык с нормальным порядком редукции?

    ramntry
    @ramntry Автор вопроса
    Выяснилась некоторая деталь: в первую очередь в искомом языке интересна работоспособность Y-комбинатора, поскольку он позволяет решать рекурсивные уравнения, что, в свою очередь, позволяет создавать рекурсивные функции. Однако, не смотря на формальное равенство (конвертируемость) ∀ X ( λ ⊢ Y X =β X (Y X) ), ни Y X не β-редуцируем к X (Y X), ни наоборот. Существует, однако, лучший в этом смысле и аналогичным по своим практическим возможностям Θ-комбинатор, придуманый Аланом Тьюрингом, а также множество других комбинаторов фиксированной точки (по ссылке также можно найти множество примеров реализации комбинаторов на различных языках, что крайне ценно). Их вычислимость, тем не менее, по-прежнему чувствительна к порядку редукции, но требование нормального порядка избыточно. Существуют помимо понятия нормальной формы терма, понятия головной (или заголовочной) нормальной формы, слабой головной нормальной формы, которые используются в некоторых языках даже с принципиально аппликативным порядком редукции и приводят к тому, что терм-аргумент, едва став λ-абстракцией (в слабом случае), перестает вычисляться и передается в тело функции (сокращается крайний левый внешний редекс, как при нормальном порядке). Это делает возможными в таких языках специальные трюки, которые за счет некоторой модификации канонических комбинаторов (навешивания на них «лишних» λ-абстракторов) добиться нужного порядка вычисления.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (10)