Re[11]: Статья Н.Вирта: взгляд из Зазеркалья
От: Mamut Швеция http://dmitriid.com
Дата: 04.02.06 14:49
Оценка: -2
M>Но первый барьер — это понимания смысла операции присваивания.

Золотые слова!

M>И в преодолении этого барьера символ = не помогает.


Но и не мешает, что самое главное!
Математика:

f(x) = 2x + 1
a = f(2)
b = f(4)

a + b = ?


Во второй и третьей строчке — именно присваивание. И никаких проблем оно не вызывает.

M>Не понимаю, это ведь очевидно, о чем здесь спорить? Если в китайском, напрмиер, стол будет называться стулом, то это точно не поможет в постижении сужности стола.


Именно! И если операция присваивания будет обозначаться знаком =, := или <-, легче от этого никак не станет.

M>Хотя любому из Вас это ясно, от того что вы это знаете!!! Я это понял и осознал, как понял и осознал знак = в си и := в паскале.


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


Какое?

[skip]


M>Главное то, суть познать! Как хотите здесь плюйтесь, но чтобы получить 6 + 7 = 13, нужно

Z>>
Z>>write(6+7);
Z>>

Z>>ну а это НИКАК с матиматикой не согласуется

M>Почему не согласуется? Вполне себе нормальная композиция двух функций: write и +.


Композиция, это которая (g o f)(x) = (g(f(x)))? Ну так в Паскале она даже близко на такую не похожа. Должна быть, как минимум, такая:

write(+(6 7))


Тогда — да, композиция Тем более, что в Паскале это называли, по-моему, всегда опреаторами. Это в С++, да еще и в универе, да еще и не на самом первом курсе, когда изучается что-то типа Introduction to C++ 102, когда изучается перегрузка функций — тогда только приходит понимание — а! оно ж тоже функция!

В функциональных языках с этим легче. Ну так они и претендуют на следование определенным математическим моделям.
... << RSDN@Home 1.2.0 alpha rev. 619>>


dmitriid.comGitHubLinkedIn
Re[13]: Статья Н.Вирта: взгляд из Зазеркалья
От: alexeiz  
Дата: 05.02.06 00:03
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Я не знаю, что такое Оберон, но однозначно могу сказать, что на комплексных числах Фортран кроет С++ по скорости. И иначе быть не может, поскольку комплексные числа — это встроенный тип в Фортране и оптимизатор все про них знает. А в C++ это некий класс, просто класс. Класс как класс и всех делов.


"однозначно могу сказать" == моё большое IMHO

In a comparison of FORTRAN-77 and C++, Kent Budge and his associates programmed a complex number test case in both languages. (complex is a built-in type in FORTRAN; in C++, it is a concrete class with two members, one real and one imaginary. Standard C++ has made the complex class part of the standard library.)
...
Time comparisons against the FORTRAN-77 code showed the FORTRAN code to be nearly twice as fast. Their first assumption was to blame the temporaries. To verify that, they hand-eliminated all temporaries in the intermediate cfront output. As expected, the performance increased two-fold and equaled that of FORTRAN-77.

(C) Inside the C++ Object Model, Stanley B. Lippman


Это было в 94м. А вот ещё: http://www.oonumerics.org/blitz/benchmarks/

Удивлюсь, если FORTRAN где либо сможет перерасти по производительности C++.

Конечно, могут быть и клинические случаи (типа "В результате, программа Ткачёва на Component Pascal оказалась в 8 раз быстрее программы на С++
Автор: Сергей Губанов
Дата: 02.02.06
", s/Component\sPascal/FORTRAN/), но мы им верить не будем, так как они не заслуживают никакого доверия.
Re[12]: Статья Н.Вирта: взгляд из Зазеркалья
От: Дьяченко Александр Россия  
Дата: 05.02.06 05:43
Оценка:
Здравствуйте, zitz, Вы писали:

Z>Программирования не матиматика! Чтобы получить ответ нужно все сделать по шагам. Это же из ряда задач:

Z>
Z>Какие дествия нужно сделать, чтобы запихать бегемота в холодильник? 
Z>

Z>Ответ:
Z>
Z>Взять бегемота, открыть холодильник, засунуть бегемота в холодильник, закрыть холодильник.
Z>

Z>Вот Вам следующая задача:
Z>
Z>Какие действия нужно сделать, чтобы запихать жирафа в холодильник?
Z>


Простые :
1. Открыть холодильник
2. Вытащить бегемота из холодильника
3. Запихать жирафа в холодильник
4. Закрыть холодильник
... << RSDN@Home 1.2.0 alpha rev. 642>>
Re[12]: Статья Н.Вирта: взгляд из Зазеркалья
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 06.02.06 14:19
Оценка: +1
Здравствуйте, Mamut, Вы писали:

M>Математика:

M>

f(x) = 2x + 1
a = f(2)
b = f(4)
a + b = ?

M>Во второй и третьей строчке — именно присваивание.

Нет, уравнения.

Это система уравнений:
a = f(2),
b = f(4),
a + b = с,
где f(x) = 2x + 1

Решение: a = 5, b = 9, c = 14.
Re[9]: Статья Н.Вирта: взгляд из Зазеркалья
От: jazzer Россия Skype: enerjazzer
Дата: 06.02.06 19:43
Оценка:
Здравствуйте, Mamut, Вы писали:

СГ>>Система программирования Mathematica отличилась тем, что неравенство обозначается именно так как в математике:


M>Ндяяя... Вводится или дополнительным кликом по тулбару или комбинацией клавиш, я так понимаю.


Все проще :)
Там за основу принята нотация LaTeX, т.е. формулы пишутсяn не особо медленнее, чем в техе.
И ели тебе нужно ввести нечто нетривиальное, нажимаешь Esc (появляется символ типа двоеточия), потом пишешь, что тебе нужно (!= или там HypergeometricP) и повторным Esc закрываешь все, что написал — оно преобразуется в символ (если нигде не ошибся). Соответственно, в процессе написания можно и подредактировать, если где опечатался. Причем таких красот можешь еще и своих нагенерить, если разрабатываешь нечто новое со своей системой обозначений. Очень удобно.

Ну, конечно же, можно и комбинацию клавиш ввести, но это уже для настоящих маньяков :)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[13]: Статья Н.Вирта: взгляд из Зазеркалья
От: Mamut Швеция http://dmitriid.com
Дата: 07.02.06 08:23
Оценка: -2
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, Mamut, Вы писали:


M>>Математика:

M>>

СГ>f(x) = 2x + 1
СГ>a = f(2)
СГ>b = f(4)
СГ>a + b = ?

M>>Во второй и третьей строчке — именно присваивание.

СГ>Нет, уравнения.


СГ>Это система уравнений:



Никакая эта не система уравнений Ну, то есть да, но. a = f(2) — это не равенство, f(2) != a. Мы присваеваем символу а значение, вычисляемое функцией f с заданными параметрами. Здесь знак = имеет абсолютно такое же значение, как и в:
int f(x)
{
    return 2*x + 1;
}

void main()
{
    int a, b;
    a = f(2);
    b = f(4);
    cout << (a + b);
}


Ну и где здесь сложность, вызываемая знаком "="?
... << RSDN@Home 1.2.0 alpha rev. 619>>


dmitriid.comGitHubLinkedIn
Re[14]: Статья Н.Вирта: взгляд из Зазеркалья
От: gbear Россия  
Дата: 07.02.06 08:49
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Ну, то есть да, но. a = f(2) — это не равенство, f(2) != a.


Т.е. Вы утверждаете, что запись вида:

2x + 1 = f(x)
f(2) = a
f(4) = b
? = a + b

Не верна?

---
С уважением, Сиваков Константин.
Re[15]: Статья Н.Вирта: взгляд из Зазеркалья
От: Mamut Швеция http://dmitriid.com
Дата: 07.02.06 09:21
Оценка:
M>>Ну, то есть да, но. a = f(2) — это не равенство, f(2) != a.

G>Т.е. Вы утверждаете, что запись вида:

G>

G>2x + 1 = f(x)
G>f(2) = a
G>f(4) = b
G>? = a + b

G>Не верна?

"Во валит, гад" (с) анекдот

Возможно, с точки зрения математика, она и верна. Но "простому рабочему парню" непонятна — a и b еще ж "не инициализированы"

Ну, для меня лично, как минимум, a = f(2) в математике всегда означало присвоение. Даже еще в те времена, когда я и программировать-то не мог. И в обратном вы меня не переубедите
... << RSDN@Home 1.2.0 alpha rev. 619>>


dmitriid.comGitHubLinkedIn
Re[4]: Статья Н.Вирта: взгляд из Зазеркалья
От: Сергей Туленцев Россия http://software.tulentsev.com
Дата: 07.02.06 09:29
Оценка:
Здравствуйте, GlebZ, Вы писали:

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


F>>>>Остроумна критика операторов ++/-- (Вирт считает, что это уродство).

GZ>>>Я тоже.
CC>>Обоснуй почему это уродство... Только тем, что можно писать x+++y ? Тогда русский язык с его "Казнить нельзя помиловать" тоже есть уродство. Запятая надо что понять смысл? Точно так же простой пробел исправит непонятки: x++ +y или x+ ++y
GZ>Когда быстро читаешь текст, подобные операции малозаметны. И всегда приходится дополнительно задумываться, чтобы это значило. Что сначало приплюсовало, или что-то другое. Поэтому я очень редко их вставляю не на новой строке. И пользуюсь только x++; Выражения типа while(*x++==*y++) для меня слишком сложны. Такой я глупый программист.

Хорошо еще, что нельзя писать x+++++y. Хотя, если пробелы поставить, то работает (x++ + ++y)
--
Re[14]: Статья Н.Вирта: взгляд из Зазеркалья
От: Кодёнок  
Дата: 07.02.06 09:59
Оценка: 10 (1)
Здравствуйте, Mamut, Вы писали:

M>Никакая эта не система уравнений Ну, то есть да, но. a = f(2) — это не равенство, f(2) != a. Мы присваеваем символу а значение, вычисляемое функцией f с заданными параметрами. Здесь знак = имеет абсолютно такое же значение, как и в:


Ты путаешь присваивание с декларацией, и вообще воспринимаешь математику как императивный ЯП. Это принципиальная разница:

M>a = f(2) — это не равенство


это равенстно, _по определению_ Такова математическая запись равенства (... = ...)

M>f(2) != a


Ошибаешься. Они равны. f(2) = a, это тоже равенстно. По определению, "a = b" и "b = a" всегда одновременно либо выполняются, либо не выполнятся, для любых a и b.

M>Мы присваеваем символу а значение, вычисляемое функцией f с заданными параметрами


Это вообще чудовищно В математике, запись "a = f(2)" вообще никакого вычисления значения не производит! Ни сразу, ни потом, никогда. В записи "a = f(2)" не кроется понятия "вычисление значения и передача его куда-то". Тут просто написано, что "а" и "f(2)" — одно и то же.

Вот это:
f(x) = 2x + 1
a = f(2)
b = f(4)

Описание некого виртуального мира. Просто описание. В отличие от ЯП, никаких вычислений этим описанием не производится.

Это описание является достаточным, чтобы a + b было определено в этом же мире, и имело одно конкретное значение. Если тебе хочется, ты можешь вычислить "a + b" любым способом. Например, сначала подсчитать f(2), затем f(4), затем сумму. Или, преобразовать "a + b" -> "f(2) + f(4)" -> "2*2 + 1 + 2*4 + 1" -> "4 + 1 + 8 + 1" -> "14". Это разные подходы. Описание не навязывает никакого подхода вообще.

Попробуй покурить вот это:
a = b + 1
b = a + 1

Тебе не удастся думать об этом, как о "присвоении `а` значения, которое вычисляется прибавлением к значению `b` единицы", т.к. b определяется через значение a, которое ещё не вычислено. А вот в математике это просто напросто подразумевает, что a = b = 0, не более того. Если ты подумаешь об этом как о "присвоениях вычисленного значения", ты никогда не получишь значений 0 одновременно в a и b.

M>Но и не мешает, что самое главное!

M>Математика:
M>f(x) = 2x + 1
M>a = f(2)
M>b = f(4)
M>
M>a + b = ?
M>
M>Во второй и третьей строчке — именно присваивание. И никаких проблем оно не вызывает.

Проблем с записями вида "a = b" нет ни в математике, ни в ЯП. Но означают они обычно кардинально разные вещи А проблемы у того, кто желает кормить компилятору Паскаля то же самое, что написано у него в тетрадке по математике. Но это будет тоже самое, как если кто-то захочет кипятить воду в холодильнике. То что и в холодильнике, и в печке есть место для кастрюли с водой, совершенно ничего не значит.
Re[15]: Статья Н.Вирта: взгляд из Зазеркалья
От: Кодёнок  
Дата: 07.02.06 10:12
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Попробуй покурить вот это:

Кё>a = b + 1
Кё>b = a + 1

Извините, я фигню написал. Хотел что-то вроде этого:

a = 1 — b
b = 1 + a
Re[9]: Статья Н.Вирта: взгляд из Зазеркалья
От: minorlogic Украина  
Дата: 07.02.06 11:11
Оценка:
Здравствуйте, mefrill, Вы писали:

Вот вот! теоретики всегда забывают что ПИСАТЬ И ЧИТАТЬ "}" легче чем "end" и "=" легче чем ":=" , особенно забывая , что это одни из самых используемых операций
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[16]: Статья Н.Вирта: взгляд из Зазеркалья
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 07.02.06 11:26
Оценка:
Кодёнок,

Кё>>Попробуй покурить вот это:

Кё>>a = b + 1
Кё>>b = a + 1

Кё>Извините, я фигню написал.


Да нет, нормально: если мы будем рассматривать решения в циклической группой порядка 2, то смысл очень даже появляется. Если даже будем рассматривать решения в поле вещественных чисел R, то смысл опять же есть:

Значок = — это отношение. Отношение R(x,y) — это подмножество декартового произведения X x Y.
Значок + — это отображение. Отображение f: X -> Y — это... гхм.. отображение (неопределяемое понятие)

Последовательность символов
a = b + 1

есть отношение R(a, f(b)), где R — отношение равенства, f(b) — отображение прибавляющее единицу
Аналогично, последовательность символов
b = a + 1

есть отношение R(f(a), b).

Наконец,
a = b + 1
b = a + 1

есть пересечение множеств R(a, f(b)) и R(f(a), b).

То есть этими двумя равенствами ты описал подмножество декартового произведения A x B (a \in A, b \in B), а не фигню.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[5]: Статья Н.Вирта: взгляд из Зазеркалья
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 07.02.06 11:31
Оценка: 1 (1)
Здравствуйте, Сергей Туленцев, Вы писали:

СТ>Хотя, если пробелы поставить, то работает (x++ + ++y)


Так у Вирта в статье как раз такая галиматья и критикуется:

Уродство конструкции обычно проявляется в комбинации с другими средствами языка. На языке C программист может написать конструкцию x+++++y, загадку, а не выражение, представляющую проблему даже для сложного синтаксического анализатора. Равняется ли значение этого "выражения" значению ++x+++y+1? Верны ли следующие соотношения?

x+++++y+1==++x+++y
x+++y++==x+++++y+1

Так можно было бы постулировать новую алгебру. Я нахожу совершенно удивительной невозмутимость, с которой мировое сообщество программистов приняло этого нотационного монстра. В 1962 г. установившиеся традиции аналогичным образом подорвало постулирование правой ассоциативности операций в языке APL. Тогда x+y+z неожиданно стало обозначать x+(y+z), а x-y-z — x-y+z.

Re[12]: Статья Н.Вирта: взгляд из Зазеркалья
От: marat321  
Дата: 07.02.06 11:37
Оценка: +1
Здравствуйте, Кодт, Вы писали:

К>В языке Васик для микроэвм Ириша вместо $ использовалась черепашка ¤ — по той же причине.


Я думаю это было из-за того, что СССР не воспринимал буржуазные символы. На Искрах и на УКНЦ-ВМ та же самая черепашка была.
Тырили у загнивающего капитализма и добавляли капельку патриотичности (i8080 -> КР580ВМ80А, PDP-11 -> БК0010(К1801ВМ1), и т.д.)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Статья Н.Вирта: взгляд из Зазеркалья
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 07.02.06 11:39
Оценка:
Здравствуйте, jazzer, Вы писали:

J>И ели тебе нужно ввести нечто нетривиальное


Пишешь:

\[Alpha]

\[CapitalGamma]

сразу после написания этот текст автоматически схлопывается в греческий символ. Теперь это просто буква — 1 символ.
Re[17]: Статья Н.Вирта: взгляд из Зазеркалья
От: Кодёнок  
Дата: 07.02.06 11:58
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

Кё>>Извините, я фигню написал.


LCR>То есть этими двумя равенствами ты описал подмножество декартового произведения A x B (a \in A, b \in B), а не фигню.


Я на самом деле хотел показать простой пример с конкретными вещественными значениями, так чтобы их вычисление не сводилось к выполнению равенств как присваиваний. Потому говорю — фигня вышла
Re[18]: Статья Н.Вирта: взгляд из Зазеркалья
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 07.02.06 12:01
Оценка:
Кодёнок,

Кё>Я на самом деле хотел показать простой пример с конкретными вещественными значениями, так чтобы их вычисление не сводилось к выполнению равенств как присваиваний.


Ага, понятно.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[4]: Статья Н.Вирта: взгляд из Зазеркалья
От: vitaly_spb Россия  
Дата: 07.02.06 12:51
Оценка:
WH>Про жабу ничего не знаю но есть слухи что C# делают 4 человека.

Anders Hejlsberg: The original C# design team was Scott Wiltamuth, Peter Golde, Peter Sollich, Eric Gunnerson, and myself. The C# 2.0 design team is Peter Hallam, Shon Katzenberger, Todd Proebsting, and myself. Most of the credit for generics goes to Don Syme and Andrew Kennedy from Microsoft Research.


http://www.artima.com/intv/csdes.html

Но это design team, а код пишут большее число человек скорее всего.
...Ei incumbit probatio, qui dicit, non qui negat...
Посыпаю голову пеплом
От: Mamut Швеция http://dmitriid.com
Дата: 07.02.06 15:13
Оценка:
В общем, посыпаю голову пеплом.

Все так, все так.
... << RSDN@Home 1.2.0 alpha rev. 619>>


dmitriid.comGitHubLinkedIn
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.