1C очень одаренно спроектировал хранение проводок и потому требовался процесс восстановления записей чтобы залатать дыры.
Специалисты 1С решили эту проблему дизайна решением линейных уравнений чтобы эти дырки посчитать математически.
При этом алгоритм не совершенен и партнеры 1С зарабатывают на его доводке.
Корректный итог?
-
Давайте подытожим по вашему широкому кругозору.
Вы - настоящий программист, с фундаментальной математической базой. Имеете обширный опыт на проектах связанных с графикой, с джавой. Имеете научный опыт и опыт преподавания в вузе. Сейчас работаете или подрабатываете с 1С в качестве программиста.
Считаете важным писать оптимизированный код который соответствует метрикам указанным в технической спецификации. Или, по крайней мере, имеете только такой опыт проектов где это критично.
Умеете подобрать мат. модель к бизнес-постановке. Можете решить любую задачу. Считаете математику фундаментом успешной карьеры и залогом профессионализма.
Вы что-то наговнокодили и получили результат. Чудом - правильный
...
А я, поскольку, вычислительная геометрия (математика, ага) не прошла мимо меня, реализую алгоритм плоского заметания
Вы знаете, я всегда любил математику, и сейчас очень спокойно к ней отношусь. Надо будет - разберусь. 1-2 недели, поверьте. Сомневаюсь, что в следующие 20 лет программирования потребуется, но ничего не имею против.
Хотелось бы отметить три момента.
Первый - это сомнительная привлекательность для команды, и бизнеса в целом, программистов с фундаментальной математической базой. Если только этого не требует домен, тот же блокчейн.
Причина - вы реально странные. Софт скиллз сейчас важнее, чем умение плоско заметать.
Второй - редко требуется та экспертиза о которой вы говорите, и если требуется, то в третью очередь. За внутреннюю красоту - не платят, за оптимизацию - платят отдельно.
Причина - рынку не интересны алгоритмы и формулы, интересно решение бизнес-проблем, где скорость чаще не в приоритете. Для ночного пересчета не важно 30 минут или 3 часа. Многие проблемы производительности проще решить запуском на отдельном сервере и прочими чисто организационными способами. Представители бизнеса проповедуют теорию простоты.
Третий - вы интересны миру своим проектным опытом. И больше ровно ничем. Внутренняя кухня и чем вы перемешиваете свои мысли, как выравниваете макароны в кипящей кастрюле - мир оценить не в состоянии. Когда вы говорите могу это и могу то, потому что фундаментальная математическая база - рынок этого не слышит.
Причина - хороший код, хороший программист, хорошо подходящий, и прочее - с фундаментальной математической базой ничего общего не имеет. И это не моя оценка. Это reality check.
Но только с опытом в программировании, без обременения математикой, вы 100% сделаете кратно тормознее.
В принципе, этот аргумент - квинтэссенция вашего взгляда на программирование.
Скорость - это физическая величина. Создание оптимального кода ничего общего с математикой не имеет. Математика - это абстрактный уровень описания, но не реализации.
Уровень же написания кода это физика и опыт программирования. Понимание как используются ресурсы и какой код от тебя ожидается в данной системе.
Физика и механика на уровне реализации.
Иначе мы берем сливки 10% и 20% и вычисляем 30% сливки. А если мы знаем как получить 30% сливки, то понимание того что это сумма 10% и 20%, оно ни о чем.
это логическое представление для публики примерно такое же как UML диаграмма процесса для клиента.
Технический дизайн решения и собственно код будет бесконечно далек от этих формул. Так как средства реализации слишком примитивны. Где не математикой, а работой с памятью компьютера и структурами данных, особенностями именно программирования.
Даже если вы возьмете специальные языки для построения математических моделей это будет синтаксический сахар поверх многомерных массивов.
В моей картине мира, программист способен в любую предметную область. И математика его не остановит.
Именно так. Но если в контексте то именно предметное образование как к примеру экономическое/ бухгалтерское будет намного полезнее для 1С.
И в приведенном примере себестоимости, задача решилась бы точно так же и без подобной математически красивой иллюстрации. Бухгалтер + опытный программист.
автоматически определяет количество центров затрат, строит соответствующий граф. Затем формируется система уравнений и регламентными документами производится расчет себестоимости
Жалко что я не математик, потому что мне явно не хватает удовлетворения от понимания того что я строю именно граф:)
И формирование системы уравнений - это реально круто.
Математика не создает, математика - описывает.
Любой достаточно сложный процесс созданный просто прикладниками можно описать в формулах как триумф математики. В то время как это всегда элементарная работа с коллекциями в памяти и выборками из базы данных, при понимании прикладной области. Тупо в силу примитивности инструментов.
Поэтому в графе затрат удаляем все дуги, которые не отражают реальных потоков затрат. Одновременно учтем, что на начало месяца на любом складе могут существовать остатки товаров.
Сначала написали используя просто здравый смысл, потом задокументировали реализацию.
Математики они действительно нужны в программировании. Только не для того чтобы мучить студентов, а для того чтобы впечатлить пользователя глубиной.
Ага. Вон оно что, Михалыч ) Таки вы считаете, что в нормативке бухучета зарыт АЛГОРИТМ? Спешу разочаровать: нет.
Что такое граф затрат? Что такое центры затрат? Как это все строится - это придумка от программистов 1С.
Это стандартная архитектура всех MRP/ERP систем там где такая проблема прохода по записям возникает. То решение о котором вы говорите я вижу как шаблонное начиная с 2004 года.
Любой старший программист в области ERP, в западном понимании этого термина, в первую очередь будет думать о записи в дополнительные таблицы для ускорения вычислений.
Очевидный шаблон на подкорке. Это не алгоритм. Какая же эта четкая последовательность действий когда у вас с десяток событий и запись в пяток дополнительных таблиц. А потом вы вы эти специальные таблицы используете при расчете. Это дизайн решения, а не алгоритм. И не математик его создает, а просто опытный разработчик.
Шаблонным вы назвали решение, которое в несколько тысяч раз ускоряет решение задачи? Ну, сильно, че.
Именно так. Здесь нет математики, а есть записи в базе данных и события в системе.
То что вы называете в данном контексте алгоритмом, это очевидное архитектурное решение. Поздравляю, вас можно назвать старшим программистом.
И здесь все про базу данных и количество записей, про понимание операций которые делает пользователь.
То что видите на крыльях бабочки фракталы, а я нет, не мешает нам обоим пришпилить ее к стене. Это про долю математики в вашей оптике, а не про ее наличие в требуемых решениях.
Думаю что использование графических библиотек это просто про особенности головы конкретного человека, его пространственное мышление, про его склонности, чем про знания математики.
Но спорить здесь не буду. Понятно что где-то умение жонглировать семью тарелками все же нужно. Не зря же столько времени на это жонглирование потрачено.
Но, кажется, кто-то должен этот алгоритм придумать. Я правильно понимаю, что в вашей картине мира это делает кто угодно (аналитик, методист, математик, экономист, финансист, штатный астролог), но не программист?
Добавление таблиц для хранения/подсчета текущей себестоимости чтобы не ходить по всем проводкам - это шаблонное решение, уровень старшего программиста. Именно решение, на базе знания системы/продукта и предметной области.
Математика на уровне 7 класса школы здесь она конечно есть, в виде линейных уравнений. Но опять таки, школьная алгебра.
Вы подменяете уровень старшего программиста (senior) фигурой математика, и решения которые он принимает каждую неделю на автомате, в силу опыта разработки, показываете как апофеоз математической мысли.
Математика она есть и на крыльях бабочки, и нужна и токарю, и снайперу. И даже повару. Но мы ведь о другой базе, верно?
Той самой которая чтобы алгоритм.
Но как много математики в алгоритме заварки чая?
Сколько алгоритмов на кухне ресторана? Сколько там математиков на этой кухне?
Программистские задачи отличаются от журналистских. Вам нужно понять постановку и придумать как ее решить. Алгоритм придумать.
Ну вот после 20 лет программирования, ко мне на кухне где все жарится и тушится, шипит и шевелится, заходит Учитель и говорит что мне нужна Математика.
Можно еще пойти в воинскую часть и учить снайперов расчетам упреждений с учетом высоты и скорости ветра.
Или журналиста поучить как найти и анализировать информацию.
Без математики, вы можете написать фронт к торговой системе, но вас не пустят пилить ядро.
Про "пилить", особенно от научного работника.
– Ничего не понимаю. Неа, это не золото.
– Пилите, Шура, пилите.
Навыки повара по умению держать процесс и журналиста по работе с информацией - сейчас гораздо более нужнее в программировании. Терпение и выдержка снайпера важнее чем его математические способности.
Доля математики есть. Но эдакая 1/12 в общем наборе. Не стоит ей так высоколобить.
Не уверен, что это слабость как специалистов коррелирует с базой знаний. Вся эта база в нескольких секундах поиска. Просто иные люди. Soft skills по отношению к окружающему миру.
Нет насмотренности хорошего кода, когда просто чувство что это - красиво, а так - режет глаз. От знания 10 языков программирования и 5 лет вуза, такое чувство правильности не появится само по себе.
Не, пройдемся в цикле по списку, а внутри еще в одном цикле по нему же чтобы нужные элементы найти. Ах да, предварительно список еще и отсортировав
Исходя из моего понимания людей, условный бывший таксист в принципе не полезет такое делать, в то время как чистый технарь с "фундаментальной" базой - очень даже может.
Хороший программист - это ленивый программист понимающий что велосипедов вокруг на все случаи жизни.
в каких правда школах это проходят все — даже не представляю
Для возраста 14-16 лет. Необязательный предмет, Computer Science, но в школьной программе. Один из возможных, на выбор, экзаменов по окончании средней школы.
Школьная программа. Для старших классов школы перед поступлением в колледж.
Contents Introduction Section 1 Theory of computer science
Chapter 1 Binary systems and hexadecimal 1.1 Introduction 1.2 The binary system 1.3 Measurement of the size of computer memories 1.4 Example use of binary 1.5 The hexadecimal system 1.6 Use of the hexadecimal system
Chapter 2 Communication and internet technologies 2.1 Introduction 2.2 Data transmission 2.3 Error-checking methods 2.4 Internet technologies
Chapter 3 Logic gates and logic circuits 3.1 Introduction 3.2 Logic gates 3.3 Truth tables 3.4 The function of the six logic gates 3.5 Logic circuits 3.6 Logic circuits in the real world
Chapter 4 Operating systems and computer architecture 4.1 Introduction 4.2 Operating systems 4.3 Interrupts 4.4 Computer architecture 4.5 The fetch–execute cycle Chapter 5 Input and output devices 5.1 Introduction
5
5.2 Input devices 5.3 Output devices
Chapter 6 Memory and data storage 6.1 Introduction 6.2 File formats 6.3 Lossless and lossy file compression 6.4 Memory and storage 6.5 How to estimate the size of a file
Chapter 7 High- and low-level languages 7.1 Programming languages 7.2 Translators 7.3 What happens when things go wrong?
Chapter 8 Security and ethics 8.1 Introduction 8.2 Security and data integrity 8.3 Cookies 8.4 Loss of data and data corruption 8.5 Firewalls and proxy servers 8.6 Security protocols 8.7 Encryption 8.8 Applications 8.9 Computer ethics 8.10 Free software, freeware and shareware Section 2 Practical problem-solving and programming
Chapter 9 Problem-solving and design 9.1 Introduction 9.2 Algorithms 9.3 Test data 9.4 Validation and verification 9.5 Using trace tables 9.6 Identifying and correcting errors 9.7 Producing algorithms
6
Chapter 10 Pseudocode and flowcharts 10.1 Introduction 10.2 Assignment 10.3 Conditional statements 10.4 Loop structures 10.5 Input and output statements 10.6 Standard actions 10.7 Examples of algorithms in pseudocode 10.8 Standard flowchart symbols
Chapter 11 Programming concepts 11.1 Introduction 11.2 Programming 11.3 Declaration and use of variables and constants 11.4 Basic data types 11.5 How to make your program work
Chapter 12 Data structures: arrays and using pre-release material 12.1 Introduction 12.2 Arrays 12.3 Using pre-release material
Chapter 13 Databases 13.1 Introduction 13.2 What are databases used for? 13.3 The structure of a database 13.4 Practical use of a database
Зависть меня берет :) Хотел бы я тоже так учиться в свое время.
никак не могут научиться и понять почему у них код медленный получается
Писать код который исполняется быстрее за счет знания алгоритмов - это редкая потребность. По крайней мере в Enterprise.
Все же обычно это просто использование готовых коллекций типа
The performance of the implementations is described using words such as constant-time, log, linear, n log(n), and quadratic to refer to the asymptotic upper-bound on the time complexity of performing the operation. All this is quite a mouthful, and it doesn't matter much if you don't know what it means. If you're interested in knowing more, refer to any good algorithms textbook.
Там где есть база данных, уже она узкое место, и тут уже другая экспертиза, но по прежнему не обход графов.
Важная мысль в том, что не нужно впрок создавать базу. Быть самоучкой - вот основной навык. Когда понадобиться тогда и алгоритмы в зубы. А то я Кнута в свое время начитался, как-то не сильно он мне помог, в отличие от хороших книг по Java и .NET.
Не спорю. В рамках общего кругозора. Тот же школьного уровня Computer Science дает необходимое представление. Точно не в рамках математического образования которым многие пытаются подменить Computer Science.
То, что я изучал, в рамках профильного высшего образования по программированию ПК и ЛС, 20 лет назад, моя дочь сейчас изучает в средней школе.
По поводу квадратичной сложности (кода), не уверен что это релевантно академическому образованию. SOLID, KISS, YAGNI и прочее - это культура написания кода, чувство кода. То что достигается только тем самым презираемым самоучением:)
Тут вопрос что есть база. Еще 30 лет назад это действительно была все больше математическая и алгоритмическая база. Но сейчас, с проникновением программирования во все сферы жизни, есть системное и есть прикладное программирование.
таненбаум - это системное программирование. Бинарные поиски, сортировки вставками и прочее - это системное программирование. Low level.
Для прикладного же программирования база:
владение фреймворком/продуктом, знание технологического стека (Junor +)
умение работать с любой свалкой кода (Middle +)
понимание прикладной области (Senior +)
Яндекс кончено прекрасен со своими алгоритмами на входе, но возьмите практически любую вакансию по той же Java. И там уже не про знание математики, а про знание конкретных технологий организации кода. High level.
Что есть профильное образование - вопрос крайне открытый.
Для общей картины. 85% оборудования российской нефтедобычи это импорт, полностью или частично. Шлюмберже и Хелибертон (Schlumberger, Halliburton) - это американские компании.
И ваше признание заслуг мировых паразитов, которые только и делают что печатают презренные доллары - вызывает некоторые вопросы.
Те же, для кого программирование - это не только ЯП + фреймворк, но и некая фундаментальная база (математика, алгоритмы и пр.), они закрывают остальные 20% задач, которые не по зубам тем, кто говорит "фи" про математику и прочую базу.
100% задач - это сеньор по уровню, а не математик. И сеньора делает уровень понимания предметной области реального мира, а не уровень математики.
И если в ряде специализаций предметной областью служит математика, это не делает ее базой. Алгоритмы же не являются инструментом, а часть предметной области.
Почему нельзя изучить реляционную алгебру в рамках курса по БД?
Реляционная алгебра и так неотъемлемая часть дисциплины. Ей не нужно выпячиваться. Многие могут даже не осозновать, что это математика, но прекрасно применять джойны будучи полными "гуманитариями".
Понимание, во что превратится твой select с десятком джойнов - это как раз та самая экспертиза, в которой в том числе есть и понимание реляционной алгебры.
Математику можно найти и на крыльях бабочки. Правильный результат выборки это давно уже не уровень специалиста.
В моем примере, на миллионах записях на MS SQL, то во что превращается запрос - это уже физический дизайн всего и вся, то есть железо и атрибуты, где дух Эдгара Кодда пролетает. Он даже вреден там где мы говорим про производительность. И в расследовании всего этого математический архитип убьет себя об стенку. Совсем другие мозги нужны.
Давайте подытожим по триумфальному РАУЗ.
1C очень одаренно спроектировал хранение проводок и потому требовался процесс восстановления записей чтобы залатать дыры.
Специалисты 1С решили эту проблему дизайна решением линейных уравнений чтобы эти дырки посчитать математически.
При этом алгоритм не совершенен и партнеры 1С зарабатывают на его доводке.
Корректный итог?
-
Давайте подытожим по вашему широкому кругозору.
Вы - настоящий программист, с фундаментальной математической базой. Имеете обширный опыт на проектах связанных с графикой, с джавой. Имеете научный опыт и опыт преподавания в вузе. Сейчас работаете или подрабатываете с 1С в качестве программиста.
Считаете важным писать оптимизированный код который соответствует метрикам указанным в технической спецификации. Или, по крайней мере, имеете только такой опыт проектов где это критично.
Умеете подобрать мат. модель к бизнес-постановке. Можете решить любую задачу. Считаете математику фундаментом успешной карьеры и залогом профессионализма.
Корректно?
Вы знаете, я всегда любил математику, и сейчас очень спокойно к ней отношусь. Надо будет - разберусь. 1-2 недели, поверьте. Сомневаюсь, что в следующие 20 лет программирования потребуется, но ничего не имею против.
Хотелось бы отметить три момента.
Первый - это сомнительная привлекательность для команды, и бизнеса в целом, программистов с фундаментальной математической базой. Если только этого не требует домен, тот же блокчейн.
Причина - вы реально странные. Софт скиллз сейчас важнее, чем умение плоско заметать.
Второй - редко требуется та экспертиза о которой вы говорите, и если требуется, то в третью очередь. За внутреннюю красоту - не платят, за оптимизацию - платят отдельно.
Причина - рынку не интересны алгоритмы и формулы, интересно решение бизнес-проблем, где скорость чаще не в приоритете. Для ночного пересчета не важно 30 минут или 3 часа. Многие проблемы производительности проще решить запуском на отдельном сервере и прочими чисто организационными способами. Представители бизнеса проповедуют теорию простоты.
Третий - вы интересны миру своим проектным опытом. И больше ровно ничем. Внутренняя кухня и чем вы перемешиваете свои мысли, как выравниваете макароны в кипящей кастрюле - мир оценить не в состоянии. Когда вы говорите могу это и могу то, потому что фундаментальная математическая база - рынок этого не слышит.
Причина - хороший код, хороший программист, хорошо подходящий, и прочее - с фундаментальной математической базой ничего общего не имеет. И это не моя оценка. Это reality check.
В принципе, этот аргумент - квинтэссенция вашего взгляда на программирование.
Скорость - это физическая величина. Создание оптимального кода ничего общего с математикой не имеет. Математика - это абстрактный уровень описания, но не реализации.
Уровень же написания кода это физика и опыт программирования. Понимание как используются ресурсы и какой код от тебя ожидается в данной системе.
Физика и механика на уровне реализации.
Иначе мы берем сливки 10% и 20% и вычисляем 30% сливки. А если мы знаем как получить 30% сливки, то понимание того что это сумма 10% и 20%, оно ни о чем.
Для вас программирование это создание алгоритма, c использованием математической базы. Обратите внимание как часто вы упоминаете слово "алгоритм".
То что вы упомянули как оргазмический триумф алгоритма
https://infostart.ru/1c/articles/181748/
это логическое представление для публики примерно такое же как UML диаграмма процесса для клиента.
Технический дизайн решения и собственно код будет бесконечно далек от этих формул. Так как средства реализации слишком примитивны. Где не математикой, а работой с памятью компьютера и структурами данных, особенностями именно программирования.
Даже если вы возьмете специальные языки для построения математических моделей это будет синтаксический сахар поверх многомерных массивов.
Именно так. Но если в контексте то именно предметное образование как к примеру экономическое/ бухгалтерское будет намного полезнее для 1С.
И в приведенном примере себестоимости, задача решилась бы точно так же и без подобной математически красивой иллюстрации. Бухгалтер + опытный программист.
Жалко что я не математик, потому что мне явно не хватает удовлетворения от понимания того что я строю именно граф:)
И формирование системы уравнений - это реально круто.
Математика не создает, математика - описывает.
Любой достаточно сложный процесс созданный просто прикладниками можно описать в формулах как триумф математики. В то время как это всегда элементарная работа с коллекциями в памяти и выборками из базы данных, при понимании прикладной области. Тупо в силу примитивности инструментов.
Сначала написали используя просто здравый смысл, потом задокументировали реализацию.
Математики они действительно нужны в программировании. Только не для того чтобы мучить студентов, а для того чтобы впечатлить пользователя глубиной.
Математика не создает, математика - описывает.
Это стандартная архитектура всех MRP/ERP систем там где такая проблема прохода по записям возникает. То решение о котором вы говорите я вижу как шаблонное начиная с 2004 года.
Любой старший программист в области ERP, в западном понимании этого термина, в первую очередь будет думать о записи в дополнительные таблицы для ускорения вычислений.
Очевидный шаблон на подкорке. Это не алгоритм. Какая же эта четкая последовательность действий когда у вас с десяток событий и запись в пяток дополнительных таблиц. А потом вы вы эти специальные таблицы используете при расчете. Это дизайн решения, а не алгоритм. И не математик его создает, а просто опытный разработчик.
Именно так. Здесь нет математики, а есть записи в базе данных и события в системе.
То что вы называете в данном контексте алгоритмом, это очевидное архитектурное решение. Поздравляю, вас можно назвать старшим программистом.
И здесь все про базу данных и количество записей, про понимание операций которые делает пользователь.
То что видите на крыльях бабочки фракталы, а я нет, не мешает нам обоим пришпилить ее к стене. Это про долю математики в вашей оптике, а не про ее наличие в требуемых решениях.
Думаю что использование графических библиотек это просто про особенности головы конкретного человека, его пространственное мышление, про его склонности, чем про знания математики.
Но спорить здесь не буду. Понятно что где-то умение жонглировать семью тарелками все же нужно. Не зря же столько времени на это жонглирование потрачено.
Программист-кодер потому что. Senior сделает как надо. Не имея при этом никакой математической базы кроме школьной программы.
А вот, там где биржа, трейдинг - да, разработка моделей. Но это про предметную область скорее где нужна математика.
А где-то нужно знать геологию при визуализации геологического софта, это OK.
Математик != Senior
Добавление таблиц для хранения/подсчета текущей себестоимости чтобы не ходить по всем проводкам - это шаблонное решение, уровень старшего программиста. Именно решение, на базе знания системы/продукта и предметной области.
Математика на уровне 7 класса школы здесь она конечно есть, в виде линейных уравнений. Но опять таки, школьная алгебра.
Вы подменяете уровень старшего программиста (senior) фигурой математика, и решения которые он принимает каждую неделю на автомате, в силу опыта разработки, показываете как апофеоз математической мысли.
старший программист != математик
решение != математическая модель
Математика она есть и на крыльях бабочки, и нужна и токарю, и снайперу. И даже повару. Но мы ведь о другой базе, верно?
Той самой которая чтобы алгоритм.
Но как много математики в алгоритме заварки чая?
Сколько алгоритмов на кухне ресторана? Сколько там математиков на этой кухне?
Ну вот после 20 лет программирования, ко мне на кухне где все жарится и тушится, шипит и шевелится, заходит Учитель и говорит что мне нужна Математика.
Можно еще пойти в воинскую часть и учить снайперов расчетам упреждений с учетом высоты и скорости ветра.
Или журналиста поучить как найти и анализировать информацию.
Про "пилить", особенно от научного работника.
Навыки повара по умению держать процесс и журналиста по работе с информацией - сейчас гораздо более нужнее в программировании. Терпение и выдержка снайпера важнее чем его математические способности.
Доля математики есть. Но эдакая 1/12 в общем наборе. Не стоит ей так высоколобить.
Не уверен, что это слабость как специалистов коррелирует с базой знаний. Вся эта база в нескольких секундах поиска. Просто иные люди. Soft skills по отношению к окружающему миру.
Джун может просто не знать, что надо что-то еще.
Нет насмотренности хорошего кода, когда просто чувство что это - красиво, а так - режет глаз. От знания 10 языков программирования и 5 лет вуза, такое чувство правильности не появится само по себе.
Исходя из моего понимания людей, условный бывший таксист в принципе не полезет такое делать, в то время как чистый технарь с "фундаментальной" базой - очень даже может.
Хороший программист - это ленивый программист понимающий что велосипедов вокруг на все случаи жизни.
Для возраста 14-16 лет. Необязательный предмет, Computer Science, но в школьной программе. Один из возможных, на выбор, экзаменов по окончании средней школы.
https://www.cambridgeinternational.org/programmes-and-qualifications/cambridge-igcse-computer-science-0478/
Вот пример материалов
Cambridge IGCSE Computer Science.pdf
https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxvbGV2ZWxjb21wdXRlcnN8Z3g6NzFkYTQwNTY2MWMxODc3NA
Hidden text
Школьная программа. Для старших классов школы перед поступлением в колледж.
Contents
Introduction
Section 1 Theory of computer science
Chapter 1 Binary systems and hexadecimal
1.1 Introduction
1.2 The binary system
1.3 Measurement of the size of computer memories
1.4 Example use of binary
1.5 The hexadecimal system
1.6 Use of the hexadecimal system
Chapter 2 Communication and internet technologies
2.1 Introduction
2.2 Data transmission
2.3 Error-checking methods
2.4 Internet technologies
Chapter 3 Logic gates and logic circuits
3.1 Introduction
3.2 Logic gates
3.3 Truth tables
3.4 The function of the six logic gates
3.5 Logic circuits
3.6 Logic circuits in the real world
Chapter 4 Operating systems and computer architecture
4.1 Introduction
4.2 Operating systems
4.3 Interrupts
4.4 Computer architecture
4.5 The fetch–execute cycle
Chapter 5 Input and output devices
5.1 Introduction
5
5.2 Input devices
5.3 Output devices
Chapter 6 Memory and data storage
6.1 Introduction
6.2 File formats
6.3 Lossless and lossy file compression
6.4 Memory and storage
6.5 How to estimate the size of a file
Chapter 7 High- and low-level languages
7.1 Programming languages
7.2 Translators
7.3 What happens when things go wrong?
Chapter 8 Security and ethics
8.1 Introduction
8.2 Security and data integrity
8.3 Cookies
8.4 Loss of data and data corruption
8.5 Firewalls and proxy servers
8.6 Security protocols
8.7 Encryption
8.8 Applications
8.9 Computer ethics
8.10 Free software, freeware and shareware
Section 2 Practical problem-solving and programming
Chapter 9 Problem-solving and design
9.1 Introduction
9.2 Algorithms
9.3 Test data
9.4 Validation and verification
9.5 Using trace tables
9.6 Identifying and correcting errors
9.7 Producing algorithms
6
Chapter 10 Pseudocode and flowcharts
10.1 Introduction
10.2 Assignment
10.3 Conditional statements
10.4 Loop structures
10.5 Input and output statements
10.6 Standard actions
10.7 Examples of algorithms in pseudocode
10.8 Standard flowchart symbols
Chapter 11 Programming concepts
11.1 Introduction
11.2 Programming
11.3 Declaration and use of variables and constants
11.4 Basic data types
11.5 How to make your program work
Chapter 12 Data structures: arrays and using pre-release
material
12.1 Introduction
12.2 Arrays
12.3 Using pre-release material
Chapter 13 Databases
13.1 Introduction
13.2 What are databases used for?
13.3 The structure of a database
13.4 Practical use of a database
Зависть меня берет :) Хотел бы я тоже так учиться в свое время.
Писать код который исполняется быстрее за счет знания алгоритмов - это редкая потребность. По крайней мере в Enterprise.
Все же обычно это просто использование готовых коллекций типа
https://docs.oracle.com/javase/tutorial/collections/implementations/index.html
Оттуда же
Там где есть база данных, уже она узкое место, и тут уже другая экспертиза, но по прежнему не обход графов.
Важная мысль в том, что не нужно впрок создавать базу. Быть самоучкой - вот основной навык. Когда понадобиться тогда и алгоритмы в зубы. А то я Кнута в свое время начитался, как-то не сильно он мне помог, в отличие от хороших книг по Java и .NET.
Не спорю. В рамках общего кругозора. Тот же школьного уровня Computer Science дает необходимое представление. Точно не в рамках математического образования которым многие пытаются подменить Computer Science.
Вот здесь пример школьной программы.
https://habr.com/en/post/672814/comments/#comment_24472576
То, что я изучал, в рамках профильного высшего образования по программированию ПК и ЛС, 20 лет назад, моя дочь сейчас изучает в средней школе.
По поводу квадратичной сложности (кода), не уверен что это релевантно академическому образованию. SOLID, KISS, YAGNI и прочее - это культура написания кода, чувство кода. То что достигается только тем самым презираемым самоучением:)
Тут вопрос что есть база. Еще 30 лет назад это действительно была все больше математическая и алгоритмическая база. Но сейчас, с проникновением программирования во все сферы жизни, есть системное и есть прикладное программирование.
таненбаум - это системное программирование. Бинарные поиски, сортировки вставками и прочее - это системное программирование. Low level.
Для прикладного же программирования база:
владение фреймворком/продуктом, знание технологического стека (Junor +)
умение работать с любой свалкой кода (Middle +)
понимание прикладной области (Senior +)
Яндекс кончено прекрасен со своими алгоритмами на входе, но возьмите практически любую вакансию по той же Java. И там уже не про знание математики, а про знание конкретных технологий организации кода. High level.
Что есть профильное образование - вопрос крайне открытый.
Для общей картины. 85% оборудования российской нефтедобычи это импорт, полностью или частично. Шлюмберже и Хелибертон (Schlumberger, Halliburton) - это американские компании.
И ваше признание заслуг мировых паразитов, которые только и делают что печатают презренные доллары - вызывает некоторые вопросы.
Для общей картины. 15-20 долларов за баррель в 90-х. В 4-5 раз увеличение нефтяных доходов в 2000-x.
100% задач - это сеньор по уровню, а не математик. И сеньора делает уровень понимания предметной области реального мира, а не уровень математики.
И если в ряде специализаций предметной областью служит математика, это не делает ее базой. Алгоритмы же не являются инструментом, а часть предметной области.
Реляционная алгебра и так неотъемлемая часть дисциплины. Ей не нужно выпячиваться. Многие могут даже не осозновать, что это математика, но прекрасно применять джойны будучи полными "гуманитариями".
Математику можно найти и на крыльях бабочки. Правильный результат выборки это давно уже не уровень специалиста.
В моем примере, на миллионах записях на MS SQL, то во что превращается запрос - это уже физический дизайн всего и вся, то есть железо и атрибуты, где дух Эдгара Кодда пролетает. Он даже вреден там где мы говорим про производительность. И в расследовании всего этого математический архитип убьет себя об стенку. Совсем другие мозги нужны.