LINUX.ORG.RU

RedHat настаивает на открытии Java


0

0

Не совсем свежая новость, но...

Michael Tiemann, уполномоченный по вопросам open-source в RedHat, заявил: "Sun должны доказать свою приверженность Open-source раскрытием Java ... Это поможет нам противостоять .NET ... Опасения Sun относительно форка - пережиток прошлого ..."

>>> Подробности (на английском)



Проверено: Demetrio ()

Ответ на: комментарий от anonymous

> такие как ты даже про Stacker не помнят, а туда же, на форумы лезут. иди на винфак, за умного там сойдешь могет быть Этот?

Stacker 4 € 27,95 Order 3 bottles and get one free! We ship to all european countries

Или этот? Nieuw, Super Stacker Plus Europe's Stackers Specialist. New site, Be-Fit Nutrition

Или этот? Stacker by SymbianWare

Если уважаемые анони-сан что-то помнит, то он может поделиться своими знаниями. Пока же его комментарии похожи на зловоние: заметно, но толку мало.

WindowsUser ★★
()
Ответ на: комментарий от svu

Вы это имели в виду?

public class B
{
    public String m(int array[])
    {
       String s = "";
       for ( int i = 0; i < array.length; i++ ) 
          s = s + array[i] + ":";
       return s;
    }
}


Compiled from "B.java"
public class B extends java.lang.Object{
public B();
  Code:
   0:	aload_0
   1:	invokespecial	#1; //Method java/lang/Object."<init>":()V
   4:	return

public java.lang.String m(int[]);
  Code:
   0:	ldc	#2; //String 
   2:	astore_2
   3:	iconst_0
   4:	istore_3
   5:	iload_3
   6:	aload_1
   7:	arraylength
   8:	if_icmpge	43
   11:	new	#3; //class StringBuffer
   14:	dup
   15:	invokespecial	#4; //Method java/lang/StringBuffer."<init>":()V
   18:	aload_2
   19:	invokevirtual	#5; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
   22:	aload_1
   23:	iload_3
   24:	iaload
   25:	invokevirtual	#6; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer;
   28:	ldc	#7; //String :
   30:	invokevirtual	#5; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
   33:	invokevirtual	#8; //Method java/lang/StringBuffer.toString:()Ljava/lang/String;
   36:	astore_2
   37:	iinc	3, 1
   40:	goto	5
   43:	aload_2
   44:	areturn

}

// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   B.java


public class B
{

    public B()
    {
    }

    public String m(int ai[])
    {
        String s = "";
        for(int i = 0; i < ai.length; i++)
            s = s + ai[i] + ":";

        return s;
    }
}


Или Вы имели в виду что-нибудь другое?

anonymous
()
Ответ на: комментарий от szh

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

Когда у тебя будет приложение побольше домашней странички, тогда и поговорим. Нехватало еще глюков из-за того, что редхат подкрутит что-нибудь или изменит опции оптимизации компилятора и потом все это будет непонятным образом виснуть. Особенно это доставляет удовольствие на серверах 24х7

WindowsUser ★★
()
Ответ на: Re: от AlexM

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

anonymous
()
Ответ на: комментарий от anonymous

Да, именно это. Вопрос на засыпку - сколько раз будет сделано new String() в этом методе? И сколько новых объектов будет создано, если изначально s будет типа StringBuffer ( и при этом s.append(ai[i]); s.append(":"); )?

svu ★★★★★
()
Ответ на: Re: от AlexM

Ну как раз такое и надо переписывать...

svu ★★★★★
()
Ответ на: комментарий от anonymous

> А вы, молодой человек, когда нибудь пользовались передачей аргументов по ссылке или перегрузкой операторов?
> Похоже, что нет. Наверное синтаксис:
>
> bool int.TryParse(ref string strInt);
>
> Вам не нужен?

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

anonymous
()
Ответ на: комментарий от anonymous

> нужно понимать философию этого языка и нужно мыслить в терминах Java.

Золотые слова! Самый ужасный код, который я видел - код процедурщиков, взявших в свои мозолистые руки lisp...

svu ★★★★★
()
Ответ на: комментарий от svu

Вы имеете в виду

public class B { public String m(int[] ai) {

StringBuffer s = new StringBuffer();

for ( int i = 0; i < ai.length; i++ ) { s.append(ai[i]); s.append(":"); }

return s.toString(); } }

?

Да, это так.

anonymous
()
Ответ на: комментарий от anonymous

Да, именно так. Вопрос был в том, сколько новых объектов у Вас будет в первом варианте - и сколько во втором... String-то immutable...:)

svu ★★★★★
()
Ответ на: комментарий от anonymous

> Чтобы нормально программировать на Java, нужно понимать философию этого языка и нужно мыслить в терминах Java.

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

P.S. А еще желательно прочитать книгу Б. Эккеля "Траханье в гамаке. Ластовая редакция".

anonymous
()
Ответ на: комментарий от anonymous

>А вы, молодой человек, когда нибудь пользовались передачей аргументов >по ссылке или перегрузкой операторов?

А вы о жабе знаете тока по наслышке :lol:

>Похоже, что нет. Наверное синтаксис: >bool int.TryParse(ref string strInt);

не поверите, но тоже самое в жабе это

final String[] strRef = new String[]{null}; int tryParse(strRef);

>Вам не нужен? >Или: >string s1 = "Data: " + s3 + "."; >лучше заменить на: >string s1 = new string("Data: ").Concate(s3.Concate(".")); ?

нет оно так и пишется String s1 = "Data:" + s2 ;

anonymous
()
Ответ на: комментарий от svu

Ну, что же делать, в циклах используется append. Я бы даже так написал бы 

s.append(ai[i]).append(":");

Экономия 1 инструкции будет. :)



anonymous
()
Ответ на: комментарий от anonymous

> bool int.TryParse(ref string strInt);

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

r ★★★★★
()
Ответ на: комментарий от Eugene_Korobko

> 1. Перегрузка операций мудацкое решение старых проблем. Ровно как и не прошло 30 лет с изобретения ++.

> 2. События + делегаты

уже одно название "делегат" говорит о том насколько мудацкое.

> 4. Атрибуты типа есть

> 6. Параметры по ссылке гавно и ересь

r ★★★★★
()
Ответ на: комментарий от anonymous

2anonymous (*) (04.10.2004 19:12:03)

Ненавижу орнитологов. "Жизнь пернатых на обрыве".

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

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

Тем более, процесс размножения пернатых слабо коррелирует с наличием поблизости гамаков от мест их гнездования. Мало того, чем меньше гамаков будет поблизости, тем больше вероятность нормального развития этого вида.

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

anonymous
()
Ответ на: комментарий от svu

> 1. СтОит разрешить перегрузку вообще - и народ начнет перегружать "кто > во что горазд". Нехрен провоцировать нечитаемый код:)

Действительно, зачем позволять программисту создавать полноценные новые типы в объектно-ориентированном языке?

faustus
()
Ответ на: комментарий от r

>> Передайте привет garbage collector.

>Передай привет голове своей.

Ну Вы это зря! :( svu весьма корректный и доброжелательный участник Форума. Он действительно всегда отвечает по делу и, по-моему, только один раз ответил грубо, когда было нарушение пункта 5.3..

anonymous
()
Ответ на: комментарий от anonymous

Ну а теперь, Сергей svu, интересный вопросик, если у Вас есть время и интерес. В чём разница между двумя (дизассемблированными:)) методами

Compiled from "C.java" public class C extends java.lang.Object{ public C(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return

public void m1(); Code: 0: iconst_0 1: istore_1 2: iload_1 3: bipush 10 5: if_icmpge 44 8: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream; 11: new #3; //class StringBuffer 14: dup 15: invokespecial #4; //Method java/lang/StringBuffer."<init>":()V 18: ldc #5; //String < 20: invokevirtual #6; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer; 23: iload_1 24: invokevirtual #7; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer; 27: ldc #8; //String > 29: invokevirtual #6; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer; 32: invokevirtual #9; //Method java/lang/StringBuffer.toString:()Ljava/lang/String; 35: invokevirtual #10; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 38: iinc 1, 1 41: goto 2 44: return

public void m2(); Code: 0: iconst_0 1: istore_1 2: iload_1 3: bipush 10 5: if_icmpge 46 8: new #3; //class StringBuffer 11: dup 12: invokespecial #4; //Method java/lang/StringBuffer."<init>":()V 15: astore_2 16: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream; 19: aload_2 20: ldc #5; //String < 22: invokevirtual #6; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer; 25: iload_1 26: invokevirtual #7; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer; 29: ldc #8; //String > 31: invokevirtual #6; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer; 34: invokevirtual #9; //Method java/lang/StringBuffer.toString:()Ljava/lang/String; 37: invokevirtual #10; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 40: iinc 1, 1 43: goto 2 46: return

}

Кто выиграет "гонку"?

anonymous
()
Ответ на: комментарий от anonymous

Вы перепутали похожие слова:

Л`асточки, Hirundinidae, - сем. птиц отряда воробьиных.

Л`асты - Видоизменённые пятипалые конечности, выполняющие плават. функцию у перешедших к водному образу жизни пресмыкающихся (напр., морских черепах), птиц (пингвинов) и млекопитающих животных (ластоногих, китообразных и сирен). Л. в спорте - приспособления из резины, надеваемые на ступни пловцов для ускорения плавания.

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

Отуда такие данные?

anonymous
()
Ответ на: комментарий от anonymous

Извините:

Compiled from "C.java"
public class C extends java.lang.Object{
public C();
  Code:
   0:	aload_0
   1:	invokespecial	#1; //Method java/lang/Object."<init>":()V
   4:	return

public void m1();
  Code:
   0:	iconst_0
   1:	istore_1
   2:	iload_1
   3:	bipush	10
   5:	if_icmpge	44
   8:	getstatic	#2; //Field java/lang/System.out:Ljava/io/PrintStream;
   11:	new	#3; //class StringBuffer
   14:	dup
   15:	invokespecial	#4; //Method java/lang/StringBuffer."<init>":()V
   18:	ldc	#5; //String <
   20:	invokevirtual	#6; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
   23:	iload_1
   24:	invokevirtual	#7; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer;
   27:	ldc	#8; //String >
   29:	invokevirtual	#6; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
   32:	invokevirtual	#9; //Method java/lang/StringBuffer.toString:()Ljava/lang/String;
   35:	invokevirtual	#10; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   38:	iinc	1, 1
   41:	goto	2
   44:	return

public void m2();
  Code:
   0:	iconst_0
   1:	istore_1
   2:	iload_1
   3:	bipush	10
   5:	if_icmpge	44
   8:	getstatic	#2; //Field java/lang/System.out:Ljava/io/PrintStream;
   11:	new	#3; //class StringBuffer
   14:	dup
   15:	invokespecial	#4; //Method java/lang/StringBuffer."<init>":()V
   18:	ldc	#5; //String <
   20:	invokevirtual	#6; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
   23:	iload_1
   24:	invokevirtual	#7; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer;
   27:	ldc	#8; //String >
   29:	invokevirtual	#6; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
   32:	invokevirtual	#9; //Method java/lang/StringBuffer.toString:()Ljava/lang/String;
   35:	invokevirtual	#10; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   38:	iinc	1, 1
   41:	goto	2
   44:	return

}

anonymous
()
Ответ на: комментарий от anonymous

Короче,

public class C
{
public static void m1()
{
for (int i = 0; i < 10; i++)
System.out.println("<" + i + ">");
}

public static void m2()
{
// Мы НЕ соединяем строку в цикле, а только выводим её
for (int i = 0; i < 10; i++)
{
System.out.println(new StringBuffer().append("<").append(i).append(">").toStr ing());
}
}

public static void main(String[] args)
{
m1();
m2();
}
}

$javac C.java
$jad C
$cat C.jad

import java.io.PrintStream;

public class C
{

public C()
{
}

public static void m1()
{
for(int i = 0; i < 10; i++)
System.out.println("<" + i + ">");

}

public static void m2()
{
for(int i = 0; i < 10; i++)
System.out.println("<" + i + ">");

}

public static void main(String args[])
{
m1();
m2();
}
}

Так что не всё надо переписывать, тем более что первый метод более читаемый, а только те части, где создаётся новая (неизменяемая согласно определению строка). Лично я не вижу никаких сложностей в использовании Java. Можно, конечно, подумать над оптимизацией в компиляторе.

anonymous
()
Ответ на: комментарий от Eugene_Korobko

> Хорошая замена friend-классам.

Что заменять будем? И что же такое friend-классы Java? Чем они отличаются от классов, принадлежащих одному пакету?

anonymous
()
Ответ на: комментарий от anonymous

> Можно, конечно, подумать над оптимизацией в компиляторе.

Вот именно. Такие штуки, насколько помню, не оптимизировались в 1.3 версии.

Кстати, может просто от оптимизации компилятора быстродействие явы поднялось? :)

WindowsUser ★★
()
Ответ на: комментарий от WindowsUser

К сожалению, у меня Sun 1.4.2_05 и IBM 1.4.2 и приходится следить соединяется ли строка внутри цикла или просто выводится на консоль или Servlet/JSP. Посмотрю в Тайгере.

Кстати, а кто может проверить этот фокус в .NET?

anonymous
()
Ответ на: комментарий от anonymous

УРА!!!!! ТИГРА РУЛИТ!!!

УРА! Tiger - SUPER!!!!

public class B { public static String m(int[] ai) {

String s = "";

for ( int i = 0; i < ai.length; i++ ) { s += ai[i] + ":"; } return s; }

public static void main(String[] args) { int[] ia = {1, 2, 3}; System.out.println(m(ia));

} }

$javac B.java $jad B

// Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) // Source File Name: B.java

import java.io.PrintStream;

public class B {

public B() { }

public static String m(int ai[]) { String s = ""; for(int i = 0; i < ai.length; i++) s = (new StringBuilder()).append(s).append(ai[i]).append(":").toString();

return s; }

public static void main(String args[]) { int ai[] = { 1, 2, 3 }; System.out.println(m(ai)); } }

Нет, сегодня день не зря прошел! Пойду пить пиво! :)))

anonymous
()
Ответ на: комментарий от anonymous

В этом случае действительно не вижу разницы. Но в моем примере она есть.

svu ★★★★★
()
Ответ на: комментарий от anonymous

> Лучше возврат туплесов.

и как tuples могут быть реализованы в языке со _строгой_типизацией_? это прокатывает в языках типа python. в java используют классы, контейнеры или нетипизованные (нетипизированные???) массивы. Но, на мой взгляд, если использование классов не дает желаемого результата, проблема в алгоритме, а не в языке.

anonymous
()
Ответ на: комментарий от int19h

>Пока кто-нибудь не вспомнил про 2.96 в грубой нецензурной форме, я мягко намекну =)

Пусть этот кто-то сразу вспомнит про Оракл и gcc 3.x и заткнется.

jackill ★★★★★
()
Ответ на: комментарий от WindowsUser

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

Используй RHAS или RHES.

jackill ★★★★★
()
Ответ на: комментарий от anonymous

> и как tuples могут быть реализованы в языке со _строгой_типизацией_?

Молча, блин.

anonymous
()
Ответ на: комментарий от anonymous

На boost::tuple посмотри, ламо. Или по твоему C++ - не строго типизированный язык.

А затем почитай на тему ML, Haskell - тоже строго типизирвоанные языки, кортежи (tuples) там встроенные. Хотя если язык поддерживает метапрограммирование - то кортежи можно реализовать и на самом языке

ЗЗЫ: и не надо коверкать русский язык всякими псевдонеологизмами ("туплесы").

Begemoth ★★★★★
()
Ответ на: УРА!!!!! ТИГРА РУЛИТ!!! от anonymous

> УРА! Tiger - SUPER!!!! 

хехе. А теперь-ка попробуй не jad-ом, а javap. Сравни версии того, что создается компилерами 1.4.2 и 1.5.0 :)

1.5.0:
   11:  new     #3; //class java/lang/StringBuilder
   14:  dup
   15:  invokespecial   #4; //Method java/lang/StringBuilder."<init>":()V
   18:  aload_1
   19:  invokevirtual   #5; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   22:  aload_0
   23:  iload_2
   24:  iaload
   25:  invokevirtual   #6; //Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
   28:  ldc     #7; //String :
   30:  invokevirtual   #5; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   33:  invokevirtual   #8; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
   36:  astore_1
   37:  iinc    2, 1
   40:  goto    5
   43:  aload_1
   44:  areturn


1.4.2:
15:  invokespecial   #4; //Method java/lang/StringBuffer."<init>":()V
18:  aload_1
19:  invokevirtual   #5; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
22:  aload_0
23:  iload_2
24:  iaload
25:  invokevirtual   #6; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer;
28:  ldc     #7; //String :
30:  invokevirtual   #5; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
33:  invokevirtual   #8; //Method java/lang/StringBuffer.toString:()Ljava/lang/String;
36:  astore_1
37:  iinc    2, 1
40:  goto    5
43:  aload_1
44:  areturn

WindowsUser ★★
()
Ответ на: комментарий от Eugene_Korobko

> 1. Ещё перегрузка [] частенько помогает

Это уже индексаторы. Даже в том же C# - это _не_ перегрузка оператора

> 2. Это не всегда. Потому как ему нужно передать параметром объект вызывающего класса.

Это где такое у не-static классов??

> 5. Чтобы объединить группу классов в более тесную сущность, позволив им вызывать скрытые методы друг друга.

А чем пакаджи не устраивают?

> 6. Приводили уже пример - bool Integer.Parse(ref String result). Как прикажете на Java такое делать?

Возвращать String и кидать ексепшн если что не так.

int19h ★★★★
()
Ответ на: комментарий от svu

> СтОит разрешить перегрузку вообще - и народ начнет перегружать "кто во что горазд". Нехрен провоцировать нечитаемый код:)

Как показывает практика C# - не начнет.

int19h ★★★★
()
Ответ на: комментарий от AlexM

>Э-э-э... Ну, некоторое время назад (во времена ранних 1.4 точно) >приходилось таки брать код и переписывать его руками на стрингбуфферы. >Дружок как-то хвастался, что [однажды] получил ускорение в десятки раз >после такого переписывания :-).

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

vtVitus ★★★★★
()
Ответ на: комментарий от int19h

>перегрузка операторов бы не помешали

Эту ересь может говорить, только человек, который ни когда не видел перегруженных операторов запятая и [] как векторное произведение ... Спаси госпади жабу от такого счастия.

vtVitus ★★★★★
()
Ответ на: комментарий от vtVitus

> Эту ересь может говорить, только человек, который ни когда не видел перегруженных операторов запятая и [] как векторное произведение ...

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

int19h ★★★★
()
Ответ на: комментарий от anonymous

Re:

Еще, насколько я помню, нужно аккуратно относиться к тем местам, где в строках делаются замены. Даже если это замена символа 'a' на символ 'b'. Хотя, конечно, может статься, здесь уже соптимизировали.

AlexM ★★★★★
()
Ответ на: комментарий от anonymous

Re:

tuples могут быть организованы как классы с сильно ограниченной областью видимости :-). Или еще как-нибудь :-) А вообще, strong typing, который не дает жизни туплесам, давить :-). А вот любой другой - оставлять :-).

AlexM ★★★★★
()
Ответ на: комментарий от WindowsUser

Re:

Короче, я понял, они соптимизировали дизассемблер :-) А что, тоже неплохой вариант :-). "А теперь, м@#$ки, смотрите, как _надо_ было писать этот код!". Хороший способ поднятия культурного уровня Java-программистов :-)

AlexM ★★★★★
()
Ответ на: комментарий от vtVitus

Re:

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

P.S. Не надоело батон крошить?

AlexM ★★★★★
()
Ответ на: комментарий от int19h

Re:

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

AlexM ★★★★★
()
Ответ на: комментарий от int19h

1. Какая разница, как назвать. По сути - перегрузка []. 6. Кидать эксепшн - дорогое удовольствие. К тому же в оригинале была функция TryParse.

Eugene_Korobko
()
Ответ на: комментарий от int19h

Пакеджы не устраивают тем, что нельзя объявить область видимости метода пакеджем. Либо private, либо protected, либо private. А в С# добавлено internal - т.е. видимый в пределах сборки (того же пакеджа). Что очень удобно и правильно.

Eugene_Korobko
()
Ответ на: комментарий от Eugene_Korobko

Re:

Если бы вы назвали функцию не TryParse, а, скажем, ExtractInteger (аналогичную strtol), с возвратом, к примеру, кроме результата еще и позиции символа, который уже не относится к "числу", вопросов было бы, пожалуй, меньше. А так и правда получается что в 95% случаев лучше использовать эксепшн, даже несмотря на то, что это дороже по накладным расходам.

AlexM ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.