Основы. Что это?
От: kilonet2  
Дата: 29.10.05 16:41
Оценка: 1 (1)
Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...". Вот я и думаю, что есть эти "основы"? Ассемблер; умение решать алгоритмические задачи вроде ханойской башни ("алгоритмы и структуры данных"); Visual C++ с вездесущими объектами и копанием в устройстве Windows... или что-то ещё — я не знаю.
Интересно узнать ваше мнение с аргументами.

06.11.05 04:10: Перенесено модератором из 'Философия программирования' по просьбам участников — Alex Fedotov
Re: Основы. Что это?
От: _Winnie Россия C++.freerun
Дата: 29.10.05 18:40
Оценка: 15 (3) +3
Здравствуйте, kilonet2, Вы писали:

K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...". Вот я и думаю, что есть эти "основы"? Ассемблер; умение решать алгоритмические задачи вроде ханойской башни ("алгоритмы и структуры данных"); Visual C++ с вездесущими объектами и копанием в устройстве Windows... или что-то ещё — я не знаю.

K>Интересно узнать ваше мнение с аргументами.

Не претендуя на полноту... первое, что взбрело в голову.

Циклы. If. Подпрограммы/функции. И тд. и тп. Общие конструкции всех (императивных?) языков программирования.
Что такое строка. Что такое символ. Чем они отличаются от числа. Что числа бывают целые и дробные. Что точность их ограничена. А если неограничена — значит, там внутри мегапрослойка кода.

Что такое компилятор/интерпретатор.

Знание, что компьютер — это вычислительная машина.
Однажды моя бабушка спросила, можно ли считать на компьютере. Она была сильно удивлена, когда я сказал, что _только_ это и умеет делать — считать.

Знание, что на низком уровне все данные предствленны в виде байтов. В том числе и сама программа. Что такое бит.
Что такое память. Что такое иерархия памятей — регистры/кеш/память/жесткий диск. Что такое машинный код.

Что изображение состоит из (чаще всего, прямоугольных)пикселей. Что звук — последовательность чисел-выборок. Что фильм — последовательность картинок. Что по сети передаются электрические сигналы, потом байты, потом пакеты, потом потоки, потом .html страничеки и уже потом это превращается в то, что вы видите на экране.

Что такое операционная система.

Вообщем, многие вещи, о которых пользователь не знает.
Правильно работающая программа — просто частный случай Undefined Behavior
Re: Основы. Что это?
От: Skipy Rich Россия  
Дата: 29.10.05 18:41
Оценка:
Здравствуйте, kilonet2, Вы писали:

K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...". Вот я и думаю, что есть эти "основы"? Ассемблер; умение решать алгоритмические задачи вроде ханойской башни ("алгоритмы и структуры данных"); Visual C++ с вездесущими объектами и копанием в устройстве Windows... или что-то ещё — я не знаю.

K>Интересно узнать ваше мнение с аргументами.

Для меня "основы" — это логика разработчиков конкретной системы, если в нее въедешь, то потом все становится легко и просто.

...добивая ногами психиатра: "Это кто нервный?! Это я нервный?!!"
fb2k: 3 Doors Down - Going Down In Flames
Re: Основы. Что это?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.10.05 14:51
Оценка: +2 :)
Здравствуйте, kilonet2, Вы писали:

K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...".


Посоветуй ему быстро освоить, ну, скажем, Пролог.
... << RSDN@Home 1.2.0 alpha rev. 615 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[2]: Основы. Что это?
От: Cyberax Марс  
Дата: 30.10.05 16:25
Оценка:
AndrewVK wrote:

> K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я

> знаю основы, поэтому легко могу правильно написать любую программу,
> быстро освоить новую технологию и т. д...".
> Посоветуй ему быстро освоить, ну, скажем, Пролог.

Осваивал его в условиях надвигающего деда Лайна за неделю

Потом благополучно постарался забыть.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[2]: Основы. Что это?
От: Hunta Украина http://dr-leafsey.livejournal.com
Дата: 31.10.05 10:05
Оценка:
Здравствуйте, _Winnie, Вы писали:

_W>Циклы. If. Подпрограммы/функции. И тд. и тп. Общие конструкции всех (императивных?) языков программирования.


+ рекурсия. Стек, список, хеш.

_W>Что такое строка. Что такое символ. Чем они отличаются от числа. Что числа бывают целые и дробные. Что точность их ограничена. А если неограничена — значит, там внутри мегапрослойка кода.


+ булева алгебра, множества там...
Поступай так, чтобы максима своей воли в любое время могла стать принципом всеобщего законодательства.
Re: Основы. Что это?
От: Joker6413  
Дата: 31.10.05 10:25
Оценка:
Здравствуйте, kilonet2, Вы писали:

K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...". Вот я и думаю, что есть эти "основы"? Ассемблер; умение решать алгоритмические задачи вроде ханойской башни ("алгоритмы и структуры данных"); Visual C++ с вездесущими объектами и копанием в устройстве Windows... или что-то ещё — я не знаю.

K>Интересно узнать ваше мнение с аргументами.

Имхо — обьекты ядра win, C++, Java/.Net, java/vb script, Tcp/IP, Http, Xml, html.

Т.е. архитектура, прогр. на низком уровне, прогр. на высоком уровне, скриптинг, и основные протоколы и форматы взаимодействия.
Re: Основы. Что это?
От: xbit Россия  
Дата: 31.10.05 10:27
Оценка:
Здравствуйте, kilonet2, Вы писали:

K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...". Вот я и думаю, что есть эти "основы"? Ассемблер; умение решать алгоритмические задачи вроде ханойской башни ("алгоритмы и структуры данных"); Visual C++ с вездесущими объектами и копанием в устройстве Windows... или что-то ещё — я не знаю.

K>Интересно узнать ваше мнение с аргументами.

Примерно так наверное:
-Базовые вещи:
--Ветвления, циклы, ...
--Рекурсия
--...
-Основы модульного программирования (Paskal, ...)
-Основы функционального программирования (Лисп, ...)
-Основы логического программирования (Пролог, ...)
-Основы ООП (C++, C#, Java, ...)
-Фуднаментальные алгоритмы (Дональд Кнут I-III тома)

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Нас не догонят!
Re: Основы. Что это?
От: DenisNLevchenko  
Дата: 31.10.05 10:32
Оценка: 2 (1)
Здравствуйте, kilonet2, Вы писали:

K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...". Вот я и думаю, что есть эти "основы"? Ассемблер; умение решать алгоритмические задачи вроде ханойской башни ("алгоритмы и структуры данных"); Visual C++ с вездесущими объектами и копанием в устройстве Windows... или что-то ещё — я не знаю.

K>Интересно узнать ваше мнение с аргументами.

подожди пару деньков пока существует данных топик, после проанализируй все ответы и ты поймешь, что знать надо всё, и чем больше ты знаешь, тем лучше для тебя в первую очередь
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Основы. Что это?
От: xbit Россия  
Дата: 31.10.05 11:00
Оценка:
<skipped>
X>-Основы модульного программирования (Pascal, ...)
<skipped>
Очепятался

Хотел еще добавить:
-Структуры данных (списки, деревья, графы, ...)
Хотя это все входит в Кнута, но хотелось все таки отдельно выделить.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Нас не догонят!
Re: Основы. Что это?
От: ZevS  
Дата: 31.10.05 12:30
Оценка: 6 (1) +3 :)
Здравствуйте, kilonet2, Вы писали:

...

Логическое, абстрактное мышление. Его же гибкость. Дружба с математикой, физикой, русским языком и литературой. Объясню два последних пункта: я считаю, что умение четко и ясно выражать свои мысли для хорошего программиста просто необходимо. И это умение нужно постоянно развивать. А чем же еще его развивать как не?
Re[2]: Основы. Что это?
От: ZevS  
Дата: 31.10.05 12:35
Оценка:
PS: English of course is out of question!
Re[2]: Основы. Что это?
От: Mamut Швеция http://dmitriid.com
Дата: 31.10.05 12:44
Оценка:
X>-Основы функционального программирования (Лисп, ...)

Подумалось: а может вообще только Лисп?


dmitriid.comGitHubLinkedIn
Re[3]: Основы. Что это?
От: xbit Россия  
Дата: 31.10.05 12:51
Оценка:
Здравствуйте, Mamut, Вы писали:

X>>-Основы функционального программирования (Лисп, ...)


M>Подумалось: а может вообще только Лисп?


Было бы просто супер !
Люблю этот язык...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Нас не догонят!
Re[2]: Основы. Что это?
От: Joker6413  
Дата: 31.10.05 14:27
Оценка: 1 (1) -2
Здравствуйте, ZevS, Вы писали:


В контексте

"Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...".


вот это:

ZS>Логическое, абстрактное мышление. Его же гибкость. Дружба с математикой, физикой, русским языком и литературой.


звучит по крайней мере смешно.
Re[2]: Основы. Что это?
От: Глеб Алексеев  
Дата: 31.10.05 14:48
Оценка:
Здравствуйте, AndrewVK, Вы писали:

K>>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...".


AVK>Посоветуй ему быстро освоить, ну, скажем, Пролог.

Лучше Хаскелл .
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Основы. Что это?
От: Глеб Алексеев  
Дата: 31.10.05 14:48
Оценка:
Здравствуйте, kilonet2, Вы писали:

K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...". Вот я и думаю, что есть эти "основы"? Ассемблер; умение решать алгоритмические задачи вроде ханойской башни ("алгоритмы и структуры данных"); Visual C++ с вездесущими объектами и копанием в устройстве Windows... или что-то ещё — я не знаю.

Алгоритмы и структуры данных и задачи вроде ханойских башен — разные вещи.
Первое — дисциплина, изучающая узкий класс фундаментальных структур данных и алгоритмов (списки, деревья, двоичный поиск и т.д.), второе — задача на применение рекурсии.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Основы. Что это?
От: ZevS  
Дата: 31.10.05 15:05
Оценка: 6 (2) +1
Здравствуйте, Joker6413, Вы писали:
...
J>звучит по крайней мере смешно.

Знание не есть ум, а только эрудиция. Ценно лишь знание, полученное, как результат личного опыта, а не знание приобретенное. Можно заучить кучу алгоритмов, языков программирования, паттернов ООП и т.д., но по настоящему хороший программист и вообще умный человек должен уметь мыслить сам. Это и есть та основа на кототой можно что-то строить. И это мое твердое убеждение. И что же здесь смешного?
Re: Основы. Что это?
От: jhfrek Россия  
Дата: 31.10.05 15:10
Оценка:
Здравствуйте, kilonet2, Вы писали:

K>Интересно узнать ваше мнение с аргументами.


Очевидно, прочитать все три тома Кнута и решить все упражнения с рейтингом до 50
Re[3]: Основы. Что это?
От: beroal Украина  
Дата: 01.11.05 05:29
Оценка: 5 (1)
Здравствуйте, Глеб Алексеев, Вы писали:

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


K>>>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...".


AVK>>Посоветуй ему быстро освоить, ну, скажем, Пролог.

ГА>Лучше Хаскелл .
Нет, Coq!
Re[2]: Основы. Что это?
От: beroal Украина  
Дата: 01.11.05 05:36
Оценка:
Здравствуйте, ZevS, Вы писали:
ZS>Логическое, абстрактное мышление. Его же гибкость. Дружба с математикой,
+1
ZS>физикой, русским языком и литературой. Объясню два последних пункта: я считаю, что умение четко и ясно выражать свои мысли для хорошего программиста просто необходимо. И это умение нужно постоянно развивать. А чем же еще его развивать как не?
Мне кажется, литература здесь не при чём. Если под знанием литературы вы не подразумеваете чтение книжки на ночь, чтобы быстрее заснуть. Романы и теоремы — разные вещи .
Re: Основы. Что это?
От: Кузнецов Денис Викторович Казахстан  
Дата: 01.11.05 05:53
Оценка:
Здравствуйте, kilonet2, Вы писали:

K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...". Вот я и думаю, что есть эти "основы"? Ассемблер; умение решать алгоритмические задачи вроде ханойской башни ("алгоритмы и структуры данных"); Visual C++ с вездесущими объектами и копанием в устройстве Windows... или что-то ещё — я не знаю.


Так и тянет сейчас вспомнить анекдот про ДНК. Основа основ однако
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Основы. Что это?
От: Sinclair Россия https://github.com/evilguest/
Дата: 01.11.05 06:33
Оценка: :)))
Здравствуйте, jhfrek, Вы писали:
J>Очевидно, прочитать все три тома Кнута и решить все упражнения с рейтингом до 50
И, желательно, одно с рейтингом 50
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Основы. Что это?
От: Joker6413  
Дата: 01.11.05 09:29
Оценка:
Здравствуйте, ZevS, Вы писали:

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

ZS>...
J>>звучит по крайней мере смешно.

ZS>Знание не есть ум, а только эрудиция. Ценно лишь знание, полученное, как результат личного опыта, а не знание приобретенное. Можно заучить кучу алгоритмов, языков программирования, паттернов ООП и т.д., но по настоящему хороший программист и вообще умный человек должен уметь мыслить сам. Это и есть та основа на кототой можно что-то строить. И это мое твердое убеждение. И что же здесь смешного?


У меня в свое время, теорию систем, преподавал один профессор. Умнейший чел., я его уважаю, одна проблема — не умел мало говорить. Так вот этот дядя (пожилой уже) так и не смог освоить даже basic.

Если мы говорим про познание в принципе — я с вами согласен. Если мы говорим о "освоении новых технологий" — здесь жизненно необходимы знания основ т.е. технологий которые были раньше.
Re[3]: Основы. Что это?
От: ZevS  
Дата: 01.11.05 09:52
Оценка: +1
Здравствуйте, beroal, Вы писали:

..

B>Мне кажется, литература здесь не при чём. Если под знанием литературы вы не подразумеваете чтение книжки на ночь, чтобы быстрее заснуть. Романы и теоремы — разные вещи .


А помните в школе на уроке литературы еще и сочинения писали...
Литература в широком смысле слова. Все это делает мысли стройнее и лаконичнее, и, на мой взгляд, необходимо для создания красивых решений и качественного, понятного кода.
Re[4]: Основы. Что это?
От: xbit Россия  
Дата: 01.11.05 11:43
Оценка: 4 (1)
Здравствуйте, ZevS, Вы писали:

ZS>Знание не есть ум, а только эрудиция. Ценно лишь знание, полученное, как результат личного опыта, а не знание приобретенное. Можно заучить кучу алгоритмов, языков программирования, паттернов ООП и т.д., но по настоящему хороший программист и вообще умный человек должен уметь мыслить сам. Это и есть та основа на кототой можно что-то строить. И это мое твердое убеждение. И что же здесь смешного?


Это все конечно правильно и красиво сказано, но знание и ум должны быть в совокупности, иначе нельзя, можно быть да, умным, но не зная кучи алгоритмов, языков программирования, паттернов ООП и т.д вы никто (в программировании имею ввиду). Можно как раз знать все это, но раз вы все это знаете значит вы умный ! Хватило ума все это осилить, ведь согласитесь, неумному вряд ли все это под силу. И вообще ум это такая штука которая не просто дана от природы (хотя и такое бывает), но в основном оно тренируется, появляется во время как раз изучения всего этого...

Ценно лишь знание, полученное, как результат личного опыта, а не знание приобретенное.

Вот это по моему точно бред. Есть даже такая мудрая пословица "глупый учится на своих ошибках, а умный на чужих".
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Нас не догонят!
Re[5]: Основы. Что это?
От: ZevS  
Дата: 01.11.05 12:10
Оценка:
Здравствуйте, xbit, Вы писали:
...
X>Это все конечно правильно и красиво сказано, но знание и ум должны быть в совокупности, иначе нельзя, можно быть да, умным, но не зная кучи алгоритмов, языков программирования, паттернов ООП и т.д вы никто (в программировании имею ввиду).

Согласен что "знание и ум должны быть в совокупности", но исходный пост был все-таки про основы. Я про них, а то что умение делать качественное ПО подразумевает кучу знаний — безусволный факт.

X>Можно как раз знать все это, но раз вы все это знаете значит вы умный ! Хватило ума все это осилить, ведь согласитесь, неумному вряд ли все это под силу. И вообще ум это такая штука которая не просто дана от природы (хотя и такое бывает), но в основном оно тренируется, появляется во время как раз изучения всего этого...

X>

X>Ценно лишь знание, полученное, как результат личного опыта, а не знание приобретенное.

X>Вот это по моему точно бред. Есть даже такая мудрая пословица "глупый учится на своих ошибках, а умный на чужих".

А вот с этим согласиться не могу. Можно изучить все картинки в Камасутре и прочитать все книги по тантрическому сексу, но если вы не отразите все это в личном опыте, то... можете разве что лекции читать студентам. Знать и уметь — тоже разные вещи. Тут как раз и нужен опыт, который должен быть проанализирован умом. Вот тогда знание — настояшее знание, а не заученные наизусть строки из "Истории КПСС".
Re: Основы. Что это?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 03.11.05 01:42
Оценка:
Здравствуйте, kilonet2, Вы писали:

K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...". Вот я и думаю, что есть эти "основы"? Ассемблер; умение решать алгоритмические задачи вроде ханойской башни ("алгоритмы и структуры данных"); Visual C++ с вездесущими объектами и копанием в устройстве Windows... или что-то ещё — я не знаю.

K>Интересно узнать ваше мнение с аргументами.

Э... значит так. Главная основа всего в фон-неймановском компьютере: вычислитель, память, инструкции вычислителя. Отсюда — объём программ и время на их работу. Из разного времени доступа к разным устройствам памяти вытекают политики увеличения скорости вычисления. Из желания обеспечить взаимную безопасность (сиречь — невозможность повредить код/память соседей) вытекают кольца защиты x86 (как минимум). Из желания писать программу один раз, и потом использовать её с разным железом вытекают спецификации драйверов. Из желания гонять на одном вычислителе квазиодновременно несколько программ вытекают ядра многозадачных ОС. Ну и т.п. Вот тебе и основы.

Хотя сдаётся мне, что под словами "любая программа/технология" всё-таки имеется ввиду программа на императивном языке...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Основы. Что это?
От: gear nuke  
Дата: 04.11.05 07:09
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Главная основа всего в фон-неймановском компьютере: вычислитель, память, инструкции вычислителя. Отсюда — объём программ и время на их работу.


Только вот можно ли современные компьютеры назвать фон-неймановскими?
Память довольно сложная штука, вычислитель обычно с ней и не работает.

ГВ>Из разного времени доступа к разным устройствам памяти вытекают политики увеличения скорости вычисления.


Политики не всегда верны

Постулат: "на n вычислителях нельзя добиться ускорения больше чем в n раз".
Факт: можно намного больше, чем в n раз.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re: Основы. Что это?
От: Karabinos Украина  
Дата: 04.11.05 09:28
Оценка:
Здравствуйте, kilonet2, Вы писали:

K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...". Вот я и думаю, что есть эти "основы"? Ассемблер; умение решать алгоритмические задачи вроде ханойской башни ("алгоритмы и структуры данных"); Visual C++ с вездесущими объектами и копанием в устройстве Windows... или что-то ещё — я не знаю.

K>Интересно узнать ваше мнение с аргументами.

Вото они Основы:
Н. Н. Непейвода, И. Н. Скопин Основания программирования.
http://ulm.udsu.ru/~nnn/index.html
Меньше читай, больше думай. (А.Сурожский)
Re[3]: Основы. Что это?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.11.05 18:13
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>>Главная основа всего в фон-неймановском компьютере: вычислитель, память, инструкции вычислителя. Отсюда — объём программ и время на их работу.


GN>Только вот можно ли современные компьютеры назвать фон-неймановскими?


А какими ещё?!

GN>Память довольно сложная штука, вычислитель обычно с ней и не работает.


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

ГВ>>Из разного времени доступа к разным устройствам памяти вытекают политики увеличения скорости вычисления.

GN>Политики не всегда верны

GN>Постулат: "на n вычислителях нельзя добиться ускорения больше чем в n раз".

GN>Факт: можно намного больше, чем в n раз.

Хм, а на примере не пояснишь, как это так?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: Основы. Что это?
От: gear nuke  
Дата: 05.11.05 01:12
Оценка:
Здравствуйте, Геннадий Васильев,

GN>>Только вот можно ли современные компьютеры назвать фон-неймановскими?


ГВ>А какими ещё?!


В теории не силён.
Не фон-неймановскими, видимо .

GN>>Память довольно сложная штука, вычислитель обычно с ней и не работает.


ГВ>А какая разница, с какой именно памятью работает вычислитель?


Разница в скорости доступа, как Вы сами и говорите.

ГВ>Цепочка фон-неймановских машин, это всего лишь цепочка фон-неймановских машин. И всё тут.



На аргумент не похоже.

ГВ>>>Из разного времени доступа к разным устройствам памяти вытекают политики увеличения скорости вычисления.

GN>>Политики не всегда верны

GN>>Постулат: "на n вычислителях нельзя добиться ускорения больше чем в n раз".

GN>>Факт: можно намного больше, чем в n раз.

ГВ>Хм, а на примере не пояснишь, как это так?


Есть компютеры с такими характеристиками: CPU 2GHz, скорость шины памяти 200MHz.
Есть алгоритм, который требует 20Mb данных для вычислений.
При обработке памяти, 90% времени CPU будет простаивать из-за медленного ОЗУ.
Если распараллелить алгоритм так, что на каждой машине будет требоваться 50Kb для вычислений, то данные целиком поместятся в кеш работабщий на частоте ядра.
Получаем прирост ~1000% на отдельно взятой машине из-за того, что мы учли её не фон-неймановскую архитектуру.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[5]: Основы. Что это?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.11.05 23:30
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>>>Только вот можно ли современные компьютеры назвать фон-неймановскими?

ГВ>>А какими ещё?!
GN>В теории не силён.

Ну, нашёл, чем гордиться. Погляди

GN>Не фон-неймановскими, видимо .

Ага, а 2x2=4.11 согласно недавно проведённого опроса пользователей интернет.

GN>>>Память довольно сложная штука, вычислитель обычно с ней и не работает.

ГВ>>А какая разница, с какой именно памятью работает вычислитель?
GN>Разница в скорости доступа, как Вы сами и говорите.

Это никак это влияет на характеристику самой архитектуры с т.з. "фон-неймановская — не фон-неймановская".

GN>>>Постулат: "на n вычислителях нельзя добиться ускорения больше чем в n раз".

GN>>>Факт: можно намного больше, чем в n раз.
ГВ>>Хм, а на примере не пояснишь, как это так?

GN>Есть компютеры с такими характеристиками: CPU 2GHz, скорость шины памяти 200MHz.

GN>Есть алгоритм, который требует 20Mb данных для вычислений.
GN>При обработке памяти, 90% времени CPU будет простаивать из-за медленного ОЗУ.
GN>Если распараллелить алгоритм так, что на каждой машине будет требоваться 50Kb для вычислений, то данные целиком поместятся в кеш работабщий на частоте ядра.
GN>Получаем прирост ~1000% на отдельно взятой машине из-за того, что мы учли её не фон-неймановскую архитектуру.

Нет, архитектура как фон-неймановской была, так оной и осталась. Другое дело, что мы просто учли особености конкретной технической реализации архитектуры фон Неймана. В частности, учли, что имеется кэш-память (возможно, многоуровневая).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: Основы. Что это?
От: gear nuke  
Дата: 06.11.05 02:55
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Ага, а 2x2=4.11 согласно недавно проведённого опроса пользователей интернет.


Очевидно, часть опрошенных имеют представление о конечных полях?

ГВ>Нет, архитектура как фон-неймановской была, так оной и осталась. Другое дело, что мы просто учли особености конкретной технической реализации архитектуры фон Неймана. В частности, учли, что имеется кэш-память (возможно, многоуровневая).


Вот что я нашёл по первой же Вашей ссылке:

Принято считать, что машине с архитектурой фон Неймана присущи следующие характеристики:

  1. Единственная последовательно адресуемая память. Программа и данные хранятся в одной памяти, адреса областей которой составляют последовательность типа 0, 1,2,...
  2. Память является линейной. Она одномерная, т. е. имеет вид вектора слов.
  3. Отсутствует явное различие между командами и данными. Их идентифицируют неявным способом при выполнении операций. Так, объект, адресуемый командой перехода, определяется как команда; операнды, с которыми имеет дело команда сложения, определяются как данные. Эти принимаемые по умолчанию соглашения позволяют, например, обращаться с командой как с данными (в частности, модифицировать ее), складывать команду со словом данных или осуществлять переход “слову данных и выполнять его так, как будто бы биты этого слова представляют команду.
  4. Назначение данных не является их неотъемлемой составной частью. Нет, например, никаких средств, позволяющих явно отличить набор битов, представляющих число с плавающей точкой, от набора битов, являющихся строкой символов. Назначение данных определяется логикой программы. Если машина извлекает из памяти команду сложения чисел с плавающей точкой, то предполагается, что операнды — числа с плавающей точкой, и над операндами выполняется сложение согласно правилам арифметики чисел с плавающей точкой. Следовательно, можно выполнить подобное сложение над двумя операндами, являющимися в действительности, например, строкой символов. и адресом.


А вот что написано в IA-32 Intel® Architecture Software Developer’s Manual Volume 1: Basic Architecture:

To insure a steady supply of instructions and data to the instruction execution pipeline, the P6 processor micro-architecture incorporates two cache levels. The Level 1 cache provides an 8-KByte instruction cache and an 8-KByte data cache, both closely coupled to the pipeline. The second-level cache is a 256-KByte, 512-KByte, or 1-MByte static RAM that is coupled to the core processor through a full clock-speed 64-bit cache bus.


Конечно можно говорить про кеши как о части фон-неймановской архитектуры, и в первом приближении это действительно так: кеши — попытка эмулировать такую архитектуру. Но если копать глубже, то кеши будет выходить за её рамки.

Ну и напоследок (по той же самой ссылке) —

архитектура ЭВМ фон Неймана сослужила добрую службу человечеству и к настоящему времени изжила себя.

People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re: Основы. Что это?
От: BazDen  
Дата: 06.11.05 09:03
Оценка:
Здравствуйте, kilonet2, Вы писали:

K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...". Вот я и думаю, что есть эти "основы"? Ассемблер; умение решать алгоритмические задачи вроде ханойской башни ("алгоритмы и структуры данных"); Visual C++ с вездесущими объектами и копанием в устройстве Windows... или что-то ещё — я не знаю.

K>Интересно узнать ваше мнение с аргументами.

В первую очередь, теоритические основы программирования. Например Д.Кнут. Дальше все зависит от твоей специализации. Возможно ты хочешь стать системщиком, и тогда без знания аппаратной части тебе никуда, а возможно и прикладником, где более приоритетно знание интерфейса пользователя и т.д. Т.е. во-вторых ты должен знать среду, в которой будешь работать.
... << RSDN@Home 1.1.3 stable >>
Re[2]: Основы. Что это?
От: beerserg  
Дата: 14.11.05 15:22
Оценка:
X>-Фуднаментальные алгоритмы (Дональд Кнут I-III тома)

Йопт... [сорри, "высшая степень удивления"].
На фоне сообщений о том, должен ли программист знать что такое матрица — сильно сказано...
А вообще интересно — много ли на планете людей, которые могут понять ВСЁ творчество многоуважаемого Д. Кнута.
А тем более помнить. В особенности самый монстрский том — второй. Хотя помнится нужно было найти алгоритм гамма-распределения, заглянул, нашел, прочел, усосал, реализовал... Но дело то в том, что имя алгоритмам у Кнута — легион.

Или же имелись в виду лишь самые основы из Кнута?
Re[2]: Основы. Что это?
От: beerserg  
Дата: 14.11.05 15:27
Оценка:
J>Очевидно, прочитать все три тома Кнута и решить все упражнения с рейтингом до 50

Жжешь...

Вообще [по себе сужу] понять Кнута и самостоятельно решить все его задачи (не пользуясь гуглом) — вполне подъёмная задача... Правда, лет эдак на тысячу...
Re[3]: Основы. Что это?
От: jhfrek Россия  
Дата: 14.11.05 15:30
Оценка:
Здравствуйте, beerserg, Вы писали:

B>Вообще [по себе сужу] понять Кнута и самостоятельно решить все его задачи (не пользуясь гуглом) — вполне подъёмная задача... Правда, лет эдак на тысячу...


Чего это сразу 1000? При огромном желании (и наличии времени) нескольких лет должно хватить.

Опыт-то он имеет свойство накапливаться
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.