Стоит ли когда-нибудь пытаться заставить язык программирования делать то, для чего он не предназначен? - PullRequest
2 голосов
/ 14 марта 2009

Например, просто ради удовольствия я думал о сценарии PHP, через который будут проходить все мои файлы JavaScript; теперь, это в сочетании с прекрасными маленькими ошибками, которые являются регулярными выражениями, приводит к целому миру возможностей (к лучшему или к худшему). На данный момент я только сделал так, чтобы JavaScript был Pythonic по структуре, например так:

Простая функция, которая принимает параметр и отображает число, если оно кратно 2 и / или 3:

<script>
function show_mults_23(k):
    for (x = 0; x < k; x++):
        if (x % 2 == 0):
            document.body.innerHTML += x;
            document.body.innerHTML += ' is a multiple of 2.<br/ >';
        if (x % 3 == 0):
            document.body.innerHTML += x;
            document.body.innerHTML += ' is a multiple of 3.<br />';
</script>

Это чушь, да? ; р

Если серьезно, мне любопытно, была ли такая концепция когда-либо реализована в среде разработки. Очевидно, что происходит огромное снижение скорости, но кроме этого, может ли такая идея иметь какое-либо основание?

Ответы [ 4 ]

16 голосов
/ 14 марта 2009

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

5 голосов
/ 14 марта 2009

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

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

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

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

1 голос
/ 22 сентября 2009

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

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

Использование макросов для того, чтобы C выглядел как Паскаль является еще одним примером этого и высмеивается по той же причине.

Более мягкая форма этого (и одна из моих любимых ненавистей) использования пробелов для искажения синтаксиса, обычно в C, как в:

int* p;

(где вы притворяетесь, что * более тесно связан с int, чем с p, в противоположность тому, как его видит синтаксический анализатор.)

1 голос
/ 14 марта 2009

GWT - нечто подобное. Он компилирует код Java в javascript, хотя он гораздо более функциональный и имеет намного больше тонкостей, таких как поддержка IDE, большое сообщество за ним и т. Д.

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

...