История изменений
Исправление Nervous, (текущая версия) :
надо сделать функцию, которая принимает число x и генерирует список из элементов от 0 до x.
Clojure:
(defn integers-up-to [x]
(into [] (range x)))
(integers-up-to 8)
;; => [0 1 2 3 4 5 6 7]
А можно просто использовать значение, которое возвращает вызов (range N)
в выражениях вместо списка.
Если бы в Scheme был range
, всё было бы примерно так же — то есть проще, чем в питоне. Вероятно, он там таки есть. И даже если нет, никто не мешает его предварительно написать. Конечно, это уже не совсем стартовый уровень, но и не рокет саенс, однозначно.
Заодно ученик имеет шанс осознать, что не обязательно писать в каждой новой функции один и тот же код (скажем, для генерации или обхода последовательностей), а можно вынести его в отдельную функцию.
что из этого проще прочитать человеку, который только знакомится с программированием
И то, и то использует кучу незнакомых новичку понятий (выражение, функция, вызов функции и возвращаемое значение, формальные параметры vs аргументы, cписок, метод, побочные эффекты, итерация, рекурсия) и будет вызывать тонну вопросов. Это нормально.
Возможно, легче (на первых порах) будет с питоном, в котором ученику доступно больше встроенной магии типа range
. Но кому в итоге будет проще в работе — тому, кто умеет только кое-как комбинировать и использовать готовые кирпичики, или тому, кто понимает, как эта встроенная магия устроена внутри — и может не только строить из готового, но и обжигать свои собственные кирпичики? Тому, кто полагается на набор заученных действий или тому, кто понимает, что делает — понимает, какими способами можно вообще организовывать вычислительные процессы и какой способ лучше подходит для данного конкретного случая?
это это все к базе имеет мало отношения
Бездумное дёрганье готовых методов — да, к базе имеет крайне мало отношения %) Одним дёрганьем готовых методов понимания не получить.
Исправление Nervous, :
надо сделать функцию, которая принимает число x и генерирует список из элементов от 0 до x.
Clojure:
(defn integers-up-to [x]
(into [] (range x)))
(integers-up-to 8)
;; => [0 1 2 3 4 5 6 7]
А можно просто использовать значение, которое возвращает вызов (range N)
в выражениях вместо списка.
Если бы в Scheme был range
, всё было бы примерно так же — то есть проще, чем в питоне. Вероятно, он там таки есть. И даже если нет, никто не мешает его предварительно написать. Конечно, это уже не совсем стартовый уровень, но и не рокет саенс, однозначно.
Заодно ученик имеет шанс осознать, что не обязательно писать в каждой новой функции один и тот же код (скажем, для генерации или обхода последовательностей), а можно вынести его в отдельную функцию.
что из этого проще прочитать человеку, который только знакомится с программированием
И то, и то использует кучу незнакомых новичку понятий (выражение, функция, вызов функции и возвращаемое значение, формальные параметры vs аргументы, cписок, метод, побочные эффекты, итерация, рекурсия) и будет вызывать тонну вопросов. Это нормально.
Возможно, легче (на первых порах) будет с питоном, в котором ученику доступно больше встроенной магии типа range
. Но кому в итоге будет проще в работе — тому, кто умеет только кое-как комбинировать и использовать готовые кирпичики, или тому, кто понимает, как эта встроенная магия устроена внутри — и может не только строить из готового, но и обжигать свои собственные кирпичики? Тому, кто полагается на набор заученных действий или тому, кто понимает, что делает — понимает, какими способами можно вообще организовывать вычислительные процессы и какой способ лучше подходит для данного конкретного случая?
это это все к базе имеет мало отношения
Бездумное дёрганье готовых методов — да, к базе имеет крайне мало отношения %)
Исправление Nervous, :
надо сделать функцию, которая принимает число x и генерирует список из элементов от 0 до x.
Clojure:
(defn integers-up-to [x]
(into [] (range x)))
(integers-up-to 8)
;; => [0 1 2 3 4 5 6 7]
А можно просто использовать значение, которое возвращает вызов (range N)
в выражениях вместо списка.
Если бы в Scheme был range
, всё было бы примерно так же — то есть проще, чем в питоне. Вероятно, он там таки есть. И даже если нет, никто не мешает его предварительно написать. Конечно, это уже не совсем стартовый уровень, но и не рокет саенс, однозначно.
Заодно ученик имеет шанс осознать, что не обязательно писать в каждой новой функции один и тот же код (скажем, для генерации последовательностей), а можно вынести его в отдельную функцию.
что из этого проще прочитать человеку, который только знакомится с программированием
И то, и то использует кучу незнакомых новичку понятий (выражение, функция, вызов функции и возвращаемое значение, формальные параметры vs аргументы, cписок, метод, побочные эффекты, итерация, рекурсия) и будет вызывать тонну вопросов. Это нормально.
Возможно, легче (на первых порах) будет с питоном, в котором ученику доступно больше встроенной магии типа range
. Но кому в итоге будет проще в работе — тому, кто умеет только кое-как комбинировать и использовать готовые кирпичики, или тому, кто понимает, как эта встроенная магия устроена внутри — и может не только строить из готового, но и обжигать свои собственные кирпичики? Тому, кто полагается на набор заученных действий или тому, кто понимает, что делает — понимает, какими способами можно вообще организовывать вычислительные процессы и какой способ лучше подходит для данного конкретного случая?
это это все к базе имеет мало отношения
Бездумное дёрганье готовых методов — да, к базе имеет крайне мало отношения %)
Исправление Nervous, :
надо сделать функцию, которая принимает число x и генерирует список из элементов от 0 до x.
Clojure:
(defn integers-up-to [x]
(into [] (range x)))
(integers-up-to 8)
;; => [0 1 2 3 4 5 6 7]
А можно просто использовать значение, которое возвращает вызов (range N)
в выражениях вместо списка.
Если бы в Scheme был range
, всё было бы примерно так же — то есть проще, чем в питоне. Вероятно, он там таки есть. И даже если нет, никто не мешает его предварительно написать. Конечно, это уже не совсем стартовый уровень, но и не рокет саенс, однозначно.
что из этого проще прочитать человеку, который только знакомится с программированием
И то, и то использует кучу незнакомых новичку понятий (выражение, функция, вызов функции и возвращаемое значение, формальные параметры vs аргументы, cписок, метод, побочные эффекты, итерация, рекурсия) и будет вызывать тонну вопросов. Это нормально.
Возможно, легче (на первых порах) будет с питоном, в котором ученику доступно больше встроенной магии типа range
. Но кому в итоге будет проще в работе — тому, кто умеет только кое-как комбинировать и использовать готовые кирпичики, или тому, кто понимает, как эта встроенная магия устроена внутри — и может не только строить из готового, но и обжигать свои собственные кирпичики? Тому, кто полагается на набор заученных действий или тому, кто понимает, что делает — понимает, какими способами можно вообще организовывать вычислительные процессы и какой способ лучше подходит для данного конкретного случая?
это это все к базе имеет мало отношения
Бездумное дёрганье готовых методов — да, к базе имеет крайне мало отношения %)
Исправление Nervous, :
надо сделать функцию, которая принимает число x и генерирует список из элементов от 0 до x.
Clojure:
(defn integers-up-to [x]
(into [] (range x)))
(integers-up-to 8)
;; => [0 1 2 3 4 5 6 7]
А можно просто использовать значение, которое возвращает вызов (range N)
в выражениях вместо списка.
Если бы в Scheme был range
, всё было бы примерно так же — то есть проще, чем в питоне. Вероятно, он там таки есть. И даже если нет, никто не мешает его предварительно написать. Конечно, это уже не совсем стартовый уровень —
что из этого проще прочитать человеку, который только знакомится с программированием
И то, и то использует кучу незнакомых новичку понятий (выражение, функция, вызов функции и возвращаемое значение, формальные параметры vs аргументы, cписок, метод, побочные эффекты, итерация, рекурсия) и будет вызывать тонну вопросов. Это нормально.
Возможно, легче (на первых порах) будет с питоном, в котором ученику доступно больше встроенной магии типа range
. Но кому в итоге будет проще в работе — тому, кто умеет только кое-как комбинировать и использовать готовые кирпичики, или тому, кто понимает, как эта встроенная магия устроена внутри — и может не только строить из готового, но и обжигать свои собственные кирпичики? Тому, кто полагается на набор заученных действий или тому, кто понимает, что делает — понимает, какими способами можно вообще организовывать вычислительные процессы и какой способ лучше подходит для данного конкретного случая?
это это все к базе имеет мало отношения
Бездумное дёрганье готовых методов — да, к базе имеет крайне мало отношения %)
Исходная версия Nervous, :
надо сделать функцию, которая принимает число x и генерирует список из элементов от 0 до x.
Clojure:
(defn integers-up-to [x]
(into [] (range x)))
(integers-up-to 8)
;; => [0 1 2 3 4 5 6 7]
А можно просто использовать значение, которое возвращает вызов (range N)
в выражениях вместо списка.
Если бы в Scheme был range
, всё было бы примерно так же — то есть проще, чем в питоне. Вероятно, он там таки есть. И даже если нет, никто не мешает его предварительно написать. Конечно, это уже не совсем стартовый уровень —
что из этого проще прочитать человеку, который только знакомится с программированием
И то, и то использует кучу незнакомых новичку понятий (выражение, функция, вызов функции и возвращаемое значение, формальные параметры vs аргументы, cписок, метод, побочные эффекты, итерация, рекурсия) и будет вызывать тонну вопросов. Это нормально.
Возможно, легче (на первых порах) будет с питоном, в котором ученику доступно больше встроенной магии типа range
. Но кому в итоге будет проще в работе — тому, кто умеет только кое-как комбинировать и использовать готовые кирпичики, или тому, кто понимает, как эта встроенная магия устроена внутри — и может не только строить из готового, но и обжигать свои собственные кирпичики? Тому, кто полагается на набор заученных действий или тому, кто понимает, что делает — понимает, какими способами можно вообще организовывать вычислительные процессы и какой способ лучше подходит для данного конкретного случая?
это это все к базе имеет мало отношения
Бездумное дёрганье готовых методов — да, к базе имеет крайне мало отношения %)