From: Max B. <be...@ma...> - 2003-10-14 05:24:25
|
Peter B. Shalimoff wrote: >>PBS> Что значит "меньше реюза"? >>статическая типизация нее позволяет использовать a+b для любых >>объектов, на множестве которых определен + > > > При чем здесь статичность типизации? при том, что для получения функции, которая вызывает метод X у объекта y надо в обязательносм порядке декларировать интерфейс объекта y. >>напиши на Java аналог функции map - у тебя не получится именно из за >>того, что Java - язык статически типизированный. > > === Function.java === > public interface Function > { > public Object call(FunctionArguments args); > } > Все - здесь статическая типизация накрылась. Кстати, тебе придтся для каждого случая вызова функции создавать wrapper, который читебальности не прибавит. Ты сам бы стал пользоваться такой map? > === FunctionArguments.java === > import java.util.LinkedList; > public class FunctionArguments extends LinkedList { } > > > >>или хотя бы аналог такой функции >>def sum(Xs): >> r=Xs[0] >> for x in Xs[1:]: >> r=r+x >> return r >>print sum([1,2,3]) >>print sum(['1','2','3']) >>print sum([[1,2],[2,3]]) >>print sum('1234') > > > Объясните смысл последней конструкции? демонстрация того, что строковый литерал - тоже коллекция > > import java.util.List; > class MyMath > { > static double sum(double[] a); > static float sum(float[] a); > static long sum(long[] a); > static int sum(int[] a); > static byte sum(byte[] a); > static boolean sum(boolean[] a); > > static String sum(char[] a); > static String sum(String[] a); > > static List sum(List[] a); > } > > Реализацию, думаю, необязательно приводить? не надо. и тебе как - для скриптинга это удобно? (реализация 9 раз одного и того же) >>- оператор for работает с коллекциями (будет в тигре, знаю) > > > Вы читали, как он на самом деле работает? Такой же сахар, как и > оператор +. да, сахар - все есть сахар. Java тоже есть сахар на байткодом. >>- все литералы, про которые я думаю как о коллекции является >>коллекцией (в том числе строка) > > > А что мешает на Java написать класс наподобие такого: Ничего - городить на каждый чих врапперы конечно можно, но читаемости не прибавит. > > > >>- все эти коллекции доступны единообразно и существует множество >>"синтаксического сахара" для работы с коллекциями > > > В Java они доступны не менее единообразно - java.util.* String - не коллекция. Массив - не коллекция. > > >>- функции - это объекты > > > И что? > врапперов не надо писать, с ними можно делать все, что с объектами. > >>мне нравится, кстати, отсутствие скобок (все равно я отступы так >>ставлю, зачем еще и скобки) > > А не угнетает, что вместо 'i++' надо писать 'i+=1'? А бэкслэш в конце > строки ставить, если хочется выражение на несколько строк разбить? Мы > не про синтаксис говорили. Я, по крайней мере. > Я говорю про язык. Для скриптинга. Рекомендую написать что-нибудь объектное на ABAP. Тогда, может быть, возникнет уважение к хорошему синтаксису ;) >>спасать мир не надо, но для _скриптинга_ важно, чтобы простые, >>часто используемые вещи делались просто. Если каждый раз, когда >>надо просто прочитать текстовый файл, необходимо городить множество >>конструкций, это минус. > Ну так берется и пишется класс, городящий это все за меня. как мне написать класс, кторый за меня будет писать _и читать_ class Program{ public static void main(String args){ } } >>PBS> Надеюсь, "подвох" не в количестве строк? :) >>именно в них. > > > На программах такого размера это выглядит особенно эффектно. Только > практической ценности в них - ноль. Тогда я не совсем понимаю что ты вкладываешь в понятие скриптинг. Для меня - автоматизация повседневных задач. > >>теперь напиши аналог такого скрипта >>for line in file('1.py'): >> print '>>>'+line >>хочется ли тебе ради одноразового скрипта писать все эти Buffered >>readerы и т.д.? > > > Мне вообще никогда ничего не хочется писать. Хочу щелкнуть пальцами и > получить готовую программу. Хотя, иногда даже пальцами щелкать лень. > Buffered reader'ы буду использовать из-за оправданности этого > использования, а не из-за n-разовости использования скрипта. А зачем щелкать пальцами 20 раз, если вместо этого можно щелкнуть 2? Чем Java для скриптинга лучше? > >>для скриптинга лаконичность важна. > > > Лаконичность можно и в Java сделать, написав пакет > scripting.your_favourite_scripting_language. то есть Jython переписать - а зачем? |