LINUX.ORG.RU

История изменений

Исправление 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. Но кому в итоге будет проще в работе — тому, кто умеет только кое-как комбинировать и использовать готовые кирпичики, или тому, кто понимает, как эта встроенная магия устроена внутри — и может не только строить из готового, но и обжигать свои собственные кирпичики? Тому, кто полагается на набор заученных действий или тому, кто понимает, что делает — понимает, какими способами можно вообще организовывать вычислительные процессы и какой способ лучше подходит для данного конкретного случая?

это это все к базе имеет мало отношения

Бездумное дёрганье готовых методов — да, к базе имеет крайне мало отношения %)