beldmit: (Программизм)
[personal profile] beldmit
А почему бы не обучать основам программирования, начиная с SQL?

Записные книжки есть у всех, что такое таблица – более-менее понятно.

Часть обсуждения здесь.
Page 2 of 3 << [1] [2] [3] >>

Date: 2015-04-11 08:52 am (UTC)
From: [identity profile] tat-ti.livejournal.com
Таки цикл почти сразу в руки идет.

Но там "все немножко другое".

Date: 2015-04-11 08:58 am (UTC)
From: [identity profile] tat-ti.livejournal.com
Ой, конечно. А потом получаем программистов, которые считают, что тестирование - это работа тестеров (раз) и тестировать свой код не умеют (два).
Оно должно вбиваться в руки с первых же строчек своего кода. Через голову или через жопу вбиваться - это другой вопрос.

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

Date: 2015-04-11 01:41 pm (UTC)
From: [identity profile] dimas.livejournal.com
Для этих целей тот же Пролог куда интереснее кмк ...

Date: 2015-04-11 04:42 pm (UTC)
From: [identity profile] beldmit.livejournal.com
В Пролог очень высокий порог вхождения.

Date: 2015-04-11 04:43 pm (UTC)
From: [identity profile] beldmit.livejournal.com
То-то я туда лезть боюсь.

Date: 2015-04-11 05:05 pm (UTC)
From: [identity profile] dimas.livejournal.com
Да ладно?

Date: 2015-04-11 05:29 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Для меня он оказался куда выше, чем в SQL :-)

Date: 2015-04-11 05:38 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Тестирование – отдельная отрасль, и учить ей надо отдельно. В конце концов, мышление для тестирования требуется совсем другое.

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

Date: 2015-04-11 05:58 pm (UTC)
From: [identity profile] tasic.livejournal.com
Программированию нужно начинать учить с рисования блок-схем. (И хотя это немножко встречный наброс, но я почти серьезен). Нужно начинать учить с того, что решение любой задачи можно описать как последовательность действий, которые зависят от выполнения или невыполнения условий. Изначально нужно учить разбирать, как правильно решить какую-то задачу. Т.е. вот для решения этой задачи должно быть выполнена следующая последовательность действий. Возможно сначала "крупноблочно", потом спускаясь ниже и детализируя, мы в конце-концов получаем алгоритм, который нам нужно как-то изобразить. Блок-схема, далеко не самый плохой способ описать алгоритм. И только когда у нас все это уже готово, можно переходить к собственно созданию программы. Это правда слабо предполагает ООП, но я бы все равно начинал учить с линейного программирования, а потом переходил к понятиям ООП. Если конечно нужно подготовить программиста, а не кодера, который программирует иконки таская. Все вышесказанное -- очень глубокое IMHO, хотя меня учили программированию несколько иначе, но скорее от незавершенности идеи, как же нужно учить.

Date: 2015-04-11 06:04 pm (UTC)
From: [identity profile] dimas.livejournal.com
Может просто проблема в зашоренности обычным программированием и скулем?

Я просто видел как с прологом знаокомились школьники 8-10 классов, до этого не программировавшие вообще ... особых проблем не было ... но преподаватель должен быть хорошим, факт ...

Date: 2015-04-11 06:30 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Вот-вот. И студент толковым. А SQL мне читали позже Пролога.

Date: 2015-04-11 06:40 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Да не сказал бы. Хотя возможно, я слишком широко понимаю понятие таблицы.

Date: 2015-04-11 06:41 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Все это правильно. Но надо как можно быстрее давать пощупать результат. Блок-схема - не результат.

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

Date: 2015-04-11 06:47 pm (UTC)
From: [identity profile] tat-ti.livejournal.com
Интересно, почему математики учат проверять полученный ответ, физики тоже намекают, что физичность ответа надо бы соотносить с реальностью, и только программисты на вопрос "работает?" отвечают "мамой клянусь".

Date: 2015-04-11 07:00 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Потому, что ты берешь идеальных математиков и физиков и реальных программистов :-)

Date: 2015-04-11 07:08 pm (UTC)
From: [identity profile] tat-ti.livejournal.com
Да ладно, неужели на контрольной все просто так сдают свое решение, даже не подставляя в условие? И когда решают задавальник, то с ответом не сверяются? Это не вопрос идеальности, это вопрос выживания.

Date: 2015-04-11 07:12 pm (UTC)
From: [identity profile] beldmit.livejournal.com
1. Не все подставляют.
2. Сверка с ответом – примерно эквивалент проверки того, что на правильных данных все работает.

Date: 2015-04-11 07:18 pm (UTC)
From: [identity profile] tat-ti.livejournal.com
п.1 не укладывается в голове.

Date: 2015-04-11 07:20 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Ну как ты подставишь какой-нибудь заковыристый синус в тригонометрическое уравнение? И всегда ли на контрольной есть время?

Date: 2015-04-11 07:21 pm (UTC)
From: [identity profile] beldmit.livejournal.com
На прикольные сейчас и имеющие выход на осмысленные в будущем.

Date: 2015-04-11 08:21 pm (UTC)
From: [identity profile] besm6.livejournal.com
Я попробую пояснить. SQL - это, на самом деле линеаризованная в текст, причем далеко не самым удачным образом, довольно простая, но алгебраическая конструкция. В "алгебраическая" в данном случае существенна возможность неограниченного усложения выражения, составленного из простых элементов. Ситуация, очень удобная для вычислений с помощью компьютера (малыми усилиями по программированию можно обработать сложную задачу), но с большим трудом воспринимаемая человеческим мозгом (поэтому оказывается сложно выразить реально стоящую задачу в терминах этой модели).

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

Человек же, воспринимая таблицу, воспринимает только одну таблицу за раз. Отфильтровать строки (WHERE) и столбцы (список полей в SELECT), отсортировать по указанному критерию - это достаточно просто и понятно, хотя синтаксис уже представляется корявым (а в случае не вполне тривиального принципа сортировки - уже и невменяемым). А с первым JOIN - все, суши весла. На модель таблицы JOIN не ложится от слова "никак", потому что декартово произведение двух отношений, подмножество которого выдает JOIN - это уже не два, а три измерения (не четыре - наборы столбцов довольно естественно воспринимаются как одно измерение). А трехмерная таблица в человеческом восприятии с двумерной и рядом не лежала.

Date: 2015-04-11 11:10 pm (UTC)
From: [identity profile] oboguev.livejournal.com
Смысл в том, что в стародавние времена вряд ли кому-нибудь пришло в голову утверждать, что "обучение программированию нужно начинать с stdio". Винтовка рождает спрос (кроме четверга, когда потребности в мясе нет).
Edited Date: 2015-04-11 11:12 pm (UTC)

Date: 2015-04-13 08:30 am (UTC)
From: [identity profile] beldmit.livejournal.com
Я не очень понял, что Вы имеете в виду, приводя такую аналогию. То, что я понял, Вашему утверждению противоречит - очень многие обучалки начинаются с "Hello, world".

Date: 2015-04-13 08:31 am (UTC)
From: [identity profile] beldmit.livejournal.com
Я воспринимаю JOIN как отсылку к внешнему справочнику. Который тоже таблица.

Date: 2015-04-13 10:58 am (UTC)
From: [identity profile] besm6.livejournal.com
Отсылка к внешнему справочнику - это subselect. А join - это гораздо более толстый мех, и синтаксис у него существенно страшнее.
Page 2 of 3 << [1] [2] [3] >>

Profile

beldmit: (Default)
Dmitry Belyavskiy

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122 2324252627
28 29 3031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 10th, 2026 04:08 am
Powered by Dreamwidth Studios