Re[11]: Контейнеры, комментарий Страуструпа
От: B0FEE664  
Дата: 04.04.12 11:21
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, B0FEE664, Вы писали:


BFE>>

BFE>>Кто-нибудь может сказать, что valarray следовало бы назвать vector(вектор), поскольку он является традиционным математическим вектором, а vector следовало бы назвать array(массив), однако терминология развивалась иначе. valarray — это вектор, оптимизированный для численных расчётов, а vector — это гибкий контейнер разработанный для хранения объектов различного типа и манипулирования с ними, массив же — это низкоуровневый встроенный тип.

BFE>> Бьерн Страуструп

E>IMHO, это только доказывает, что "терминология развивалась" неудачно...

Я думаю, что если посмотреть английский вариант, то станет понятнее, почему vector это не array, который int array[32];

Впрочем, исторические причины очень сильны в C++.
И каждый день — без права на ошибку...
Re[12]: Контейнеры, комментарий Страуструпа
От: Qbit86 Кипр
Дата: 04.04.12 11:37
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Я думаю, что если посмотреть английский вариант, то станет понятнее, почему vector это не array, который int array[32];


Я не очень понял про «array, который int array[32];», и почему это не помешало ввести std::array<int, 32>.
Глаза у меня добрые, но рубашка — смирительная!
Re[13]: Контейнеры, комментарий Страуструпа
От: B0FEE664  
Дата: 04.04.12 11:49
Оценка:
Здравствуйте, Qbit86, Вы писали:

BFE>>Я думаю, что если посмотреть английский вариант, то станет понятнее, почему vector это не array, который int array[32];

Q>Я не очень понял про «array, который int array[32];», и почему это не помешало ввести std::array<int, 32>.

Признаю, пожалуй это я "погорячился".
И каждый день — без права на ошибку...
Re[12]: Контейнеры, комментарий Страуструпа
От: Erop Россия  
Дата: 04.04.12 12:35
Оценка: :)
Здравствуйте, B0FEE664, Вы писали:

E>>IMHO, это только доказывает, что "терминология развивалась" неудачно...

BFE>Я думаю, что если посмотреть английский вариант, то станет понятнее, почему vector это не array, который int array[32];
IMHO, он таков потому, что так захотелось г-ну Степанову

BFE>Впрочем, исторические причины очень сильны в C++.

Интересно, рад ли Степанов, когда его так обызывают?

Я так думаю, что беда рийдёт откуда не ждали. Вот засунут дотнет в винапи, и появится оттуда доступ к коллекциям и прочим разным линкам, тут-то к STL и прийдёт одна северная лиса знакомиться
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Google code style
От: quwy  
Дата: 04.04.12 13:31
Оценка:
Не понимаю, а почему на RSDN не обсуждаются конвенции/нотации, принятые в урюпинской шаражке по внедрению пиратской 1С? Какая разница?
Re[15]: Вектор
От: alex_public  
Дата: 04.04.12 14:03
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Для начала лучше вспомнить, что называли списком, например, Дейкстра или Вирт. Неожиданно оказывается, что это 1 или 2-связный интрузивный список, а никак не список покупок.


Я как раз к этому и вел с самого начала. )))
Re[15]: Вектор
От: alex_public  
Дата: 04.04.12 14:08
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Я дважды озвучил определение вектора, ты этого так и не понял. Вот тебе и «пшик».


Аааа, это всё что смог сказать по этой теме? ))) Я то надеялся что не всё так запущено и просто до сих пор мнёшься с ответом. Мда, печальная картина.

Q>Наоборот, какое отношение имеют универсальные контейнеры C++ к тому, что принято называть векторами?


Ну как бы в этой теме мы обсуждаем C++. Поэтому вполне логичен мой вопрос, а не обратный к нему.

Q>В Лиспе и Хаскеле под списком понимается отнюдь не двусвязный список с возможностью быстрой вставки в середину. Так-то.


Двусвязный или односвязнный — это детали реализации. Их важно знать при использование, но они не влияют на внешний интерфейс.

В данном случае ключевым параметром является возможность доступа по индексу. Как у "списка покупок". Так вот как у нас с этим у тех структур, которые изначально называли списками в мире программирования?
Re[13]: Чтобы вывихнуть мозги, их надо иметь ;)
От: alex_public  
Дата: 04.04.12 14:16
Оценка:
Здравствуйте, Erop, Вы писали:

E>Он, как бы, пытался угадать, какие сложные задачи классно поддержать в языке. От чего-то затеял разделять данные и алгоритмы (этакое ати-ООП), и в основу положил жёстко заданные последовательности.

E>А на практике оказалось нужным уметь работать с наборами, а не с последовательностями (типа SQL зарулил степановский STL), и отказ от ООП тоже пошёл по другому пути...

E>А С++ остался со всей этой не особо нужной алгеброй....


Я вижу немного другое. Он пошёл в сторону функциональных принципов. И кстати как раз сейчас эти принципы переживают новый расцвет. А с учётом появления лямбд в языке всё становится совсем интересно.

Но если писать код в строго императивном стиле, то тогда некоторые подходы STL конечно сомнительны.

E>Дык вот о том и речь...

E>Но у них был систематический просчёт и фейл закономерен. Если хочешь получить что-то юзабельное -- надо идти ОТ ЗАДАЧ, а не от математических красот...

А где фейл то? ) Библиотека стала частью стандарта языка. Всем бы такой фейл. )))

Кстати, сейчас с Бустом происходит тоже самое частями.
Re[13]: Контейнеры, комментарий Страуструпа
От: alex_public  
Дата: 04.04.12 14:20
Оценка:
Здравствуйте, Erop, Вы писали:

E>Я так думаю, что беда рийдёт откуда не ждали. Вот засунут дотнет в винапи, и появится оттуда доступ к коллекциям и прочим разным линкам, тут-то к STL и прийдёт одна северная лиса знакомиться


Это которое через COM будет? )
Re[16]: std::first_rank_tensor
От: Qbit86 Кипр
Дата: 04.04.12 14:27
Оценка: -1 :))
Здравствуйте, alex_public, Вы писали:

Q>>Я дважды озвучил определение вектора, ты этого так и не понял. Вот тебе и «пшик».

_>Аааа, это всё что смог сказать по этой теме?

По этой теме я сказал достаточно. Умному достаточно.

_>))) Я то надеялся что не всё так запущено и просто до сих пор мнёшься с ответом. Мда, печальная картина.


Конечно, печальная. Ты смотришь, как баран на новые ворота, на понятие «векторное пространство», и оно тебе ни о чём не говорит.

Q>>Наоборот, какое отношение имеют универсальные контейнеры C++ к тому, что принято называть векторами?

_>Ну как бы в этой теме мы обсуждаем C++. Поэтому вполне логичен мой вопрос, а не обратный к нему.

Ну и почему индексируемый динамический контейнер в C++ называется «вектор», а не, скажем, «тензор первого ранга»?

_>В данном случае ключевым параметром является возможность доступа по индексу. Как у "списка покупок". ;) Так вот как у нас с этим у тех структур, которые изначально называли списками в мире программирования?


Вот, например, что по этому поводу думает Википедия: «На практике линейные списки обычно реализуются при помощи массивов и связных списков... В зависимости от реализации может быть возможен произвольный доступ к элементам списка.»

Оттуда же то, о чём говоришь ты: «Иногда термин «список» неформально используется также как синоним понятия «связный список».» Заметь, «иногда», а не обычно или изначально. Классическая книга по алгоритмам Кормена и других это подтверждает. Вирта под рукой нет.
Глаза у меня добрые, но рубашка — смирительная!
Re[17]: std::first_rank_tensor
От: Ops Россия  
Дата: 04.04.12 14:47
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Вот, например, что по этому поводу думает Википедия: «На практике линейные списки обычно реализуются при помощи массивов и связных списков... В зависимости от реализации может быть возможен произвольный доступ к элементам списка.»


Q>Оттуда же то, о чём говоришь ты: «Иногда термин «список» неформально используется также как синоним понятия «связный список».» Заметь, «иногда», а не обычно или изначально. Классическая книга по алгоритмам Кормена и других это подтверждает. Вирта под рукой нет.


А про вектор википедия говорит, что в программировании это одномерный массив.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[14]: Чтобы вывихнуть мозги, их надо иметь ;)
От: Erop Россия  
Дата: 04.04.12 15:01
Оценка: 3 (2)
Здравствуйте, alex_public, Вы писали:

_>Я вижу немного другое. Он пошёл в сторону функциональных принципов. И кстати как раз сейчас эти принципы переживают новый расцвет. А с учётом появления лямбд в языке всё становится совсем интересно.


Да не особо-то оно интересно, без GC...
А с GC -- это не совсем С++

Ну и вообще, криво всё это получилось и сложно...

_>А где фейл то? ) Библиотека стала частью стандарта языка. Всем бы такой фейл. )))

Ну она убога. И нуждается в костылях, см. буст

_>Кстати, сейчас с Бустом происходит тоже самое частями.

Вот-вот. На чистом STL вообще жить нельзя, пришлось притащить ещё кое-чего из буста + десятьлет пилить компиляторы на тему скорости компиляциии шаблонов + добавить в язык кучу всякой фигни, вроде лямбд, которые всё равно получились не до конца юзабельными, и auto, чтобы как-то заткнуть проблемы STL...

В принципе это сейчас модно. Вот гуглы компилятор JS залудили, комитет STL пытается выпрямить, рихтуя сам C++...

Но в целом это всё очень сложные решения. Ясно, что есть унаследованный код, совместимость и всё такое, но считать этот путь хоть сколько-нибудь удобным, хорошим и оправданным?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[14]: Контейнеры, комментарий Страуструпа
От: Erop Россия  
Дата: 04.04.12 15:02
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Это которое через COM будет? )

В смысле "через COM"?
Прикрутят поддержку в компилятор прозрачную и всё...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[17]: std::first_rank_tensor
От: night beast СССР  
Дата: 04.04.12 15:07
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Оттуда же то, о чём говоришь ты: «Иногда термин «список» неформально используется также как синоним понятия «связный список».» Заметь, «иногда», а не обычно или изначально. Классическая книга по алгоритмам Кормена и других это подтверждает. Вирта под рукой нет.


А можно подробнее, что конкретно подтверждает Классическая книга по алгоритмам Кормена?
Re[18]: std::first_rank_tensor
От: Qbit86 Кипр
Дата: 04.04.12 15:09
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>А про вектор википедия говорит, что в программировании это одномерный массив.


...И в качестве примера приводит std::vector в C++. То есть да, со времён форсинга этого термина путём набравшего популярность C++ вектор неизбежно стал ассоциироваться с одномерным массивом. В Джаве даже, по-моему, тоже что-то такое есть. А если бы его таки назвали std::first_rank_tensor, то alex_public мне сейчас доказывал бы, что это рационально и естественно, и всегда так было.

И даже если «в программировании» оно и до C++ так было, это ещё не значит, что это название естественное и здравое.
Глаза у меня добрые, но рубашка — смирительная!
Re[18]: Связный список
От: Qbit86 Кипр
Дата: 04.04.12 15:11
Оценка:
Здравствуйте, night beast, Вы писали:

NB>А можно подробнее, что конкретно подтверждает Классическая книга по алгоритмам Кормена?


Использует термин «связный список», а не «список».
Глаза у меня добрые, но рубашка — смирительная!
Re[17]: std::first_rank_tensor
От: alex_public  
Дата: 04.04.12 15:19
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Ну и почему индексируемый динамический контейнер в C++ называется «вектор», а не, скажем, «тензор первого ранга»?


Потому что тензор обладает определёнными свойствами при преобразовании системы координат. В отличие от например произвольной матрицы. Если мы определим для контейнера соответствующие преобразования (что будет довольно странно ), то можно и назвать тензором. А так, одномерный контейнер — вектор, двухмерный — матрица (а не тензор 2-го ранга ). Кстати, матрицы есть в Бусте.

Q>Вот, например, что по этому поводу думает Википедия: «На практике линейные списки обычно реализуются при помощи массивов и связных списков... В зависимости от реализации может быть возможен произвольный доступ к элементам списка.»


Хы, так я могу вообще к любому списку организовать функцию доступа по индексу. Итерируемся нужное количество раз и возвращаем результат. Только как бы зачем нам тогда список? )

Q>Оттуда же то, о чём говоришь ты: «Иногда термин «список» неформально используется также как синоним понятия «связный список».» Заметь, «иногда», а не обычно или изначально. Классическая книга по алгоритмам Кормена и других это подтверждает. Вирта под рукой нет.


Особенно забавно становится если щёлкнуть в твоей ссылке из вики на английский вариант статьи.
Re[15]: Контейнеры, комментарий Страуструпа
От: alex_public  
Дата: 04.04.12 15:22
Оценка:
Здравствуйте, Erop, Вы писали:

_>>Это которое через COM будет? )

E>В смысле "через COM"?
E>Прикрутят поддержку в компилятор прозрачную и всё...

Эээ, не слышал про такие планы. Где можно про это посмотреть?

Хотя всё равно вряд ли буду использовать — всё же кроссплатформенность и всё такое... Но самое по себе в любом случае интересно.
Re[16]: WinRT
От: Qbit86 Кипр
Дата: 04.04.12 15:28
Оценка:
Здравствуйте, alex_public, Вы писали:

E>>...Вот засунут дотнет в винапи, и появится оттуда доступ к коллекциям и прочим разным линкам...

_>Эээ, не слышал про такие планы. Где можно про это посмотреть?

Вероятно, имелось в виду WinRT.
Глаза у меня добрые, но рубашка — смирительная!
Re[19]: Связный список
От: night beast СССР  
Дата: 04.04.12 15:39
Оценка:
Здравствуйте, Qbit86, Вы писали:

NB>>А можно подробнее, что конкретно подтверждает Классическая книга по алгоритмам Кормена?


Q>Использует термин «связный список», а не «список».


Это, конечно, аргумент.
А если в исходниках посмотреть?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.