OberonCore
https://forum.oberoncore.ru/

Что нужно знать программисту
https://forum.oberoncore.ru/viewtopic.php?f=8&t=1094
Страница 1 из 3

Автор:  Info21 [ Вторник, 22 Июль, 2008 10:33 ]
Заголовок сообщения:  Что нужно знать программисту

Забавный текст попался. Для заключения про важность физики и матана есть глубокое основание: в сих дисциплинах сколлекционированы ровно те паттерны-схемы, по которым работает мир.

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

So You Want To Be A Programmer?
Written by Walter Bright 07/01/08

.. what courses a person should take in college if they want to become a professional programmer.
I took a fairly broad range of classes in college (Caltech), and have been programming for 30 years now, so I have some perspective on what has worked for me and what hasn't.
I've ordered them from most important to least.

Calculus - No, you won't use calculus in programming. But it turns out that the training of your mind that happens when learning calculus is very beneficial to programming.
This training seems to happen in math courses and doesn't happen in programming courses.
If you find yourself selecting college courses based on which ones don't require calculus, you should seriously consider changing professions, because you won't make it as a programmer.
Take at least 3 years of calculus.

Physics - For unknown reasons, the best programmers tend to be physicists by training. <По неизвестным причинам лучшие программисты часто оказываются физиками по образованию.>
The way physics is taught seems to teach the brain how to go about solving problems in an organized way.
Besides, understanding newtonian and quantum mechanics is just freaking cool. You'll be able to proudly wear your Maxwell's Equations t-shirt.
Fair warning: once you understand physics, Star Trek, Star Wars, and other hollywood sci-fi craptastic films won't seem so cool anymore.

Compiler Construction - You'll be using a compiler probably more than any other tool, and understanding them will help a lot in getting the most out of them and bending them to your will.
Furthermore, the skills learned in writing a compiler pretty much cover the gamut of computer science concepts.

Assembler Programming - You'll never learn how a computer really works by learning high level languages. I know too many programmers who have a fear of assembler. They will go to great lengths to avoid even glancing at the assembler output of their compiler, as if it would strike them blind. But they'll never be in the top tier of programmers. You can learn an awful lot about the compiler you're using, and how to get the most out of it by looking at the asm output. You'll also find that sometimes that's the only way to figure out what is going wrong.

Business Accounting - Eventually in your career, you'll want to move into management or spin off and start your own company. At that point, knowing the fundamentals and language of business accounting is indispensible.

.. without knowledge of accounting you'll be crippled talking to investors, your bank, or the tax man.

Digital Electronics - Understanding how the hardware actually functions will help you approach a computer as a machine that can be mastered rather than a magic black box. You're going to be working with it a lot, might as well understand it.

Jet Engine Analysis - I'm fascinated by engines of all types. Jet engines are especially cool. I'll never forget going to the test bunker while the engineers lit off an F-100 engine. If I could figure out what this has to do with programming, I'd tell you. So sue me.

FORTRAN - It was a waste of time, because FORTRAN shortly thereafter went out of fashion.
Generally, any programming course that focusses on learning a particular language is a waste of time. Instead, courses that teach a thought process that is applicable in general to programming is far more valuable. Learning particular languages is just a detail you can do later.

Chemistry - I never properly understood chemistry. This deficit doesn't seem to have mattered in my career. Chemistry seemed to be more oriented towards memorization, and trial and error. I don't think that applies much to programming.

Economics - Ok, this has nothing to do with programming. But economics is one of those dismal fields where everyone thinks they are an expert, from 16 years old on. Few would dream of pontificating about physics or calculus without learning something about it first, but nobody seems to have any qualms about doing it for economics.
I see this all the time on reddit, digg, etc.
So please, please, take a course in economics and at least understand the basic concepts!

Foreign Language - I'm going to get flamed for this, but I see little point to it for a programming career. I took German, and aside from the personal pleasure in learning it, it's been professionally useless to me. It's a global economy, but knowing German won't help you in dealing with the Chinese or the French, and vice versa. English is the global language of business, and if you know that, you'll be fine.

Interestingly, there's not a lot of actual programming courses in this list.
If you're training to be a programmer, shouldn't programming courses be the bulk of them?
Not necessarily.
College should not be viewed as learning particular knowledge, but as learning how to think.
Math will teach you how to think abstractly and logically, and
physics will teach you how to approach solving problems.
Once that is working in your head,
you'll find you can pick up programming rather easily,
and those thought processes will serve you well for anything you want to tackle, for the rest of your life.

http://dobbscodetalk.com/index.php?opti ... d=1#pc_538

Автор:  Info21 [ Вторник, 22 Июль, 2008 10:34 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Сказанное про чистых математиков и программистов относится и, например, к Непейводе.

Автор:  Илья Ермаков [ Вторник, 22 Июль, 2008 22:44 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Вот тут недавно в одной книжке математика видел "алгоритмический анализ" с разложением на параллельно действующие процессы и рисованием циклограммы АННЫ КАРЕНИНОЙ! :-)

Приведя цитату из критики, далее автор пишет: "Нам представляется более строгим объяснение сходства Вронского и Левина через алгоритмическое сопоставление процессов А - В и К - Л. Левин - трансформированная вычислимо-симметричная копия Вронского. В этом смысле и Анна аналогичным образом похожа на Китти. Вычисление симметричности просто. Тостой разрезал процесс А-В, переставил разрезанные части и отразил их в процессе К - Л. Процесс "Анна-Вронский", отражаясь в сознании писателя, теряет "энергию", превращаясь в более спокойный процесс "Китти-Левин".

"... т.е. Вронский и Левин, рассматриваемые как алгоритмические преобразователи, имеют одиноковое строение управляющей части .... "

ЗвездецЪ.

Автор:  Info21 [ Воскресенье, 05 Октябрь, 2008 11:25 ]
Заголовок сообщения:  Re: Что нужно знать программисту

[quote=Илья Ермаков]Мысль, к которой и подводил выше: не пора ли вливать в программирование некую "естественную" струю мысли, что ли?[/quote]

См. первый пост где про физическое образование.
Программерам и математикам, что называется, закон не писан. Они думают, что раз компьютерные гении, значит, всё можно (С++ и ФЯ, соответственно). А хрен.

Физики и инженеры (не ИТ) четко понимают, что есть законы, через которые хоть лопни не перепрыгнешь, только шею сломаешь.
Дейкстра -- физик-теоретик. (Кто еще мог додуматься до "инварианта"?)
Вирт -- инженер-электронщик.

Что касается биологии: основы теории эволюции (задевая экологию, т.к. эволюционируют не особи, а популяции, виды и биоценозы) надо бы четко понимать тоже.

Автор:  Sergo [ Воскресенье, 05 Октябрь, 2008 14:40 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Info21 писал(а):
См. первый пост где про физическое образование.
Программерам и математикам, что называется, закон не писан. Они думают, что раз компьютерные гении, значит, всё можно (С++ и ФЯ, соответственно). А хрен.


Кстати, да. Еще в 90-е годы обратил внимание на одну характерную особенность программистов - их увлечение "фентези", Кастанедой и прочей эзотерикой. Это было как бы профессиональной болезнью (и, по-моему, осталось). Причем ребята были очень неглупые - в своей специальности и на бытовом уровне. Но во всем остальном им явно казалось, что "в принципе возможно все".

Автор:  Geniepro [ Воскресенье, 05 Октябрь, 2008 16:38 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Sergo писал(а):
"в принципе возможно все".

"Если что-то нельзя, но очень хочется, то -- можно!" :-)

Автор:  Info21 [ Воскресенье, 05 Октябрь, 2008 17:19 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Geniepro писал(а):
Sergo писал(а):
"в принципе возможно все".

"Если что-то нельзя, но очень хочется, то -- можно!" :-)


Так мы давно тут выяснили, что Geniepro -- компьютерный geniй.
И proфессионал притом.

Разве неправда? :-)

Автор:  AVC [ Понедельник, 06 Октябрь, 2008 00:28 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Info21 писал(а):
Дейкстра -- физик-теоретик. (Кто еще мог додуматься до "инварианта"?)


Выходит, только физик мог додуматься применить математическую индукцию?
Пошто ужиков (математиков) забижаете?! :)

Автор:  Geniepro [ Понедельник, 06 Октябрь, 2008 07:20 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Info21 писал(а):
Geniepro писал(а):
Sergo писал(а):
"в принципе возможно все".

"Если что-то нельзя, но очень хочется, то -- можно!" :-)


Так мы давно тут выяснили, что Geniepro -- компьютерный geniй.
И proфессионал притом.

Разве неправда? :-)

Вот хоть мой IQ колеблется от 116 до 165 на разных тестах, никак не могу понять, чем Вам не нравятся мои имя и фамилия, которые я урезал до geniepro? :mrgreen:

Автор:  Пётр Кушнир [ Понедельник, 06 Октябрь, 2008 07:53 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Видели бы вы, что творят наши(всмысле там, где я обучаюсь) физики в исходных кодах... Ужас, ужас...
Geniepro писал(а):
Вот хоть мой IQ колеблется от 116 до 165 на разных тестах, никак не могу понять...

Ммммм.
К слову о замерах IQ и прочих параметров:
http://offline.computerra.ru/2008/737/360883/
http://offline.computerra.ru/2008/737/360885/

Автор:  Info21 [ Понедельник, 06 Октябрь, 2008 08:36 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Geniepro писал(а):
... мой IQ колеблется от 116 до 165 ...

Четто сильно он у вас колеблется 8)

Автор:  Geniepro [ Понедельник, 06 Октябрь, 2008 08:46 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Info21 писал(а):
Geniepro писал(а):
... мой IQ колеблется от 116 до 165 ...

Четто сильно он у вас колеблется 8)

Тесты кривые, нет им доверья... :?

Автор:  Илья Ермаков [ Понедельник, 06 Октябрь, 2008 15:55 ]
Заголовок сообщения:  Re: Что нужно знать программисту

AVC писал(а):
Info21 писал(а):
Дейкстра -- физик-теоретик. (Кто еще мог додуматься до "инварианта"?)


Выходит, только физик мог додуматься применить математическую индукцию?
Пошто ужиков (математиков) забижаете?! :)


Вот посмотрите, как http://khpi-iip.mipk.kharkiv.edu/librar ... 316_2.html он вводит основные понятия алгоритмики. Чисто физический подход - алгоритм как шаблон поведения. (Я вот где-то тут на форуме говорил, что после долгого бития ап стену мне привиделась такая же формулировка, недавно с приятным удивлением обнаружил это у Дейкстры.)

Математики всё в трёх соснах блуждают - не разберутся, что там сначала: алгоритм или вычислимость; последовательноть операций или рекурсивные функции; - и не разберутся, пока за пределы замкнутой аксиоматики не выйдут и не осознают, что алгоритм, процесс, поведение - сие есть понятия из окружающего мира, а функция - это мат. абстракция, которая может ставиться им в соответствие.

Дейкстра, между прочим, неск. раз в своих работах предупреждал о большом соблазне откатиться к чистым функциям: математикам так привычнее, земля под ноги возвращается. Да и плюс, по сравнению с бессистемным от-железячным программированием, порядок строгий появляется (а ведь "Дисциплину программирования" не читают, блин, слишком тонкая, видимо, книжка - несолидно). Однако, как предупреждает Дейкстра, это шаг назад: от динамически протекающих в системах процессов к попытке выражать чисто статические соотношения. Кастрируется смысл. А мейнстрим, как всегда, "динамическую математику" Дейкстры проморгал, а "разводной ключ" уже подводить стал - дёрнули в чистые функции. (Между прочим, анализ процессов в терминах пред- пост- условий, инвариантов и их преобразований ещё вообще неоценён как средство вообще анализа систем. Всё ещё впереди...)

Автор:  Info21 [ Понедельник, 06 Октябрь, 2008 16:39 ]
Заголовок сообщения:  Re: Что нужно знать программисту

AVC писал(а):
Info21 писал(а):
Дейкстра -- физик-теоретик. (Кто еще мог додуматься до "инварианта"?)

Выходит, только физик мог додуматься применить математическую индукцию?
...

Речь не об индукции, а об инварианте.
Сразу видно, что у ужиков законы сохранения где-то ... вместе с ежиками ... в тумане :-)
Вот как раз индукция там играет довольно неспецифическую роль. Мало ли где ее можно применить.

А вот роль инварианта -- центральная.

Плюс физики знают, что надо математику гнуть под явления, а не наоборот.
А математики любют из головы.

Автор:  AVC [ Понедельник, 06 Октябрь, 2008 18:42 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Info21 писал(а):
Речь не об индукции, а об инварианте.
Сразу видно, что у ужиков законы сохранения где-то ... вместе с ежиками ... в тумане :-)
Вот как раз индукция там играет довольно неспецифическую роль. Мало ли где ее можно применить.
Я имел в виду средства понимания программ:
Цитата:
"Среди интеллектуальных средств, которые применяются для понимания программы (или для доказательства ее правильности), я хотел бы четко выделить следующие три:
(1) перечисление;
(2) математическая индукция;
(3) абстракция." (Дейкстра. Заметки по структурному программированию)


Info21 писал(а):
А вот роль инварианта -- центральная.
Кто же против? :)
Разве что, попробую уточнить: центральная роль принадлежит утверждениям (инвариант - частный случай), а идея использовать утверждения для анализа программ предложена еще Тьюрингом.

Info21 писал(а):
Плюс физики знают, что надо математику гнуть под явления, а не наоборот.
А математики любют из головы.
Такое чувство, что математиков нельзя из лечебницы выпускать. :oops:
А с чего вообще у нас тут разгорелась такая междисциплинарная битва? :o

Автор:  Info21 [ Понедельник, 06 Октябрь, 2008 19:51 ]
Заголовок сообщения:  Re: Что нужно знать программисту

AVC писал(а):
Цитата:
"Среди интеллектуальных средств, которые применяются для понимания ...

Да зачем вообще, когда с самого начала речь конкретно о цикле.
Тьюринг -- Тьюрингом, а инвариант цикла -- вещь нетривиальная. И открыл ее не Тьюринг.
Цикл -- единственная реально нетривиальная императивная конструкция, для которой нужно было матем. осмысление.

С математиками действительно надо ухо востро держать :-)
Но с чистыми. Вроде Чёрча.

С прикладными (какие выходят с ВМК, основанного великим А.Н.Тихоновым) -- всё в порядке. Это же практически физики :-) Некорректные задачи то да сё... красота! Не зря ВМК вырос из кафедры математики физфака :-)

Автор:  Сергей Губанов [ Вторник, 07 Октябрь, 2008 11:12 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Sergo писал(а):
Причем ребята были очень неглупые - в своей специальности и на бытовом уровне. Но во всем остальном им явно казалось, что "в принципе возможно все".

Угу... После нескольких лет работы программистом, стал ловить себя на мысли, что меня всё сильнее беспокоит ("нарастает диссонанс") пропасть в возможностях между тем, что я могу наворотить в виртуальном мире (имеется ввиду программирование), и тем на что я способен в реальном (ну, там ремонт в квартире).

Автор:  Info21 [ Вторник, 07 Октябрь, 2008 11:46 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Сергей Губанов писал(а):
... и тем на что я способен в реальном (ну, там ремонт в квартире).

Проблема актуальная :-)
Применяю принцип "всё лишнее -- на ...".

Автор:  Александр Ильин [ Вторник, 07 Октябрь, 2008 12:15 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Сергей Губанов писал(а):
и тем на что я способен в реальном (ну, там ремонт в квартире).
Используйте принцип "разделяй и властвуй", также известный как принцип разделения труда: не можешь сам - заплати другому. : )

Автор:  TAU [ Вторник, 07 Октябрь, 2008 12:47 ]
Заголовок сообщения:  Re: Что нужно знать программисту

Сергей Губанов писал(а):
Sergo писал(а):
Причем ребята были очень неглупые - в своей специальности и на бытовом уровне. Но во всем остальном им явно казалось, что "в принципе возможно все".

Угу... После нескольких лет работы программистом, стал ловить себя на мысли, что меня всё сильнее беспокоит ("нарастает диссонанс") пропасть в возможностях между тем, что я могу наворотить в виртуальном мире (имеется ввиду программирование), и тем на что я способен в реальном (ну, там ремонт в квартире).

"Сопротивляемость материала" разная.

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/