|
|
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
Скажите, а что, объекты классов Integer, String, Double и т.д. нельзя использовать для передачи их по ссылке в качестве аргумента функции с последующим изменением значения и возвратом изменённного значения из фунции. Например такой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext Вопрос: Неужели для этого всегда надо писать свой класс обёртку для Stringa и передавать функции для изменения не сам String а этот класс обёртку? Дико как-то... Или я чего-то не догоняю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2005, 14:00 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
да, не догоняешь. у метода есть входные пораметры и выходной. вот его и меняй. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Только не приводи, пожалуйста, пример с методом, в котором 28 параметров, 19 из которых Immutable(как стринг) и которые нужно изменить после вызова метода. Это называется идиотский оо дизайн и обсуждению не подлежит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2005, 23:19 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
В книге Брюса Эккеля написанно int, Double, и тд ("простые типы") создаются для большей скорости в стеке и передаются по значению. Вызов оператора new создает объект в куче и передается объект по ссылке. (Не дословно, но примерно так). public class mainClass { public static void main(String[] args) { String s; //ссылка на объект s = new String("Old String value");//новый объект updateString(s);//передача объекта по ссылке (??????) System.out.println(s);//хрен вам по ссылке } public static void updateString(String str) { str = "New String Value"; } } Так почему объект передан не по ссылке.???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2005, 12:09 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
Guest_569123 Так почему объект передан не по ссылке.???? вот потому.. :) В java все параметры грубо говоря, копируются :( так что прости прощай передача параметров по адресу :(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2005, 15:34 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
Никаких "оберток" для String писать не надо - есть StringBuffer, в котором можно изменять значение строки. Его и используй. Далее - изменять значение переданных экземпляров классов - НЕЛЬЗЯ. Можно менять только их состояние. Integer, Double, Long и прочие реализованы так, что изменить их содержание без создания нового экземпляра НЕЛЬЗЯ. Поэтому поможет либо редизайн модели, либо использование контейнера, либо (кривой вариант, строго не рекомендуется) - обертки примитивов с возможностью изменения содержания из пакета org.omg.CORBA (DoubleHolder, IntHolder, LongHolder...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2005, 09:52 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
fooВ java все параметры грубо говоря, копируются :( так что прости прощай передача параметров по адресу :(( Прочитай десять раз источник. Автор сам не понимает структуры ооп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2005, 11:07 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
Что может быть проще? Переменные передаются по значению. Объекты передаются по ссылки. Сслыки передаются по значению :) Никаких адресов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2005, 11:34 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
ЗашедшийНикаких "оберток" для String писать не надо - есть StringBuffer, в котором можно изменять значение строки. Его и используй. Далее - изменять значение переданных экземпляров классов - НЕЛЬЗЯ. Можно менять только их состояние. Integer, Double, Long и прочие реализованы так, что изменить их содержание без создания нового экземпляра НЕЛЬЗЯ. Поэтому поможет либо редизайн модели, либо использование контейнера, либо (кривой вариант, строго не рекомендуется) - обертки примитивов с возможностью изменения содержания из пакета org.omg.CORBA (DoubleHolder, IntHolder, LongHolder...). Спасибо. StringBuffer это похоже то, что надо. А как насчёт примитивных типов int, double, long и др.? Для ни похоже надо писать обёртку, если хочешь передать в функцию и получить обратно изменённое значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2005, 13:42 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
студент1 ЗашедшийНикаких "оберток" для String писать не надо - есть StringBuffer, в котором можно изменять значение строки. Его и используй. Далее - изменять значение переданных экземпляров классов - НЕЛЬЗЯ. Можно менять только их состояние. Integer, Double, Long и прочие реализованы так, что изменить их содержание без создания нового экземпляра НЕЛЬЗЯ. Поэтому поможет либо редизайн модели, либо использование контейнера, либо (кривой вариант, строго не рекомендуется) - обертки примитивов с возможностью изменения содержания из пакета org.omg.CORBA (DoubleHolder, IntHolder, LongHolder...). Спасибо. StringBuffer это похоже то, что надо. А как насчёт примитивных типов int, double, long и др.? Для ни похоже надо писать обёртку, если хочешь передать в функцию и получить обратно изменённое значение? 1) StringBuffer для этого и был сделан :) 2) Если надо возвращать кучу int и double - это, скорее всего, неверное проектирование системы. Потому что вместо пихания примитивов в метод, а потом упихивания их в какой-то объект, на самом деле лучше передавать САМ объект, чтобы с ним уже делать нужное внутри. Ява все-таки не процедурный, а ООП язык, и работать с ним надо НЕ как с С/Pascal. 3) Опять же - если так уж хочется настоять на кривой процедурной архитектуре (по разным причинам) - используй для примитивов соответствующие оболочки (DoubleHolder, LongHolder, IntHolder...) из org.omg.CORBA. Там соответствующие поля сделаны public, и их можно менять. Что-то вроде Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2005, 14:03 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
Вообще, как я понимаю, в Java определен синтаксис примитивных типов,классов и массивов. Это оснеовные достаточные условия для создания языка. Поэтому для передачи по ссылке можно использовать еще и массивы ( void Method(int[] i) {i[0]=100;} , void Method2(){int[] i={10}; Method(i) }) , этот сиснтакис может даже больше понравиться . Но вот вопрос - почему в Java не сделано передача примитивных типов по значению - это конечно интересно и ,видимо, - ошибка разработчиков. 2 Guest_569123 > В книге Брюса Эккеля написанно int, Double, и тд ("простые типы") создаются для большей скорости в стеке Это Эккель скосил малость - без примитивных типов вообще нельзя! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 18:40 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
kefiВообще, как я понимаю, в Java определен синтаксис примитивных типов,классов и массивов. Это оснеовные достаточные условия для создания языка. Поэтому для передачи по ссылке можно использовать еще и массивы ( void Method(int[] i) {i[0]=100;} , void Method2(){int[] i={10}; Method(i) }) , этот сиснтакис может даже больше понравиться . Лучше не нарушать общепринятых соглашений и писать названия методов с маленькой буквы :) Но вот вопрос - почему в Java не сделано передача примитивных типов по значению - это конечно интересно и ,видимо, - ошибка разработчиков. Примитивные типы передаются по значению. Или это опечатка у вас? Если опечатка, то смею вас заверить, отсутствие передачи перменных по ссылки - не ошибка разработчиков, а вполне осознанное действие. Цель этого - упростить разработку и поддержку кода. Вот пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Не зависимо от реализации xxxImpl, я могу утверждать, что будет выполнена строчка 1. В противном случае, я должен был бы всегда деражать в голове контракты относительно всех реализаций метода m: кто его реализует, в каком случае s cтанет ссылаться на другой AnObject и т.д. Единственный случай, где оправдана передача по ссылке, это не обходимость вернуть несколько значений из метода. Но это оправдание, наследие процедурных языков. При хорошем дизайне потребности в этом не возникает, а если возникает, то в случае не хватки времени на редизайн кода, быстро решить эту проблему можно создав класс wrapper для возвращаемого результата. 2 Guest_569123 > В книге Брюса Эккеля написанно int, Double, и тд ("простые типы") создаются для большей скорости в стеке Это Эккель скосил малость - без примитивных типов вообще нельзя! Можно. Язык SmallTalk не имеет примитивных типов. (Не надо только путать константные выражения типа "any text", 1231, 'c' cлужащие для обозначения и примитивыне типы (например класс String и запись "ххх")) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 19:25 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs константные выражения типа "any text", 1231, 'c' cлужащие для обозначения и примитивыне типы Т.е. константы служат в качестве обозначения для объектов (например, класс экземпляр класса String и запись "ххх"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 19:34 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
Какая из строчек выполнится 1 или 2? Не зависимо от реализации xxxImpl, я могу утверждать, что будет выполнена строчка 1. В противном случае, я должен был бы всегда деражать в голове контракты относительно всех реализаций метода m: кто его реализует, в каком случае s cтанет ссылаться на другой AnObject и т.д. > Честно говоря, не понял сути примера и объяснения - нельзя ли еще подробнее - что тут иллюстрируется ? (Не надо только путать константные выражения типа "any text", 1231, 'c' cлужащие для обозначения и примитивыне типы (например класс String и запись "ххх")) > Так String вообще не относится к примитивным типам. 2 Guest_569123 > В книге Брюса Эккеля написанно int, Double, и тд ("простые типы") создаются для большей скорости в стеке Это Эккель скосил малость - без примитивных типов вообще нельзя! Можно. Язык SmallTalk не имеет примитивных типов. > Я не знаю SmallTalk , но думаю ,что там примитивные типы (или как минимум один примитивный тип) реализованы так или иначе - явно или неявно они существуют . Иначе - какими же данными оперирует язык ? Иначе - то как ? ( Даже , если только логические данные , то они и будут являться тем примитивным типом.) Например, Как там производится присвоение и использование числа, которое должно быть введено с клавиатуры , или в каких струкурах языка хранится число , или - сложно спросить не зная языка ... , короче - как ??? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 20:43 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
kefi Честно говоря, не понял сути примера и объяснения - нельзя ли еще подробнее - что тут иллюстрируется ? То что передача по ссылке приводит к накладным расходам на понимание кода. Так String вообще не относится к примитивным типам. О том и речь. "ываывыв" - всего лишь обозначение для объекта String. Я не знаю SmallTalk , но думаю ,что там примитивные типы (или как минимум один примитивный тип) реализованы так или иначе - явно или неявно они существуют . Иначе - какими же данными оперирует язык ? Иначе - то как ? ( Элементарно. Integer i = 123123; //тоже самое как String s = "фывфыв"; Integer j = 321321; i.add(j); //вместо i+=j; (само понятие арифметической операции пропадают) Double d = Double.valueOf(i); // вместо double d = i; i.equals(j) //вместо i==j - т.к. в общем случае объекты могут быть разными, но значение одинаковое. При желании создаём наследника от Integer и добавляем метод Чтение из консоли: Integer i = new Scanner(System.in).readInteger(); тоже никаких чудес. Существование "констант" не значит, что существуют примитивыне тип ("" & String). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 21:08 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
можно и от констант избавиться, оставив у объектов типа Integer методы void inc() //Увеличить значение на 1 и т.п :) Введя константы Integer.ONE и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 21:13 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
То что передача по ссылке приводит к накладным расходам на понимание кода. Так не видно, что труднее понимать. Объясните, плиз. Существование "констант" не значит, что существуют примитивыне тип ("" & String). > Да константы меня не сбивают с толку. Integer i = 123123; //тоже самое как String s = "фывфыв"; Integer j = 321321; i.add(j); //вместо i+=j; (само понятие арифметической операции пропадают) Ну , переопрделить-то нельзя add для Integer, т.е. нельзя сделать чтобы 1+2=4 !? А это и говорит об некоторых непреложных отличиях этого типа (именно как примитивного типа) от остальных классов - т.е. примитивные типы , во-первых ,однозначно определяют операции над ними - не могут быть модифицированы, и , во-вторых, без них не могут строиться остальные объекты - это базовые типы для обработки . Может,конечно, я не верно понимаюЮ но пока, вроде - так . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 21:30 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
Да и еще,забыл, один аргумент : Язык без примитивных типов подразумевал бы наличие ТОЛЬКО ОДНОГО корневого класса (типа Object), на основе которого бы строились все остальные типы, а этого быть не может - ибо необходимы как и в любой системе базовые операции и базовый набор данных (или как минимум один тип данных, из которого босредством базовых операций создавались бы ВСЕ ОСТАЛЬНЫЕ) . Т.е. для любой развивающейся системы нужен базис данных и операций - это и есть суть примитивных типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 21:39 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
kefiДа и еще,забыл, один аргумент : Язык без примитивных типов подразумевал бы наличие ТОЛЬКО ОДНОГО корневого класса (типа Object), на основе которого бы строились все остальные типы, а этого быть не может - ибо необходимы как и в любой системе базовые операции и базовый набор данных (или как минимум один тип данных, из которого босредством базовых операций создавались бы ВСЕ ОСТАЛЬНЫЕ) . Т.е. для любой развивающейся системы нужен базис данных и операций - это и есть суть примитивных типов. Вот же лол :) Можно или нельзя создать наследника от класса, зависит от того, как он объявлен. Класс стринг не может иметь наследников, ты не можешь переопредлить ни один его метод, от этого же он не становится примитивным классом :) Тоже самое с Integer, о котором я упоминал в своём посте. Если не объявлять его как final, то делай подкласс и переопределяй метод add. Вот тебе пример. Я определил класс Integer положительных целых чисел. И операции: добавление единицы, добавление произвольного значения и сравнение на равенство. При желании можешь дописать другие методы :) Сколько примитивных типов мне для этого потребовалось? Ничто не мешает весь язык переписать в такой же манере... Теперь понятно? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 23:00 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
Прости, торопился, ерунду написал. Вот: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 23:10 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
2 NotGonnaGetUs > Ну, я могу согласиться,что обработку целочисленных множеств можно реализовать с помощью ООП, да и то, такой язык не будет жизнеспособным : Код: plaintext 1. 2. 3. 4. А как быть с потребностью реализовывать несчетные множества - чисел с плав.зпт. ? Т.е. не получается создать универсальный язык охватывающий все базовые типы данных математики. И Это в отличие от подхода, когда мы их вводим как отдельную необходимую сущность. Можно или нельзя создать наследника от класса, зависит от того, как он объявлен. Класс стринг не может иметь наследников, ты не можешь переопредлить ни один его метод, от этого же он не становится примитивным классом :) > Здесь, мне кажется, ты не правильно меня понял . Я хотел сказать,что необходимы примитивные типы данных именно как базовые типы, на которых бы строились все остальные операции языка и поэтому нельзя допускать переопределение операций над примитивными типами. Иначе бы различные программы по разному интерпретирующие операции над одним и тем же примитивным типом не поняли бы друг друга. Поэтому это и есть необходимое условие для примитивных типов или их заменителей. Кстати, ты не ответил, в SmallTalk Integer() - финальный ? B еще , все же не мог бы ты объяснить, то, что я спрашивал выше - То что передача по ссылке приводит к накладным расходам на понимание кода. Так не видно, что труднее понимать. Объясните, плиз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 14:19 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
kefi2 NotGonnaGetUs > Ну, я могу согласиться,что обработку целочисленных множеств можно реализовать с помощью ООП, да и то, такой язык не будет жизнеспособным : Код: plaintext 1. 2. 3. 4. С двоичной записью знаком? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. А как быть с потребностью реализовывать несчетные множества - чисел с плав.зпт. ? Не существует в языках программирования несчётных множеств. Неужели не очевидно? Мой Integer и то универсальнее int - в java. У меня макс.значение ограничено только памятью :) Т.е. не получается создать универсальный язык охватывающий все базовые типы данных математики. И Это в отличие от подхода, когда мы их вводим как отдельную необходимую сущность. Я привёл пример, показывающий, что необходимую сущность натуральное число - можно спокойно не вводить. Точнее ввести её в качестве объекта. Реализация объекта - в натив кодах, или при помощи "чистого" языка - дело десятое. Что называть базовым типом данных математики - тоже далеко не очевидно. Мне кажется тип "произвольная функция многих переменных" и операции интеграл, производная вполне "базовый тип данных математики". Тебе тоже так кажется? И ты считаешь, что нужно создать такой примитивный тип? Здесь, мне кажется, ты не правильно меня понял . Я хотел сказать,что необходимы примитивные типы данных именно как базовые типы, на которых бы строились все остальные операции языка и поэтому нельзя допускать переопределение операций над примитивными типами. Иначе бы различные программы по разному интерпретирующие операции над одним и тем же примитивным типом не поняли бы друг друга. Поэтому это и есть необходимое условие для примитивных типов или их заменителей. Ну еб-та. Каждая программа в праве использовать ту реализацию Integer, что ей хочется. Если тебе хочется что бы выполнялось "необходимое тебе условие", добавь модификатор final в определении класса. Кстати, ты не ответил, в SmallTalk Integer() - финальный ? А был такой вопрос? Я не в курсе. Если интресно, google.ru поможет. Не зависимо от это, тот факт, что в SmallTalk нет примитивных типов - останется фактом. ------ Больше я не буду говорить на эту тему. Пойми простую вещь. То что ты называешь примитивными типами объединяет две вещи: - представление в виде строк, для того что бы программист мог проинициализировать некую сущность(целое число, дробное число). - действия над этими сущностями (умножить, поделить, привести целое к вещественному и т.д.). String и "фывфыв" - пример того, что константная запись не обязательно обозначает примитивный тип. int и 1231 - пример примитивного типа. Но ничто, абсолютно ничто, не мешает int заменить на Integer, такой же класс, как String. И тогда в языке не останется примитивных типов. Об этом говорит автор книжки, на которую ты сслылся. Если это трудно понять, то сорри :) B еще , все же не мог бы ты объяснить, то, что я спрашивал выше - То что передача по ссылке приводит к накладным расходам на понимание кода. Так не видно, что труднее понимать. Объясните, плиз. Пробовал читать чужой код, особенно такой, где нет комментариев? Глядя на вызов m(a,s) - ты сразу скажешь, что этот метод может изменить ссылку s, так что она будет ссылаться на другой объект? А сколько времени потребуется, что бы выяснить в каких случаях ccылка останется не изменной, а будет просто изменено состояние объекта? А теперь учти, что метод m может быть реализован 10 разными способами, после того, как код его использующий был уже написан. В случае предачи по значению - всё просто - "a" всега будет "а", "s" всегда ссылка на один и тот же объект после вызова любого метода. Сторонники процедурного программирования будут от этого плакать - их проблемы. Даже не знаю, как подругому это написать. В живую это на много проще сделать :) Можешь считать это всё лично моим мнением и мнением ряда других программистов, и не принимать за истину в последней инстанции :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 17:23 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs Сторонники процедурного программирования будут от этого плакать - их проблемы. ...или научатся не пользоваться примитивными типами, а начнут определять собственные классы и возвращать их результатом работы метода :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 18:01 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
Зашедший NotGonnaGetUs Сторонники процедурного программирования будут от этого плакать - их проблемы. ...или научатся не пользоваться примитивными типами, а начнут определять собственные классы и возвращать их результатом работы метода :) Мне кажется, что от этого они станут плакать ещё больше, но позже :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 18:04 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
С двоичной записью знаком? > Двоичная или еще какая запись здесь абсолютно параллельно. Ты ВСЕГДА вынужден будешь вначале создать с огромными трудностями некое данное а потом его использовать. И это все справедливо ТОЛЬКО для натуральных чисел. Не существует в языках программирования несчётных множеств. Неужели не очевидно? > Зато существет их приближение (в в технике никогда ничего другого и не может быть - только приближения) - скажем , double а Java, определяемое возможностями реализации - разрядной сеткой и способностью АЛУ процессора выполять операции над ним. У тебя же никогда не будет оно введено, как,впрочем, и операция деления. У меня макс.значение ограничено только памятью :) > И бесконечным усложнением программы, связаном с определением данного всякий раз как только потребуется его использовать. Что называть базовым типом данных математики - тоже далеко не очевидно. Мне кажется тип "произвольная функция многих переменных" и операции интеграл, производная вполне "базовый тип данных математики". >Базовые типы - это основные числовые подмножества действительных чисел : целые(с натуральными внутри), рациональные и иррациональные. Плюс аксиоматически введенные операции Сложения и Умножения над действит. числами. Все! Все остальное построено на них. Кстати, ты не ответил, в SmallTalk Integer() - финальный ? А был такой вопрос? Я не в курсе. > Вопрос этот следовал из моего ответа на то, что в SmallTalk нет примитивных типов Если ты не в курсе, то зачем утверждать? Или надо уж тогда показать это. Пойми простую вещь. То что ты называешь примитивными типами объединяет две вещи: - представление в виде строк, для того что бы программист мог проинициализировать некую сущность(целое число, дробное число). - действия над этими сущностями (умножить, поделить, привести целое к вещественному и т.д.). > Так я так и понимаю, и понимаю, что не удастся с помощюь ООП конечной(а не бесконечно длинной ) программой описать числовые множества, необходимые для работы. Пробовал читать чужой код, особенно такой, где нет комментариев? Глядя на вызов m(a,s) - ты сразу скажешь, что этот метод может изменить ссылку s, так что она будет ссылаться на другой объект? А сколько времени потребуется, что бы выяснить в каких случаях ccылка останется не изменной, > А сделать вызов с m(a,@s) было слабо придумать - тогда бы сразу было видно по ссылке передается или нет. Вот и вся недолга' ;) ---------------------------- PS. Если вы пользуетесь(причем,заметьте, - всю жизнь) примитивными типами, а не строите свои, используя мощь ООП, получается вы являетесь сторонниками процедурного программирования ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 20:45 |
|
||
|
Объекты типа String, Integer, Double и т.д., как аргументы функции
|
|||
|---|---|---|---|
|
#18+
По сути речь идет о том, можно ли, используя только концепцию ООП, не вводя некоторых примитивных (базовых) типов и операций над ними, построить язык универсальный программирования. Ну, если используя только возможности создания новых объектов, можно реализовать в конечном коде все то, что умеет делать АЛУ с числами, то тогда я соглашусь с тем, что возможно не использовать примитивные типы. Хотя хотелось бы увидеть примеры реализации. По всей видимости , такой язык получится с очень сложным представлением этих данных и сложной их обработкой. Что и cделает его нежизнеспособным. Поэтому я и про SmallTalk сомневаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 21:34 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=32935182&tid=2152877]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
143ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 467ms |

| 0 / 0 |
