Re[3]: Фундаментальные основы программирования. Что нужно знать?
От: elmal  
Дата: 28.05.12 06:55
Оценка: 2 (2) +7
Здравствуйте, Darooma, Вы писали:

D>не то, слишком специфично.

Что значит слишком специфично. Это именно Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.. Лично мне эти основы нужны всегда, каждый день, что отсюда выкинуть, я не знаю. А вот алгоритмы, сортировки — вот именно это как раз слишком специфично, это требуется от силы одному проценту, и то далеко не каждый день.
Re: Фундаментальные основы программирования. Что нужно знать?
От: elmal  
Дата: 28.05.12 06:19
Оценка: 33 (2) +5
Здравствуйте, Darooma, Вы писали:

D>Что из фундаментальных основ в программировании, таких как знание алгоритмов, вы можете назвать? Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.

1) Умение декомпозировать;
2) Умение абстрагироваться;
3) Умение находить ошибки в коде;
4) Умение рефакторить
5) Иметь представления о различных парадигамах программирования и умение их использовать.
Пока хватит.
Re: Теорминимум
От: Qbit86 Кипр
Дата: 27.05.12 20:11
Оценка: 10 (3) +1 -2
Здравствуйте, Darooma, Вы писали:

D>Что из фундаментальных основ в программировании, таких как знание алгоритмов, вы можете назвать? Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.


http://sharpc.livejournal.com/67583.html
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: Фундаментальные основы программирования. Что нужно знать?
От: _Obelisk_ Россия http://www.ibm.com
Дата: 30.05.12 19:34
Оценка: 8 (2) +1 -2
Здравствуйте, elmal, Вы писали:

Это не фундаментальные основы. Это практические навыки, которые нарабатываются на практике. Фундамент — дискретная математика, алгоритмы, формальные языки, мат. логика и т.д. То, что большинство ничего такого не используют в работе ни о чем не говорит. Большинство людей обходится 4-мя арифметическими действиями над натуральными числами. Но это не означает ведь, что образование должно давать лишь этот объем.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[2]: Теорминимум
От: Wolverrum Ниоткуда  
Дата: 27.05.12 20:29
Оценка: 1 (1) +2 :)
Здравствуйте, Qbit86, Вы писали:

Q>http://sharpc.livejournal.com/67583.html

Хорошая ссылочка.


Р)аботодатель
П)рограммер-соискатель

Р — В своем резюме вы написали, что знаете следующие языки и технологии программирования: Basic (TB, QB, VB, VBA, VB.NET) C (C and C++ for Unix, FreeBSD, QNX), C++, VC++, C++.NET, C#, в идеале знаете ассемблеры следующих процессоров I-4004 — IP4, Amiga... (ну и тут список на 2 страницы, мелко и подробно)
Р — Ну что же, зарплата у нас по договоренности, но гор золота мы вам не сулили. Максимум на что вы можете расчитывать это 150 тыс Евро.
П -!?!?!?
Р — И только не надо весь рабочий день мечтать о коттедже на Канарах, максимум, что мы можем прежложить нашим сотрудникам — это 6-комнатную в центре Москвы.
П — пытается усидеть на месте, и вести себя пристойно
Р — и не надо думать, что если у шефа красный Ferrari, то вы его тоже получите. Ваш максимум — это BMW M6
П — (не выдержав) Пиздите!
Р — (Чинно) Ты первый начал


Теорминимум в идеале должен быть равен ответам на вопросы 60-80% интервью (+задача про гномов + обращение списка + виртуальный деструктор ). А потом уже этот минимум подтягивается в зависимости от проекта.
Re: Фундаментальные основы программирования. Что нужно знать?
От: VladZharinov  
Дата: 14.07.12 18:13
Оценка: 13 (3)
Здравствуйте, Darooma, Вы писали:

D>Что из фундаментальных основ в программировании, таких как знание алгоритмов, вы можете назвать? Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.


D>1. Алгоритмы

D> а) Сортировки
D> б) Выборки
D> ....
D>2....

Знания, в общем, думаю, можно подразделить по взаимосвязанным направлениям:

1. Алгоритмы единичные и взаимоувязанные (для последовательного/параллельного исполнения).

2. Структуры данных — опять же обособленные и разделяемые.

3. Исполнители как сущности — реальные или их абстрактные модели — где алгоритмы связываются со структурами данных в алгопроцессах, ведущих к результатам... хорошо бы отвечающим требованиям...
Парадигму можно понимать как определённый взгляд на исполнителя. Какие ресурсы он предоставляет и как они организованы и работают. Как следствие, на практике выражается парадигма, принятая для языка, средствами парадигмы реально данного исполнителя.

Базовые умения (в частности, указанные elmal) можно рассматривать как обеспечение двуединого процесса моделирования/формализации. Идущего от предметного и неформального представления о задаче к модели, выполнимой одним из исполнителей алгоритмов. Как-то так...

Можно предложить и литературу:

В. Ш. Кауфман. Языки программирования. Концепции и принципы. — М.: ДМК-Пресс, 2011 — переиздание классической работы по анализу и синтезу ЯП. выдержка описание

Фридланд А.Я. Информатика: процессы, системы, ресурсы. – М.: БИНОМ. Лаборатория базовых знаний, 2003 — авторская работа с систематическим подходом. выдержка (учебник) описание

С.С. Лавров. Программирование. Математические основы, средства, теория. — БХВ-Петербург, 2001 — основная идея — рассмотрение средств выражения семантики программ и доказательства их правильности; разбираются императивная и некоторые другие парадигмы. выдержка описание

Винокуров Н.А., Ворожцов А.В. Практика и теория программирования. — в 2-х кн. — М.:Физматкнига, 2008 — Книга 1: Исполнители и вычисления (алгоритмы, языки и метаязыки, машины Тьюринга и Маркова, распознавание языков абстрактными исполнителями и др.). Доп. темы (теорема Гёделя, функциональное прог-е на примере Лисп, продукционное прг-е на примере Haskell, виртуализация и др.) описание; Книга 2: Прогязык Си (основы, работа в компиляторе, методы прг-я). Доп. темы (структуры данных и алгоритмы, проектирование надёжного ПО) описание.

Мозговой М.В. Алгоритмы, языки, автоматы, компиляторы. — СПб.:Наука и техника, 2006 — популярная до некоторой степени книга с элементами авторского подхода. описание
Автор(ы): М. В. Мозговой
Издательство: Наука и техника
Цена: 226р.

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


Карпов Ю.Г. Model Checkng. Верификация параллельных и распределённых программных систем. – СПб.: БХВ-Петербург, 2010 — обзорная работа, автор систематически представил текущие результаты по многим зарубежным источникам, дал наглядные примеры. описание выдержка

Петров Ю.П. Обеспечение достоверности и надежности компьютерных расчетов. – СПб.: БХВ-Петербург, 2004 — о том, что нужно знать, пользуясь пакетами численных/символьных расчётов и вычисляя вручную . описание выдержка

Новиков Ф. А. Дискретная математика. — СПб: Питер, 2011 — основные разделы дискретной математики и важнейшие алгоритмы на дискретных структурах данных на базе лекций автора. описание выдержка (из одного из пред. изд.)

Б. Мейер. Почувствуй класс. — М.: НОУ «ИНТУИТ»; БИНОМ, 2011 — основательный труд об ООП по контракту (в смысле, доказательном ). выдержка описание

Szyperski C. A., Gruntz D., Murer S. Component Software Beyond Object-Oriented Programming. Second Edition. — Pearson Education, 2002 — классическая работа по КОП (вроде собираются переводить). описание

Pfister C. Component Software — 1997, Cuno Pfister (Oberon Microsystems, Inc.) — старая обзорная работа по КОП. перевод (Пфистер К. Компонентное программное обеспечение; ограниченная лицензия)

С. А. Орлов, Б. Я. Цилькер. Организация ЭВМ и систем. — СПб: Питер, 2011 — вполне систематический учебник. описание

В. Г. Хорошевский. Архитектура вычислительных систем. — М.:Изд-во МГТУ им. Н. Э. Баумана, 2008 — справочник по существующим архитектурам. описание

Круз Р. Структуры данных и проектирование программ. — М.:БИНОМ — Лаборатория знаний, 2008 —
систематический курс программирования от структур данных на базе формализованной постановки задачи. выдержка описание

А. В. Бабичев. Распознавание и спецификация структур данных. — Ленанд, 2009 — оригинальная работа по математической формализации и верификации структур данных, понимаемых широко — как "отношения между вещами", представляющие связи сущностей реального мира. выдержка описание

Б. Пирс. Типы в языках программирования. — Лямбда пресс, Добросвет, 2012 — рассмотрение типов на математической основе. описание

Р. Миллер, Л. Боксер. Последовательные и параллельные алгоритмы. — М.:Бином. Лаборатория знаний, 2006 — рассмотрение основных классов алгоритмов для ряда моделей исполнителей, включая асимптотику. выдержка описание

Э. Эванс. Предметно-ориентированное проектирование. — М.: Вильямс, 2010 — работа о проектировании программ на базе моделей предметных областей. описание

Н. Вирт, Ю. Гуткнехт. Разработка операционной системы и компилятора. Проект Оберон. — ДМК Пресс, 2012 — подробное описание проекта и реализации ОС Оберон. выдержка описание

Бабаян Б.А. Защищенные информационные системы — статья о подходе к безопасной архитектуре, реализованном в машинах и микропроцессорах "Эльбрус". выдержка (без илл.)

Понятное дело, есть и ряд общеизвестных работ по некоторым вопросам. Танненбаума тут уже упоминали... Вирт с его "Алгоритмами и структурами"... С.З. Свердлов... В.Н. Касьянов и В.А. Евстигнеев...
По более общим вопросам, обсуждавшимся в ЖЖ, можно ещё ряд источников найти.
Re: Фундаментальные основы программирования. Что нужно знать?
От: a_g_99 США http://www.hooli.xyz/
Дата: 28.05.12 06:23
Оценка: 3 (1) -1
Здравствуйте, Darooma, Вы писали:

D>Что из фундаментальных основ в программировании, таких как знание алгоритмов, вы можете назвать? Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.


D>1. Алгоритмы

D> а) Сортировки
D> б) Выборки
D> ....
D>2....

1) Основы асимптотического анализа. среднее [O(N)], худшее/лучшее роста по времени, по выделяемой памяти
2) Алгоритмы сортировок. База: Selection sort, Bubble sort, Insertion sort. Асимптотика. Advanced: Merge sort,Binary search, Timsort, Quick/Quick3, Heap sort. Асимптотика.
3) Деревья. База: Общие понятия для чего, какие типы деревьев бывают. Смысл балансировки. Асимптотика.
Advanced: AVL — определение и реализация, B+ tree — определение и реализация, RB tree — определение и реализация.
4) Алгоритмы на графах (тут кто-то другой подскажет я не силен)
5) Основы теории вероятности. Основные открытые задачи — парадокс монти-холла/ задача о двух конвертах и т.д.
6) Язык запросов (типа SQL). Основы синтаксиса, джойны, группировки. Индексы, оптимизация.
7) Основы реляционной модели для структуры данных. 3 нормальные формы.
8) Паттерны. GoF, SOLID. Определение рефакторинга, хороший/плохой код. Синхронные/асинхронные модели. Коллбэки.
9) Threading. Примитивы, основы синхронизации. Асинхронные паттерны кода. Потоки/процессы/сигналы/примитивы в ОС.
10) Системы исчисления (сам не знаю ). Логические сдвиги, операции с ними. Операции с двоичными числами, 16-чными числами.

А ведь есть еще требования к специализированным языкам и фрэймворкам. Вот такие дела
Re: Фундаментальные основы программирования. Что нужно знать?
От: Sharov Россия  
Дата: 28.05.12 07:44
Оценка: 3 (1) -1
Здравствуйте, Darooma, Вы писали:

Основы операционных системы (см. Таненбаума).
Основы реляционных баз данных (см. Дейта).
Понимание основных парадигм программирования -- ООП, ФП. По ООП советую Бертарана Мейера.
Паттерны (см. GOF).
Сети (см. Таненбаума).
Кодом людям нужно помогать!
Re: Фундаментальные основы программирования. Что нужно знать?
От: LaptevVV Россия  
Дата: 28.05.12 08:17
Оценка: +1 :)
Здравствуйте, Darooma, Вы писали:

D>Что из фундаментальных основ в программировании, таких как знание алгоритмов, вы можете назвать? Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.

Ну и самое главное — список понятий, которые настоящий программист должен понимать. Причем не умом, а подсознанием, интуитивно — словами ведь всякий может рассказать, что такое рекурсия, если ему достаточно долго это повторять. Итак, необходимо понимать:

присваивание;
последовательное выполнение;
циклы;
рекурсию;
косвенную адресацию (указатели);
мультипрограммирование (многопоточность);
«чувство правильной вещи».

Источник: Ген программизма...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Теорминимум - различные подходы
От: VladZharinov  
Дата: 20.07.12 01:15
Оценка: 1 (1)
Возможно, автор теорминимума исходил из часто озвучиваемого положения, что в любой области м.б. полезны сведения из других областей. Тут единственное что — тогда уж надо этому следовать и внутри предметки. В частности, не ограничиваясь одним рекомендуемым прогязыком...
Список по такому принципу м.б. таким, как в этом посте и связанных с ним. Кстати, если рядом посмотреть минимумы других авторов — они в общем следуют тому же... хотя бы этот... или этот...
Конкретно по языкам можно определить минимально представительный круг (только текстовых) как здесь и здесь.
Если говорить о не чисто текстовых языках — можно кое-что извлечь из этой библиографии, пожалуй. Там, конечно, упор на определённые языки — но есть и обзорные работы, и по общим принципам формально-графического представления.
Кстати, существует и такое общее определение теорминимума ИТ, как "математика-информатика-языки".
Re[2]: Фундаментальные основы программирования. Что нужно знать?
От: Darooma Россия  
Дата: 28.05.12 06:32
Оценка: -1
Здравствуйте, elmal, Вы писали:

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


D>>Что из фундаментальных основ в программировании, таких как знание алгоритмов, вы можете назвать? Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.

E>1) Умение декомпозировать;
E>2) Умение абстрагироваться;
E>3) Умение находить ошибки в коде;
E>4) Умение рефакторить
E>5) Иметь представления о различных парадигамах программирования и умение их использовать.
E>Пока хватит.

не то, слишком специфично.
Re[5]: Фундаментальные основы программирования. Что нужно знать?
От: dolor Китай  
Дата: 05.07.12 13:03
Оценка: +1
_O_>Нельзя это дать на лекциях. Это практические навыки.

кроме лекций в вузах ничего не бывает?
Re[3]: Теорминимум
От: Qbit86 Кипр
Дата: 19.07.12 20:24
Оценка: +1
Здравствуйте, Deprivator, Вы писали:

D>по ссылке той либо попытка пошутить, либо феерический бред (если все на полном серьезе)


Всё серьёзно. Этот теорминимум уже обсуждался на страницах нашего форума, и таки да, вызвал неиллюзорный баттхёрт. Модераторы «зашутили» её, переведя в тему «Юмор».

D>закон киргофа (физический, а не криптографический) позабавил.


Это школьный курс.

D>да и без уравнений максвелла или не зная о комплексном сопротивлении программить ясное дело невозможно.


Ну почему же. Можно «программить». Не очень понял, к чему это было сказано. Можно, например, работать стоматологом, не зная, с какой стороны расположена печень, и какие показания у препарата «Ибупрофен».

D>или автор перечислял все умные слова, которые слышал?


А что, какие-то комплексы по поводу «умных слов»?
Глаза у меня добрые, но рубашка — смирительная!
Фундаментальные основы программирования. Что нужно знать?
От: Darooma Россия  
Дата: 27.05.12 19:57
Оценка:
Что из фундаментальных основ в программировании, таких как знание алгоритмов, вы можете назвать? Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.

1. Алгоритмы
а) Сортировки
б) Выборки
....
2....
Re[3]: Фундаментальные основы программирования. Что нужно знать?
От: elmal  
Дата: 31.05.12 05:21
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

_O_>Это не фундаментальные основы. Это практические навыки, которые нарабатываются на практике. Фундамент — дискретная математика, алгоритмы, формальные языки, мат. логика и т.д. То, что большинство ничего такого не используют в работе ни о чем не говорит. Большинство людей обходится 4-мя арифметическими действиями над натуральными числами. Но это не означает ведь, что образование должно давать лишь этот объем.

Для начала, было бы неплохо, чтоб образование давало хотя бы тот объем, который я описал. А то ведь не дает ни черта, в результате дохрена людей, считающих себя программистами, такое городят, что хоть волком вой. А если и пытается дать, то плохо, и на последних курсах, когда народ уже вообще на лекции не ходит. А надо бы на первых, и считать это все базисом. Во вторых — дискретку, алгоритмы и т.д — да, это давать надо. Но не для того, чтоб студент это все зазубрил, а для того, чтобы народ потом на практике не изобретал велосипедов, чтобы в случае, когда он столкнулся с проблемой, он мог вспомнить, что это уже было, такие проблемы люди уже решали, и по ключевым словам мог нагуглить, вспомнить, применить. Но почему то кем то считается, что практические знания необязательны и второстепенны, а то, что должно лежать только в подсознании на всякий случай, нужно постоянно помнить со всеми деталями. И типа если ты за 20 лет забыл карты Карно, ибо ни разу не применял после института — вон из индустрии, ты ничего не знаешь и не умеешь. Глупо это!
PS Кстати, весьма любопытно стало, раз уж я про Карно упомянул. На собеседованиях я не слышал, чтоб про это спрашивали. И как, мастера проводить собеседования сами вспомнят про оптимизацию булевых выражений через много лет? Или собеседования исключительно недавние студенты должны проводить ?
Re[4]: Фундаментальные основы программирования. Что нужно знать?
От: a_g_99 США http://www.hooli.xyz/
Дата: 31.05.12 05:40
Оценка:
Здравствуйте, elmal, Вы писали:
E>Для начала, было бы неплохо, чтоб образование давало хотя бы тот объем, который я описал. А то ведь не дает ни черта, в результате дохрена людей, считающих себя программистами, такое городят, что хоть волком вой. А если и пытается дать, то плохо, и на последних курсах, когда народ уже вообще на лекции не ходит. А надо бы на первых, и считать это все базисом. Во вторых — дискретку, алгоритмы и т.д — да, это давать надо. Но не для того, чтоб студент это все зазубрил, а для того, чтобы народ потом на практике не изобретал велосипедов, чтобы в случае, когда он столкнулся с проблемой, он мог вспомнить, что это уже было, такие проблемы люди уже решали, и по ключевым словам мог нагуглить, вспомнить, применить. Но почему то кем то считается, что практические знания необязательны и второстепенны, а то, что должно лежать только в подсознании на всякий случай, нужно постоянно помнить со всеми деталями. И типа если ты за 20 лет забыл карты Карно, ибо ни разу не применял после института — вон из индустрии, ты ничего не знаешь и не умеешь. Глупо это!
Должен быть строгий математический или CS базис. И да студент должен это зазубрить. Я до сих пор помню основные определения матанализа и тервера (хотя столько времени), не потому что умный, а потому что зубрили жестко.
А если у вас нет мат. аппарата в наличии, а вы просто умеете рассуждать и владеете предметной областью — вы не программист, вы системный аналитик (тоже честь вам и хвала ).

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

Я карты Карно не спрашиваю (сам не знаю). Ограничиваюсь асимптотикой, простыми алгоритмами сортировки, болтовней о структурах данных, простыми паттернами (LinkedList, очередь, стек) и основами мультизадачности. В финале даю задачку на обсуждаемые темы. Вообще это строго индивидуально и зависит от человека.
Про присваивание не спрашиваю, потому что это бред
Re[4]: Фундаментальные основы программирования. Что нужно знать?
От: _Obelisk_ Россия http://www.ibm.com
Дата: 31.05.12 18:17
Оценка:
Здравствуйте, elmal, Вы писали:

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


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

Потому и даются такие мелкие кирпичики как алгоритмы. Из мелких кирпичиков строится все остальное, но вот как строить — это учится на практике.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[5]: Фундаментальные основы программирования. Что нужно знать?
От: elmal  
Дата: 01.06.12 20:37
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

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

В других странах как то дают. Начинают про это говорить с первых курсов. А тренируются для начала на всяких сортировках (которые сразу стараются писать понятно, а не выжимать каждый такт), а затем уже на чем нибудь и поинтереснее, например на написании интерпретатора или компилятора. В наших же православных университетах даже системы контроля версий считаются чем то излишним. Но сортировки типа нужно наизусть знать и через 10 лет, со всеми оптимизациями, и ни в коем случае не применяя богомерзкую рекурсию — все должно быть оптимально!

_O_>Потому и даются такие мелкие кирпичики как алгоритмы. Из мелких кирпичиков строится все остальное, но вот как строить — это учится на практике.

Угу. И если после 10 лет практической работы не можешь в деталях написать на бумажке quickSort со всеми оптимизациями возможными, а также на зубок не помнишь правила написания хеш функции, то есть отвечаешь не очень на это все уверенно, хоть и в общих чертах правильно — вон их профессии. На практические навыки плевать, главное чтоб изученное 15 лет назад от зубов отскакивало. Практические навыки вообще не важны, главное умение писать на листочке мегаоптимальный radixsort, причем со вводом, выводом и инклюдами.
Re[5]: Фундаментальные основы программирования. Что нужно знать?
От: Darooma Россия  
Дата: 02.07.12 06:30
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

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


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


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


_O_>Потому и даются такие мелкие кирпичики как алгоритмы. Из мелких кирпичиков строится все остальное, но вот как строить — это учится на практике.


Согласен.
Re: Фундаментальные основы программирования. Что нужно знать?
От: MxMsk Португалия  
Дата: 14.07.12 19:17
Оценка:
Здравствуйте, Darooma, Вы писали:

D>Что из фундаментальных основ в программировании, таких как знание алгоритмов, вы можете назвать? Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.

Давно уже замечаю, что вопрос бесполезный. Каждый пишет про то, чем занимается. Вот кто-то в хитрожопых алгоритмах, он будет до посинения доказывать, что нужно заучить наизусть radix sort для массивов. Другой в архитекторах ходит, у него всякие SOLID превыше всего. Третий увлекся XP, стянет доказывать, что главное — TDD. Ну, а мне импонирует мнение Спольски по этому вопросу.
Re[4]: Фундаментальные основы программирования. Что нужно знать?
От: Sharowarsheg  
Дата: 14.07.12 19:53
Оценка:
Здравствуйте, elmal, Вы писали:

D>>не то, слишком специфично.

E>Что значит слишком специфично. Это именно Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы..

и от задачи тоже почти не зависят
Re: Фундаментальные основы программирования. Что нужно знать?
От: Abyx Россия  
Дата: 14.07.12 20:53
Оценка:
Здравствуйте, Darooma, Вы писали:

D>Что из фундаментальных основ в программировании, таких как знание алгоритмов, вы можете назвать? Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.


1. DRY.
2. SOLID.
3. английский язык (чтение).
In Zen We Trust
Re: Фундаментальные основы программирования. Что нужно знать?
От: vpchelko  
Дата: 14.07.12 21:45
Оценка:
D>1. Алгоритмы
D> а) Сортировки
D> б) Выборки

Хз, много чего написали, но в основном частные случаи.

Тут простой принцип — разделяй и властвую.

А уметь это делать правильно приходит только с опытом.
Сало Украине, Героям Сала
Re[2]: Фундаментальные основы программирования. Что нужно знать?
От: vpchelko  
Дата: 14.07.12 21:53
Оценка:
MM>Давно уже замечаю, что вопрос бесполезный. Каждый пишет про то, чем занимается. Вот кто-то в хитрожопых алгоритмах, он будет до посинения доказывать, что нужно заучить наизусть radix sort для массивов. Другой в архитекторах ходит, у него всякие SOLID превыше всего. Третий увлекся XP, стянет доказывать, что главное — TDD. Ну, а мне импонирует мнение Спольски по этому вопросу.

Очень печально. Я этот рахид-сорд, вообще только на РСДНе видел его. Если понадобиться — найду и разберусь как он работает. Про остальное из этого поста узнал. Ну точно не фига не основы.
Сало Украине, Героям Сала
Re[2]: Теорминимум
От: Deprivator  
Дата: 19.07.12 18:07
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>http://sharpc.livejournal.com/67583.html


по ссылке той либо попытка пошутить, либо феерический бред (если все на полном серьезе)

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

или автор перечислял все умные слова, которые слышал?
In P=NP we trust.
Re[2]: Фундаментальные основы программирования. Что нужно знать?
От: a_g_99 США http://www.hooli.xyz/
Дата: 20.07.12 06:16
Оценка:
Здравствуйте, VladZharinov, Вы писали:

VZ>Можно предложить и литературу:

Вся литература которую вы перечислили либо устарела (в 10-м переиздании) либо чересчур академическая и к реальному практическому CS не имеет отношения. Вы действительно думаете что читая какого-то винокурова или мозгового можно научиться современному CS?

Есть 2 вполне сложившихся базовых источника для приобретения общего набора знаний в рамках CS:
1) Учебник Кормена, где изложены основные концепции и алгоритмы основных направлений CS
2) MIT-учебник Абельсона (в России и Европе не очень популярен, но хорошо известен в штатах)
Re[5]: Теорминимум — различные подходы
От: Qbit86 Кипр
Дата: 20.07.12 08:58
Оценка:
Здравствуйте, VladZharinov, Вы писали:

VZ>[В цитате куча ссылок типа «здесь» на логово оберонщиков.]


Сложно представить, как в вашу альтернативную реальность затесался такой почтенный товарищ, как Бенджамин Пирс.
Глаза у меня добрые, но рубашка — смирительная!
Re[6]: Теорминимум — различные подходы
От: VladZharinov  
Дата: 21.07.12 07:21
Оценка:
Здравствуйте, Qbit86, Вы писали:

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


VZ>>[В цитате куча ссылок типа «здесь» на логово оберонщиков.]


Q>Сложно представить, как в вашу альтернативную реальность затесался такой почтенный товарищ, как Бенджамин Пирс.


Именно потому, что была цель дать альтернативы (не единственный тип языков, парадигма программирования, подход к математике, информатике...).
Кстати, уточню о ссылках — большая часть из нескольких штук в данном посте к "логову" отношения не имеет. В чём, впрочем, нетрудно убедиться...
Конечно, подходы к формированию набора источников м.б. разными. Поэтому конкретные мнения других участников интересны. Помимо прочего, исходил из минимума, общего для программистов и других ролей в процессе — аналитиков (постановщиков, спецификаторов, м.б. ещё как-то называются) и предметников (заказчиков, пользователей — правда, скорее активно участвующих в работе над системой).
Re[3]: Фундаментальные основы программирования. Что нужно знать?
От: VladZharinov  
Дата: 21.07.12 07:54
Оценка:
Здравствуйте, a_g_99, Вы писали:

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


VZ>>Можно предложить и литературу:

__>Вся литература которую вы перечислили либо устарела (в 10-м переиздании) либо чересчур академическая и к реальному практическому CS не имеет отношения. Вы действительно думаете что читая какого-то винокурова или мозгового можно научиться современному CS?
Цель была более ограниченной — предложить источники не для углублённой ИТ-подготовки, а минимум, предположительно базовый и для них, и для аналитиков, и для предметников на уровне "представителя заказчика" — вот рядом уже написал.
Отсюда цель — дать представление до такой степени, чтобы человек понимал, как что можно сделать разными путями по препоручению части работы с информацией (опять же в части, условно называемой "данные") той или иной "языковой машине"... и до какой степени это возможно, исходя из современных научных знаний...

Отсюда:
__>Есть 2 вполне сложившихся базовых источника для приобретения общего набора знаний в рамках CS:
__>1) Учебник Кормена, где изложены основные концепции и алгоритмы основных направлений CS
__>2) MIT-учебник Абельсона (в России и Европе не очень популярен, но хорошо известен в штатах)
— да, и SICP, и "Построение и анализ" мне также известны. Не глубокий ИТ-теоретик (что, наверное, понятно ) — но в меру своего понимания согласен с Вашими оценками. А для "общеначального" минимума в свете сказанного выше в ИТ-теории, считаю, подойдёт как раз С.С. Лавров. Он сжато излагает ту же самую структуру и интерпретацию — м.б. не так широко/глубоко, но для непрограммиста пойдёт.
Ряд указанных книг (и названные Вами тоже) обсуждались на той же обероновской конференции. И обычно отнюдь не в свете приложения к пропаганде Оберонов — а то читая некоторые отзывы об Оберонкоре, можно подумать, что вся она только об этом... Там так же, как и здесь у некоторых участников, нередко указывалось, что надо начинать с математики и естественных языков в школе... иначе не только Кормена и Абельсона, но и Винокурова-Ворожцова студент или ученик "профильного" программистского класса не осилит...

А источники и для этой цели, конечно, м.б. предложены разные...

Кстати, в общий минимум, наверное, должны входить и сведения для развития критического мышления — но это уже за пределами чисто основ программирования (хотя разбор методов и средств CS должно включать)...
Re: Фундаментальные основы программирования. Что нужно знать?
От: licedey  
Дата: 22.08.12 21:30
Оценка:
Здравствуйте, Darooma, Вы писали:

D>Что из фундаментальных основ в программировании, таких как знание алгоритмов, вы можете назвать? Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.


D>1. Алгоритмы

D> а) Сортировки
D> б) Выборки
D> ....
D>2....

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