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
8556

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

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
8556

(кортежи в 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
8556

(Оффтоп)

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
8556

(Оффтоп)

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
8556

(Оффтоп)

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
8556

(Оффтоп)

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  След.

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



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

Сейчас этот форум просматривают: miflin


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

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