2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3  След.
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 19:15 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Называние кортежей векторами - это программистский жаргон: там векторами принято называть кортежи элементов одного множества, изначально - чисел.

К матрицам: разумеется, надо $[A][B]=\left[\begin{bmatrix}1&0\\0&-1\end{bmatrix}^{\vphantom{1}}\right]$ :-)

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 19:21 
Заслуженный участник


27/04/09
28128
Munin в сообщении #636993 писал(а):
Называние кортежей векторами - это программистский жаргон: там векторами принято называть кортежи элементов одного множества, изначально - чисел.
Да, как-то вроде уже встречалось такое объяснение. Но разве это уже не должно было уйти в прошлое? Я вот только в C++ STL видел один vector<T> — и всё. Везде списки.

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 21:13 
Заслуженный участник
Аватара пользователя


30/01/06
72407
А зачем этому уходить в прошлое? Для программирования именно это название удобно.

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 21:33 
Заслуженный участник


08/04/08
8560

(про программистский жаргон и векторы)

Munin в сообщении #636993 писал(а):
Называние кортежей векторами - это программистский жаргон: там векторами принято называть кортежи элементов одного множества, изначально - чисел.
Ммм, на самом деле у программистов с этим все похуже. Изначально там есть некие конкретные структуры данных, более конкретные чем множества или вектора. Конкретизация проявляется в размере типа или объекта (ну еще в объявлении его, но это ладно) и в операциях с ним. Самое первое - это массив - это упорядоченное мультимножество заранее (до компиляции) объявленного размера. Размер массива вычислить за $O(1)$ как функцию от массива нельзя - нужна переменная, например, либо никак. В других языках основная структура - это список, либо более экзотические структуры. Потом идут указатели, но я с ними так и не разобрался, потому точно не скажу, но более сложные структуры делаются с помощью указателей. Векторов там сначала просто нет, а потом они появляются как классы в разных языках, написанные на основе более базовых структур. В С++ (м.б. в C#) вектор - это именно некий конкретный класс, для его экземпляров (собственно, векторов) мы можем вычислить его размер через метод (для массива - не можем), быстро вставить элемент в конец или удалить его оттуда, все остальное работает медленнее. Т.е. если Вы сишнику скажете "вектор", то он поймет это как вектор, если дельфину (еще PHPшнику, SQL-щику и, наверное, Lisp-еру) так скажете - он либо переспросит, либо подумает про массив (лиспер - про список) и будет явно говорить "массив" (ассоциативный массив в PHP, список в лиспе), либо еще чего. Множества есть в паскале, но там это тоже то ли специальные типы, то ли даже классы и они на обычные множества тоже, помниться, не сильно похожи. Слово "кортеж" я у простых программистов не видел, слова "множество" и "вектор" они не употребляют в математическом смысле - либо как классы, либо геометрически, либо не употребляют.
У фортрановцев, наверное, только массивы, в Васике скорее всего тоже, на ассемблерах наверное имеет место нечто страшное. У кого-то еще есть стеки, чем они от массивов отличаются, я не знаю. В Жабе скорее всего как в С++. А еще есть очереди.
Где-то в Вики видел страшную таблицу с аналогами векторов и массивов как структур данных в разных ЯП. Таблица на 3 стр была. Сейчас не нашел. Но немного ужаснуться можно тут:
http://ru.wikipedia.org/wiki/%D0%A1%D0% ... 1%8B%D1%85

Ну это я так :oops:

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 21:52 
Заслуженный участник


28/04/09
1933

(Sonic86)

Sonic86 в сообщении #637060 писал(а):
Слово "кортеж" я у простых программистов не видел
Даже у тех, кто пишет на SQL? :wink:

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 22:01 
Заслуженный участник


08/04/08
8560

(кортежи в SQL)

EtCetera в сообщении #637080 писал(а):
Даже у тех, кто пишет на SQL? :wink:
Да, вру. Вроде так:
Код:
row TABLE%type;

:oops:
Но это совсем не абстрактный кортеж как в математике: для создания такого кортежа надо объявить таблицу именно с таким набором столбцов, если захотите один тип в кортеже исправить - надо создать другую таблицу. Это при том, что таблицы от фонаря не создаются, обычно в них данные пишут. Кортеж бесконечного размера также невозможен. Нельзя взять произвольное число $n$ типа number и объявить от него кортеж из $n$ чисел типа number - для произвольного выполнения этой операции надо создать 1-ю таблицу с одним столбцом типа number (кстати, число знаков в number надо писать), 2-ю таблицу с двумя столбцами типа number, 3-ю таблицу с двумя столбцами типа number.... Либо юзать динамический SQL... ха! а DML в динамическом SQL-е не выполняются вообще. Кроме того, вообще нельзя объявить кортеж кортежей.
Так что это совсем не кортеж, а некая специальная SQL-ная фигня.

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 22:02 
Заслуженный участник
Аватара пользователя


30/01/06
72407

(Оффтоп)

Sonic86 в сообщении #637060 писал(а):
В С++ (м.б. в C#) вектор - это именно некий конкретный класс

Нет, вектор - это абстрактное понятие, а вот vector - уже конкретный класс, точнее, std::vector<> - конкретный шаблон класса.

Sonic86 в сообщении #637060 писал(а):
Т.е. если Вы сишнику скажете "вектор", то он поймет это как вектор, если дельфину (еще PHPшнику, SQL-щику и, наверное, Lisp-еру) так скажете - он либо переспросит, либо подумает про массив (лиспер - про список) и будет явно говорить "массив" (ассоциативный массив в PHP, список в лиспе), либо еще чего.

Любой программист должен понимать "вектор" как массив. В лиспе они, кстати, есть, хотя и не в чистом. А вот понимать под "вектором" список - ошибка, которую грамотный лиспер не совершит.

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 22:09 
Заслуженный участник


08/04/08
8560

(Оффтоп)

Munin в сообщении #637087 писал(а):
Нет, вектор - это абстрактное понятие
Munin в сообщении #637087 писал(а):
Любой программист должен понимать "вектор" как массив.
Ну может и должен. Я не знаю.

Munin в сообщении #637087 писал(а):
Любой программист должен понимать "вектор" как массив.
Munin в сообщении #637087 писал(а):
А вот понимать под "вектором" список - ошибка
Не очень понятно. По идее вектор - это как не массив, так и не список. Частично, по разным причинам, частично - по общим. Если общаться на естественном языке и устанавливать соответствие между математическими терминами и программистскими, то как массиву, так и списку будет соответствовать вектор.
Т.е. либо они оба соответствуют, либо оба не соответствуют. Почему список может не соответствовать, а вектор соответствовать - мне не особенно понятно.

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 22:09 
Заслуженный участник
Аватара пользователя


30/01/06
72407

(Оффтоп)

Sonic86 в сообщении #637060 писал(а):
У кого-то еще есть стеки, чем они от массивов отличаются, я не знаю.

Структура данных - это, грубо говоря:
1. Какие операции с ней можно делать.
2. С какой вычислительной эффективностью (затраты памяти и времени).
Вектор aka массив - это $N$ элементов, занимающих в памяти $O(N),$ выборка и запись любого из них за $O(1),$ вставки-вырезания-изменения размера нет. Динамический вектор, как в C++, позволяет менять размер, за время $O(N)$ в худшем случае, и $O(\ln N)$ амортизированно; позволяет добавлять и удалять последний элемент за счёт изменения размера.


-- 28.10.2012 23:15:32 --

(Оффтоп)

Sonic86 в сообщении #637091 писал(а):
Не очень понятно. По идее вектор - это как не массив, так и не список.

Да не, вектор и массив - одно и то же. У программистов. А список - это $N$ элементов, занимающих в памяти $O(N),$ выборка и запись $k$-го по счёту - за $O(k),$ (то есть амортизированно и пессимально за $O(N)$), но если на него сохранили указатель (aka итератор), то за $O(1),$ есть вставка-вырезание в любом месте за $O(1).$ Вставка-вырезание не инвалидит итераторов, в отличие от динамического массива.

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 22:24 
Заслуженный участник


08/04/08
8560

(Оффтоп)

Munin в сообщении #637092 писал(а):
Да не, вектор и массив - одно и то же. У программистов.
В смысле Вы думаете, что программисты используют термин "вектор" в программистском смысле? Хм, не знаю, я таких ни в реале, ни в гугле не видел... Если имелся ввиду математический смысл, то даже в плане конструирования объектов массив более ограничен, чем вектор - у массива нельзя найти его длину.

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 22:34 
Заслуженный участник
Аватара пользователя


30/01/06
72407

(Оффтоп)

Sonic86 в сообщении #637104 писал(а):
В смысле Вы думаете, что программисты используют термин "вектор" в программистском смысле?

От ситуации зависит. Я думаю, альпинисты тоже слово "кошка" используют не всегда в альпинистском смысле...

Sonic86 в сообщении #637104 писал(а):
у массива нельзя найти его длину

Как это нельзя? Она у него просто есть. Язык может не предоставлять к ней доступа, но это редкое извращение.

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 22:49 
Заслуженный участник


08/04/08
8560

(Оффтоп)

Munin в сообщении #637110 писал(а):
От ситуации зависит. Я думаю, альпинисты тоже слово "кошка" используют не всегда в альпинистском смысле...
Ну вот я не видел просто, чтобы они слово "вектор" использовали в программистском смысле. Ну может у меня знакомые программисты такие :-)

Munin в сообщении #637110 писал(а):
Как это нельзя? Она у него просто есть. Язык может не предоставлять к ней доступа, но это редкое извращение.
Ну вот нельзя. Надо переменную хранить, чтобы в цикле бегать по массиву, да и вообще, для большей ясности кода. И она иногда нужна бывает (сейчас уже пример не приведу - не помню).
А я думал, что это массовое извращение :roll: Надо посмотреть, как в Жабе сделано. Если в Жабе так же, как в С++, то извращение именно массовое.
Есть еще такое: нельзя объявить массив массивов. Нельзя объявить один массив разнородных объектов. Несмотря на простоту и некоторое удобство, массив плохо вписывается в конструкции типообразования. :-(

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение28.10.2012, 23:02 
Заслуженный участник
Аватара пользователя


30/01/06
72407

(Оффтоп)

Sonic86 в сообщении #637117 писал(а):
Ну вот я не видел просто, чтобы они слово "вектор" использовали в программистском смысле. Ну может у меня знакомые программисты такие

Наверное, сейчас это, действительно, осталось только в узком смысле C++-ного vector<>. Зато можно встретить в таком смысле в книжках годов 70-х.

Sonic86 в сообщении #637117 писал(а):
Ну вот нельзя. Надо переменную хранить, чтобы в цикле бегать по массиву

Зачем переменную, когда это константа?

Разумеется, для динамических массивов, и для массивов неопределённой длины (бывает такое извращение) - это переменная, и иногда недоступная.

Sonic86 в сообщении #637117 писал(а):
Есть еще такое: нельзя объявить массив массивов.

Да вы что! Можно, конечно.

Sonic86 в сообщении #637117 писал(а):
Нельзя объявить один массив разнородных объектов.

В некоторых языках можно. Ещё в некоторых языках можно иметь массив массивов разной длины.

Sonic86 в сообщении #637117 писал(а):
Несмотря на простоту и некоторое удобство, массив плохо вписывается в конструкции типообразования.

Типообразование начиналось с массивов :-) Дядька Вирт это придумал, или дядька Дейкстра, не помню точно. Книжка называлась "Аглоритмы + структуры данных = PROFIT!!!".

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение29.10.2012, 07:41 
Заслуженный участник


08/04/08
8560

(Оффтоп)

Munin в сообщении #637125 писал(а):
Зачем переменную, когда это константа?
Не знаю. Так можно.

Munin в сообщении #637125 писал(а):
Sonic86 писал(а):
Есть еще такое: нельзя объявить массив массивов.
Да вы что! Можно, конечно.
И как? Пример можете показать?

Munin в сообщении #637125 писал(а):
В некоторых языках можно. Ещё в некоторых языках можно иметь массив массивов разной длины.
Ну это наверное хорошие языки. В С++ нельзя.

 Профиль  
                  
 
 Re: Что такое математическая культура?
Сообщение29.10.2012, 08:30 


05/09/12
2587

(Оффтоп)

Sonic86, я вам опять рискну дать ссылки на некоторые тексты, а вы их, по традиции, можете снова не читать :wink: И продолжать оставаться в текущих представлениях и рассуждать о "хороших языках" в частности.
http://russian.joelonsoftware.com/Artic ... asics.html - и другие статьи с того же сайта, как раз в тему математической культуры
http://www.rsdn.ru/article/cpp/ObjectsAndPointers.xml

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу Пред.  1, 2, 3  След.

Модератор: Модераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group