Python
Программисты, вы когда нибудь использовали "блок схему", при составленнии кода в крупных и не крупных проектах?
Учусь в айти классе, с 7 класса у нас в расписании появился урок "программирование на языке Pythone", а я чтоб вы понимали я с 12 лет увлекаюсь программированием, правда пока что на любительском уровне но что то знаю. И вот когда я шёл на первый урок программирования я думал типа "так ну за 45 минут списки мы скорее всего не успеем пройти, но вот if, for, while должны. что там такого объяснять... а списки оставим и на следующий урок наверное. Ну или же возможно и за этот урок успеем" Но нихера, просто чтоб вы понимали тему if нам объясняли 4 УРОКА. И при чём обьясняли таким образом что вообще никто ничего не понимал и даже я, еслиб не изучал программирование ранее, зная себя из такого объяснения так же учился бы на 2 по программированию, потому-что реально нихрена не понятно. И вместо того чтоб нормально объяснить семиклассникам что это такое за один урок (да я могу это объяснить самостоятельно за один урок если надо будет), он начал объяснять всё это на примере блок схемы, начал что то про разветвляющие алгоритмы втирать... Вот я прочитал огромную книгу по питону, читаю огромную книгу по си++, просмотрел пару уроков на ютубе и ни разу. Ни разу я не видел чтобы хоть какой то автор употреблял там блок схемы или раскалывал про "типы алгоритмов". Для тех кто хочет написать "ну так детям будет проще визуализировать, им так понятней". Нихрена. Я когда там сидел я осознавал, что не изучав бы я программирование ранее, не зная что такое if, я бы реальное ничего бы не понял. Я пытался на время забыть что такое if, чтоб на уроке послушать и понять из обьянения, но нихрена. С таких уроков я уходил вообще ни чего не поняв. И вообще из нашего класса только я и мой одноклассник который так же раньше изучал программирование, имеют 4. Остальные 3, 3, 2, 3, 2, 2, 2... И дело не в том что учитель плохо обьясняет (хотя в этом тоже есть проблема), а в самой тупорылой программе, которую ему дают свыше в которой сказано вместо того чтоб сразу обьяснить "if это команда сравнивающая и определяющая какая из переменных больше и тд.." (знаю, это не совсем правильное обьяснение, это был если что пример), надо семиклассникам, новичкам в программировании (речь не идёт о студентах, которым возможно это надо знать так как они уже хоть что то знают и им это объясняют просто чтоб знали), объяснять элементарную тему, за 4 урока чтоб никто не понял. Он даже не начал расказывать как это устроенно из нутри, он 2 урока рассказывал про блок схемы, которые вообще не понятно где нужны. Не я далеко не професионал по програмированию, я скорее любитель и вот по этому спрашиваю у професионалов в программировании вам они хоть раз в жизни пригождалась в каких то проектов по програмированию?
Никогда не использовал.
Для сложных проектов используют современные языки и методологии разработки вроде UML. Но вы, ребятки, если бы стали изучать такое, вам бы точно небо с овчинку показалось.
Ну и вас пытаются научить программировать, а не питона душить. Что является задачей с академической точки зрения хоть и благородной, но, как видишь - не в коня корм. Поэтому вы и тупите. Ваши убитые тиктоком мозги уже неспособны воспринимать абстракции вне конкретного их приложения, и все эти понятия "алгоритмов ветвления" и "циклических алгоритмов" (кстати, в программировании по сути больше ничего и нет - на этих двух алгоритмах основано абсолютно все) вы воспринять не в состоянии принципиально.
Нужен ли весь этот академизм в школьной программе - я ХЗ, если честно. По-моему, это дань советским временам, когда изучение любого предмета было пропитано академизмом чуть более чем полностью. Научный коммунизм (да-да, даже философские концепции обязаны были быть академичными, хотя бы с виду) и вот это вот все. Как по мне, информатика вообще должна быть предметом по выбору: не каждому оно дано и не каждому оно туда надо.
Для сложных проектов используют современные языки и методологии разработки вроде UML. Но вы, ребятки, если бы стали изучать такое, вам бы точно небо с овчинку показалось.
Ну и вас пытаются научить программировать, а не питона душить. Что является задачей с академической точки зрения хоть и благородной, но, как видишь - не в коня корм. Поэтому вы и тупите. Ваши убитые тиктоком мозги уже неспособны воспринимать абстракции вне конкретного их приложения, и все эти понятия "алгоритмов ветвления" и "циклических алгоритмов" (кстати, в программировании по сути больше ничего и нет - на этих двух алгоритмах основано абсолютно все) вы воспринять не в состоянии принципиально.
Нужен ли весь этот академизм в школьной программе - я ХЗ, если честно. По-моему, это дань советским временам, когда изучение любого предмета было пропитано академизмом чуть более чем полностью. Научный коммунизм (да-да, даже философские концепции обязаны были быть академичными, хотя бы с виду) и вот это вот все. Как по мне, информатика вообще должна быть предметом по выбору: не каждому оно дано и не каждому оно туда надо.
Ответ отрицательный. Лишняя работа. Псевдокод (это, если "на коленке" надо) - проще, понятнее, компактнее.
БС могут для документации использовать, но разработчикам с их заказчиками явно не повезло
БС могут для документации использовать, но разработчикам с их заказчиками явно не повезло
«В свое время предложенные Голдстайном и Нейманом маленькие квадратики на блок-схемах вместе со своим содержанием выступали в качестве языков высокого уровня, объединяя абсолютно непонятные операторы машинного языка в группы, имеющие определенный смысл. Как давно уже указал Айверсон, в систематическом языке высокого уровня такая группировка уже осуществлена, так что каждый квадратик просто соответствует оператору. Когда стандарты организации требуют блок-схем, то почти неизменно они рисуются после. Апостол Петр так говорил о новообращенных язычниках и иудейских законах: "Что же вы желаете возложить на выи (их) иго, которого не могли понести ни отцы наши, ни мы?" (Деяние 15, 10). Я хотел бы сказать то же самое о начинающих программистах и устаревшей практике использования блок-схем.»
Фредерик П. Брукс, "Мифический человеко-месяц". 1975 г.( !)
«flowchart (блок-схема) - древний способ представления структуры программы. Чтение блок-схемы ничуть не легче чтения самой программы. Блок-схемы затемняют особенности поведения программ, созданных по правилам структурного программирования, и, что более важно, совсем не раскрывают структуру данных.»
Э.С.Рэймонд
Фредерик П. Брукс, "Мифический человеко-месяц". 1975 г.( !)
«flowchart (блок-схема) - древний способ представления структуры программы. Чтение блок-схемы ничуть не легче чтения самой программы. Блок-схемы затемняют особенности поведения программ, созданных по правилам структурного программирования, и, что более важно, совсем не раскрывают структуру данных.»
Э.С.Рэймонд
Для учебных задач.
Для себя рисовать нет смысла, так как лишь бы коряво. В больших проектах большие схемы есть, но не так подробно, как иногда требуют для учебы.
А так только сегодня сказал чел. поглядеть https://drakon.su/
там просто принцип, что вниз надо ДА, правее НЕТ, чтобы схемы читались легче. Поглядите на этом принципе даже схемы не для программирования применяют.
Рисовать это надо только для кого-то, для себя все понятно из кода. Вот связь между модулями, функциями и тд, вот это бывает и со схемой не понять :)
Скорее препод...ой, учитель, пытается дать сразу всё, а это не самый эффективный способ, проще дать обычный овал-начало прямоугольник-действие овал-конец и заставить простые рисовать, так понемногу вводить и поймут.
if, for, while — за 45 минут не дают :) тут во многих книгах не сказан правильно даже порядок в котором надо проверять те или иные аргументы...хотя что я, может сложно. Короче, что ценное, то вы в кармане и проверите, а оторвалась ли пуговица в последнюю очередь, так и в алгоритме и в сложных условиях в IF надо. Короче, вроде просто, но тонкости всегда есть, а цель учителя рассказать программу.
Для себя рисовать нет смысла, так как лишь бы коряво. В больших проектах большие схемы есть, но не так подробно, как иногда требуют для учебы.
А так только сегодня сказал чел. поглядеть https://drakon.su/
там просто принцип, что вниз надо ДА, правее НЕТ, чтобы схемы читались легче. Поглядите на этом принципе даже схемы не для программирования применяют.
Рисовать это надо только для кого-то, для себя все понятно из кода. Вот связь между модулями, функциями и тд, вот это бывает и со схемой не понять :)
Скорее препод...ой, учитель, пытается дать сразу всё, а это не самый эффективный способ, проще дать обычный овал-начало прямоугольник-действие овал-конец и заставить простые рисовать, так понемногу вводить и поймут.
if, for, while — за 45 минут не дают :) тут во многих книгах не сказан правильно даже порядок в котором надо проверять те или иные аргументы...хотя что я, может сложно. Короче, что ценное, то вы в кармане и проверите, а оторвалась ли пуговица в последнюю очередь, так и в алгоритме и в сложных условиях в IF надо. Короче, вроде просто, но тонкости всегда есть, а цель учителя рассказать программу.
Добавить к тому, что выше почти ничего не могу, т.к. абсолютно согласен.
Н-р. попробуйте изобразить школьными блок-схемами работу многопоточного приложения. Комментарии в коде в разумном виде, нормальная документация к проекту и диаграммы взаимодействия рулят.
Но хочу отметить моменты:
"да я могу это объяснить самостоятельно за один урок если надо будет"
Попробуйте. Особенно всему классу =) Можете даже с учителем договориться (без шуток) - думаю ему в кайф будет 45 минут отдыхать. И чтобы ученики поняли и сделали практические задачи. Результаты, я думаю, Вас удивят. В т.ч. есть нюансы. Вообще если Вы думаете, что учить людей просто - ну.. оглянитесь вокруг для начала. Большинство существующих проблем - это образование и несоответствие (в т.ч. нехватка) специалистов. Учителей кст в первую очередь.
"С таких уроков я уходил вообще ни чего не поняв."
Это настораживает.
"Он даже не начал расказывать как это устроенно из нутри,"
А Вы знаете как оно вообще? Как Ваш код выполняется в Питоне, как н-р устроены списки, что за ними стоит? Или н-р что современный процессор может исполнять команды не в той последовательности, что написал программист, даже используя ассемблер. Глубина она разная. И не всегда к месту.
"...или раскалывал про "типы алгоритмов"
Вы сейчас на уровне технаря мыслите. Ну т.е. кодера. Технически можете какие-то задания переводить в код. Столкнётесь с более серьезными задачами - думаю поймете о чем я. К чему я это - Вы не с той стороны зашли. Ну или не только с одной стоило заходить. Почитайте _ТЕОРИЮ_. Алгоритмы и всё такое. Вирта н-р. Без теории можете остаться на уровне быдло-кодера. Ну т.е. по аналогии - англ. язык могут выучить почти все адекватные люди, но прилично писать могут далеко не все, а талантливо и того меньше. И тут без теории никак. Ну или быть гением =)
Вместо послесловия: в институте у нас был преподаватель, который линейкой измерял стороны в блок-схемах и проверял пропорции. Если там были недочёты - он даже код не смотрел. Без комментариев, как говорится. К слову я моментально попросил перевестись на другой поток и даже получилось договориться.
Н-р. попробуйте изобразить школьными блок-схемами работу многопоточного приложения. Комментарии в коде в разумном виде, нормальная документация к проекту и диаграммы взаимодействия рулят.
Но хочу отметить моменты:
"да я могу это объяснить самостоятельно за один урок если надо будет"
Попробуйте. Особенно всему классу =) Можете даже с учителем договориться (без шуток) - думаю ему в кайф будет 45 минут отдыхать. И чтобы ученики поняли и сделали практические задачи. Результаты, я думаю, Вас удивят. В т.ч. есть нюансы. Вообще если Вы думаете, что учить людей просто - ну.. оглянитесь вокруг для начала. Большинство существующих проблем - это образование и несоответствие (в т.ч. нехватка) специалистов. Учителей кст в первую очередь.
"С таких уроков я уходил вообще ни чего не поняв."
Это настораживает.
"Он даже не начал расказывать как это устроенно из нутри,"
А Вы знаете как оно вообще? Как Ваш код выполняется в Питоне, как н-р устроены списки, что за ними стоит? Или н-р что современный процессор может исполнять команды не в той последовательности, что написал программист, даже используя ассемблер. Глубина она разная. И не всегда к месту.
"...или раскалывал про "типы алгоритмов"
Вы сейчас на уровне технаря мыслите. Ну т.е. кодера. Технически можете какие-то задания переводить в код. Столкнётесь с более серьезными задачами - думаю поймете о чем я. К чему я это - Вы не с той стороны зашли. Ну или не только с одной стоило заходить. Почитайте _ТЕОРИЮ_. Алгоритмы и всё такое. Вирта н-р. Без теории можете остаться на уровне быдло-кодера. Ну т.е. по аналогии - англ. язык могут выучить почти все адекватные люди, но прилично писать могут далеко не все, а талантливо и того меньше. И тут без теории никак. Ну или быть гением =)
Вместо послесловия: в институте у нас был преподаватель, который линейкой измерял стороны в блок-схемах и проверял пропорции. Если там были недочёты - он даже код не смотрел. Без комментариев, как говорится. К слову я моментально попросил перевестись на другой поток и даже получилось договориться.
Нечто типа блок схем использовал частенько
мне удобнее сначала алгоритм на бумажке накидать, показывая его ветви и переходы, и только потом его кодом записывать
когда в проге десяток ветвей исполнения с полусотней блоков данных кидаемых между ними без схемы легко упустить часть веток
___
Ну и документацию потом по госту со всеми блок-схемами доводилось делать -- проще получается если схемы заранее нарисованы
мне удобнее сначала алгоритм на бумажке накидать, показывая его ветви и переходы, и только потом его кодом записывать
когда в проге десяток ветвей исполнения с полусотней блоков данных кидаемых между ними без схемы легко упустить часть веток
___
Ну и документацию потом по госту со всеми блок-схемами доводилось делать -- проще получается если схемы заранее нарисованы
tl;dr
нет, не использовал
нет, не использовал
Нет, вместо блок-схем в реальных проектах активно используются схемы UML, которые отражают более высокоуровневые абстракции, чем блок-схемы. Активно ипользуются диаграммы классов (генерируются автоматически, той же визуал студией), диаграммы состояний и диаграммы последовательностей, особенно при документировании
Я блок-схемами не пользуюсь. Мне они не заходят. В тех случаях, когда необходимо, составляю схемки с кружочками, стрелочками, квадратиками и т.д., так как мне удобно, чтобы визуализировать идею алгоритма. Это помогает перевести идею алгоритма в код.
Похожие вопросы
- Дано двузначное число. Определить: кратна ли сумма его цифр числу а. Написать блок-схему.
- В чём действительно хорош Python? Не для учёбы или посмотреть на нейросети, а действительно хорошие крупные проекты.
- Дан список чисел. Нужно посчитать количество их "пар" (т.е. "1 1 1 1 1" = 10, "1 2 3 2 3" = 2 и т.д.) (Python)
- Имитация "записной книжки" на Python (...)
- Опять "записная книжка" на Python. В прошлый раз упустил из виду что index возвращает только первое вхождение, т. е. (+)
- Python задача "Сортировка перестановки"
- С предварительной заменой SQL на обычную запись в файл в эмуляторе "записной книжки" дело движется, только вот (...)
- Можете помочь! Нужен код для Python, что бы он заменял определенный текст в файле
- Помогите чайнику в Питоне. Как правильно перейти на другую строку в коде, чтоб он не запустился раньше времени?
- зачем программисту физика?