Login
Изучаем программирование – советы
04.05.15 21:12
Предлагаю записывать сюда Ваши рекомендации.
А пока что то типа введения, как оно видится лично мне.
А пока что то типа введения, как оно видится лично мне.
NEW 04.05.15 21:13
in Antwort AlexNek 04.05.15 21:12, Zuletzt geändert 07.05.15 18:47 (AlexNek)
Под программированием подразумевают процесс создания программ и не обязательно только для компьютера. Но нас будут интересовать именно компьютерные программы, где мы будем говорить компьютеру что ему делать. Есть еще и другие способы решения задач но мы не будем отвлекаться на них.
Однако , что бы кому то говорить, что ему делать нужно вначале самому знать, как решить поставленную задачу. В простых случаях решение можно найти самому, в сложных, лучше поискать решения данной задачи и выбрать наиболее подходящее. Нам требуется найти и описать определенный порядок инструкций, определяющий действия исполнителя для достижения нужного нам результата. Желательно его достичь за минимальное количество шагов. Данный порядок действий называют алгоритмом. Для решения одной и той же задачи в каждой конкретной ситуации может быть свой алгоритм. Например, алгоритм приготовления чая может быть следующим:
1. Взять чашку.
2. Положить в чашку требуемое количество сахара
3. Положить в чашку пакетик с чаем.
4. Начать подогрев воды.
5. Ждать пока вода закипит.
6. Залить кипяток в чашку.
7. «Смешать» компоненты.
Казалось бы все понятно, но тем не менее для каждого пункта наберется еще море вопросов. Например для пункта 1. Где лежат чашки? Какого размера чашка нам нужна? Если чашка грязная то где ее помыть? Для пункта 4. Где взять воду? В чем ее подогревать? Сколько нужно воды? Как ее подогреть быстрее всего? Вам нужно будет найти ответы на все вопросы для каждой конкретной ситуации. И фактически для каждого пункта можно написать свой, более подробный алгоритм. При этом, достаточно простая задача для человека превращается в относительно сложный алгоритм для «робота». Однако, как можно заметить, нам требуется произвести определенные действия, в определённой последовательности над определенными предметами. Иногда просто сменив последовательность действий мы можем сделать наш алгоритм более эффективным. Например, начать пункт 4 перед пунктом 1.
Довольно часто, при изучении программирования, этап составления алгоритма считается не важным и проскакивается по верхам. А ведь еще не начав собственно программировать, мы уже столкнулись с проблемами и научились их решать. По крайней мере, надеюсь стало понятно, что решение любой сложной задачи можно разбить на последовательность решений более простых задач, а те в свою очередь разбить на решения еще более простых задач и так до тех пор пока уже не будет иметь смысла дробить задачи на более мелкие. Ведь проще сконцентрироваться на анализе и решении более простой задачи чем сложной. И совсем не беда, если еще неизвестно как решить ту или иную задачу. В конце концов решение найдется. Также не обязательно непременно идти от сложного к простому, рекомендаций на эту тему достаточно много, выбирайте путь который больше всего подходит для конкретной задачи и нравится вам.
Ну ладно алгоритм мы написали, а что дальше? А дальше нужно просто перевести этот алгоритм на язык понятный нашему «роботу». Однако нынешним роботам требуются достаточно примитивные команды, типа поднять манипулятор 1 на 30 см вверх, переместить манипулятор 1 на 20 см влево, закрыть зажим на манипуляторе 1. Перевести наш алгоритм на данный язык будет весьма непросто. Так что желательно либо научить робота исполнять команды более высокого уровня, либо написать программу на каком-то промежуточном языке, который можно было автоматически преобразовать на язык понятный нашему роботу. В большинстве случае выбирают использование некоего промежуточного языка, который будет понятен людям и который можно перевести на язык понятный машине. Язык должен иметь возможность описания данных и описания действий.
Данные могут быть атомарными или неделимыми на более мелкие части (целое число, буква) и составными состоящими из нескольких атомарных данных. Составные данные могут быть в свою очередь фиксированного размера (когда количество данных известно до выполнения программы) и переменного размера, а также они могут состоять как из данных одного типа (только целые числа), так и из комбинации различных типов данных (в том числе и составных).
Весьма желательно иметь представление о том как представлены в вашей машине различные типы данных и какие ограничения они имеют. Например, в тип Byte можно записать числа от 0 до 255. (Интересно, появился ли вопрос почему?)
В некоторых языках используются специальные объекты которые объединяют не только данные но и операции над этими данными. Например в объект «динамический массив» можно добавить данные, удалить данные, найти что то конкретное, отсортировать данные и т.п. Стоит отметить, что конкретный язык только определяет, как описывать объекты, реализации стандартных объектов идут как дополнительные модули.
Действия также можно разбить на основные типы:
- выполнение. Выполнить операцию без каких-либо условий.
- ветвление / развилка. Если некоторое условие на момент выполнения действия правильно (вода нагрелась до 100 С) то выполнить действие1 иначе действие2.
- цикл. Повторяем действие пока выполняется некоторое условие.
- выбор. Выбираем для исполнения некоторое действие согласно текущему состоянию.
Вообще то для построения программы достаточно и первых трех типов действий, но для удобства, каждый язык программирования предоставляет дополнительные типы действий. Часто действия могут объединятся в блоки, которые считаются как бы одним простым действием. Также в многих языках имеются целых три типа различных циклов: для определенного количества раз, с проверкой условия до начала цикла, с проверкой условия после окончания цикла.
Как можно было заметить мы еще ни разу не использовали конкретный язык программирования и совсем неспроста, ведь язык программирования это всего лишь инструмент для постройки программы. Ведь не будете же вы строить дом начав с подробного изучения топора и пилы.
Однако без инструментов и навыков работы с ними также ничего хорошего не получится, даже имея в наличии подробный алгоритм. И остается извечный вопрос с какого языка начать? Увы, но однозначного ответа нет, слишком много определяет конкретная ситуация. Хотя во многих случаях я бы порекомендовал начать с Паскаля. Язык был специально разработан для учебных целей и кроме интернета ничего не понадобится. (1,2,3 – онлайн компиляторы, 4 описание стандартного паскаля на английском, описание расширенной версии паскаля на русском)
1. http://pascalabc.net/WDE/
2. https://ideone.com/
3. http://www.tutorialspoint.com/compile_pascal_online.php
4. http://www.tutorialspoint.com/pascal/index.htm
5. http://pascalabc.net/downloads/pabcnethelp/PABC_Help_Web.html
Часто еще рекомендуют С или С++, как одни из часто используемых. «Опасность» эти языков заключается в том, что они имеют несколько больше возможностей, в которых можно достаточно легко запутаться поначалу. Хотя если Вы можете уже без проблем записать алгоритм программы на своем родном языке, перевести этот алгоритм на конкретный язык программирования не составит большого труда.
Для примера сделаем простейшую программу сложения чисел и проверки результата
Псевдокод:
Ввести число А
Ввести число Б
Записать сумму А+Б в С
Если С больше 10 То вывести текст «Результат >10»
Текст программы:
Однако , что бы кому то говорить, что ему делать нужно вначале самому знать, как решить поставленную задачу. В простых случаях решение можно найти самому, в сложных, лучше поискать решения данной задачи и выбрать наиболее подходящее. Нам требуется найти и описать определенный порядок инструкций, определяющий действия исполнителя для достижения нужного нам результата. Желательно его достичь за минимальное количество шагов. Данный порядок действий называют алгоритмом. Для решения одной и той же задачи в каждой конкретной ситуации может быть свой алгоритм. Например, алгоритм приготовления чая может быть следующим:
1. Взять чашку.
2. Положить в чашку требуемое количество сахара
3. Положить в чашку пакетик с чаем.
4. Начать подогрев воды.
5. Ждать пока вода закипит.
6. Залить кипяток в чашку.
7. «Смешать» компоненты.
Казалось бы все понятно, но тем не менее для каждого пункта наберется еще море вопросов. Например для пункта 1. Где лежат чашки? Какого размера чашка нам нужна? Если чашка грязная то где ее помыть? Для пункта 4. Где взять воду? В чем ее подогревать? Сколько нужно воды? Как ее подогреть быстрее всего? Вам нужно будет найти ответы на все вопросы для каждой конкретной ситуации. И фактически для каждого пункта можно написать свой, более подробный алгоритм. При этом, достаточно простая задача для человека превращается в относительно сложный алгоритм для «робота». Однако, как можно заметить, нам требуется произвести определенные действия, в определённой последовательности над определенными предметами. Иногда просто сменив последовательность действий мы можем сделать наш алгоритм более эффективным. Например, начать пункт 4 перед пунктом 1.
Довольно часто, при изучении программирования, этап составления алгоритма считается не важным и проскакивается по верхам. А ведь еще не начав собственно программировать, мы уже столкнулись с проблемами и научились их решать. По крайней мере, надеюсь стало понятно, что решение любой сложной задачи можно разбить на последовательность решений более простых задач, а те в свою очередь разбить на решения еще более простых задач и так до тех пор пока уже не будет иметь смысла дробить задачи на более мелкие. Ведь проще сконцентрироваться на анализе и решении более простой задачи чем сложной. И совсем не беда, если еще неизвестно как решить ту или иную задачу. В конце концов решение найдется. Также не обязательно непременно идти от сложного к простому, рекомендаций на эту тему достаточно много, выбирайте путь который больше всего подходит для конкретной задачи и нравится вам.
Ну ладно алгоритм мы написали, а что дальше? А дальше нужно просто перевести этот алгоритм на язык понятный нашему «роботу». Однако нынешним роботам требуются достаточно примитивные команды, типа поднять манипулятор 1 на 30 см вверх, переместить манипулятор 1 на 20 см влево, закрыть зажим на манипуляторе 1. Перевести наш алгоритм на данный язык будет весьма непросто. Так что желательно либо научить робота исполнять команды более высокого уровня, либо написать программу на каком-то промежуточном языке, который можно было автоматически преобразовать на язык понятный нашему роботу. В большинстве случае выбирают использование некоего промежуточного языка, который будет понятен людям и который можно перевести на язык понятный машине. Язык должен иметь возможность описания данных и описания действий.
Данные могут быть атомарными или неделимыми на более мелкие части (целое число, буква) и составными состоящими из нескольких атомарных данных. Составные данные могут быть в свою очередь фиксированного размера (когда количество данных известно до выполнения программы) и переменного размера, а также они могут состоять как из данных одного типа (только целые числа), так и из комбинации различных типов данных (в том числе и составных).
Весьма желательно иметь представление о том как представлены в вашей машине различные типы данных и какие ограничения они имеют. Например, в тип Byte можно записать числа от 0 до 255. (Интересно, появился ли вопрос почему?)
В некоторых языках используются специальные объекты которые объединяют не только данные но и операции над этими данными. Например в объект «динамический массив» можно добавить данные, удалить данные, найти что то конкретное, отсортировать данные и т.п. Стоит отметить, что конкретный язык только определяет, как описывать объекты, реализации стандартных объектов идут как дополнительные модули.
Действия также можно разбить на основные типы:
- выполнение. Выполнить операцию без каких-либо условий.
- ветвление / развилка. Если некоторое условие на момент выполнения действия правильно (вода нагрелась до 100 С) то выполнить действие1 иначе действие2.
- цикл. Повторяем действие пока выполняется некоторое условие.
- выбор. Выбираем для исполнения некоторое действие согласно текущему состоянию.
Вообще то для построения программы достаточно и первых трех типов действий, но для удобства, каждый язык программирования предоставляет дополнительные типы действий. Часто действия могут объединятся в блоки, которые считаются как бы одним простым действием. Также в многих языках имеются целых три типа различных циклов: для определенного количества раз, с проверкой условия до начала цикла, с проверкой условия после окончания цикла.
Как можно было заметить мы еще ни разу не использовали конкретный язык программирования и совсем неспроста, ведь язык программирования это всего лишь инструмент для постройки программы. Ведь не будете же вы строить дом начав с подробного изучения топора и пилы.
Однако без инструментов и навыков работы с ними также ничего хорошего не получится, даже имея в наличии подробный алгоритм. И остается извечный вопрос с какого языка начать? Увы, но однозначного ответа нет, слишком много определяет конкретная ситуация. Хотя во многих случаях я бы порекомендовал начать с Паскаля. Язык был специально разработан для учебных целей и кроме интернета ничего не понадобится. (1,2,3 – онлайн компиляторы, 4 описание стандартного паскаля на английском, описание расширенной версии паскаля на русском)
1. http://pascalabc.net/WDE/
2. https://ideone.com/
3. http://www.tutorialspoint.com/compile_pascal_online.php
4. http://www.tutorialspoint.com/pascal/index.htm
5. http://pascalabc.net/downloads/pabcnethelp/PABC_Help_Web.html
Часто еще рекомендуют С или С++, как одни из часто используемых. «Опасность» эти языков заключается в том, что они имеют несколько больше возможностей, в которых можно достаточно легко запутаться поначалу. Хотя если Вы можете уже без проблем записать алгоритм программы на своем родном языке, перевести этот алгоритм на конкретный язык программирования не составит большого труда.
Для примера сделаем простейшую программу сложения чисел и проверки результата
Псевдокод:
Ввести число А
Ввести число Б
Записать сумму А+Б в С
Если С больше 10 То вывести текст «Результат >10»
Текст программы:
Program SumSample;
var
a:integer;
b:integer;
c:integer;
begin
Write('Input integer A:');
Readln(a);
Write('Input integer B:');
Readln(b);
c := a + b;
Writeln('Result A+B=',c);
if(c > 10) then begin
Writeln('Result >10');
end;
end.
Давайте разбирайтесь, а я пока пошел готовить кофе.
Успехов!
NEW 05.05.15 18:06
in Antwort AlexNek 04.05.15 21:13, Zuletzt geändert 05.05.15 18:10 (Kras2012)
Алексей, проблема приготовления чая алгоритмически не разрешима
Насчет Паскаля ни в коем случае,
надо начинать с функциональных языков типа LISP или OCaml.
Они лучше всего дисциплинируют мЫшление и учат мыслить структурированно.
С приветом, Шишкин

Насчет Паскаля ни в коем случае,
надо начинать с функциональных языков типа LISP или OCaml.
Они лучше всего дисциплинируют мЫшление и учат мыслить структурированно.
С приветом, Шишкин
NEW 05.05.15 19:00
in Antwort Simple 05.05.15 18:49
Хорошо, заменим LISP на Haskell,
но суть та же самая: язык на основе
Lambda Calculus и по возможности
без side effect' ов.
но суть та же самая: язык на основе
Lambda Calculus и по возможности
без side effect' ов.
NEW 05.05.15 19:05
in Antwort Kras2012 05.05.15 19:00
Слишком круто для новичка. Лучше Scheme и SICP ;)
NEW 05.05.15 20:39
Зато хорошо решается практически и всем известна
Предлагаю тем кому он неизвестен расказать, что делает эта строка
(if (< n 3)1(+ (fi (- n 1)) (fi (- n 2))) )
Я так понимаю вы любите пошутить?
in Antwort Kras2012 05.05.15 18:06, Zuletzt geändert 06.05.15 16:19 (AlexNek)
В ответ на:
Алексей, проблема приготовления чая алгоритмически не разрешима
Алексей, проблема приготовления чая алгоритмически не разрешима
Зато хорошо решается практически и всем известна

В ответ на:
надо начинать с функциональных языков типа LISP
надо начинать с функциональных языков типа LISP
Предлагаю тем кому он неизвестен расказать, что делает эта строка
(if (< n 3)1(+ (fi (- n 1)) (fi (- n 2))) )
Я так понимаю вы любите пошутить?
NEW 06.05.15 03:15
Она растляет умы малолетних, внушая им, что рекурсия по своей СУТИ
безумно неэффективна. Рекурсии лучше всего учить на примере
бинарного поиска. А числа Фибоначи можно (и должно!) программировать
с помощью tail-рекурсии.
in Antwort AlexNek 05.05.15 20:39
In Antwort auf:
что делает эта строка
(if (< n 3)1(+ (fi (- n 1)) (fi (- n 2))) ))
что делает эта строка
(if (< n 3)1(+ (fi (- n 1)) (fi (- n 2))) ))
Она растляет умы малолетних, внушая им, что рекурсия по своей СУТИ
безумно неэффективна. Рекурсии лучше всего учить на примере
бинарного поиска. А числа Фибоначи можно (и должно!) программировать
с помощью tail-рекурсии.
NEW 06.05.15 09:04
Числа Фибоначчи можно (и должно!) программировать вообще без рекурсии.
in Antwort Kras2012 06.05.15 03:15
В ответ на:
А числа Фибоначи можно (и должно!) программировать с помощью tail-рекурсии.
А числа Фибоначи можно (и должно!) программировать с помощью tail-рекурсии.
Числа Фибоначчи можно (и должно!) программировать вообще без рекурсии.
Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
NEW 06.05.15 14:15
выводу сделаны явно не из анализа написанной строки, а токмо с целью защитить любимое детище видимо.
Хотя уж только начало говорит о том, что данный язык не только к обучению нельзя подпускать, но и желательно выслать куда нибудь подальше
"if (< n 3)"
Из декларативного программирования только Лого можно частично использовать для обучения, остальное для фанатов.
А о рекурсии и указателях в начале обучения вообще лучше не упоминать.
in Antwort Kras2012 06.05.15 03:15
В ответ на:
внушая им, что рекурсия
внушая им, что рекурсия
выводу сделаны явно не из анализа написанной строки, а токмо с целью защитить любимое детище видимо.
Хотя уж только начало говорит о том, что данный язык не только к обучению нельзя подпускать, но и желательно выслать куда нибудь подальше
"if (< n 3)"
Из декларативного программирования только Лого можно частично использовать для обучения, остальное для фанатов.
А о рекурсии и указателях в начале обучения вообще лучше не упоминать.
NEW 06.05.15 15:53
Скобка лишняя. Lots of Irritating Single Parentheses начинает и выигрывает :)
in Antwort AlexNek 05.05.15 20:39
В ответ на:
(if (< n 3)1(+ (fi (- n 1)) (fi (- n 2))) ))
(if (< n 3)1(+ (fi (- n 1)) (fi (- n 2))) ))
Скобка лишняя. Lots of Irritating Single Parentheses начинает и выигрывает :)
NEW 06.05.15 16:22
in Antwort MrSanders 06.05.15 15:53
NEW 07.05.15 13:34
in Antwort Simple 05.05.15 19:05
Плюсую SICP, перевод на русский - есть в сети. Для разбирательства с SICP есть специальный модуль в http://racket-lang.org/.
NEW 07.05.15 13:45
in Antwort AlexNek 04.05.15 21:13
Паскаль для обучения - это очень старый миф. Сейчас уж лучше взять питон или что-то подобное, поскольку все эти тонкости о типах и т.п. - только мешают в самом начале, когда человек должен научиться думать, а не бороться с деталями реализации. Недаром в уже существующих языках есть тенденция к автоматическому выводу типов и т.п.
P.S. пример программы, кстати, тут неправильный - в условии говорится про числа (любые), а не про целые числа, так что человек который введет 10.5 в качестве одного из чисел, будет долго разбираться с тем почему у него неправильный ответ. А также долго будет разбираться если попытается сложить числа типа 12345678901 + 234567890123, или посчитать факториал в лоб...
P.S. пример программы, кстати, тут неправильный - в условии говорится про числа (любые), а не про целые числа, так что человек который введет 10.5 в качестве одного из чисел, будет долго разбираться с тем почему у него неправильный ответ. А также долго будет разбираться если попытается сложить числа типа 12345678901 + 234567890123, или посчитать факториал в лоб...
NEW 07.05.15 18:46
Вообще то с представителями нетрадиционной ориентации я не люблю вступать в полемику.
Но было бы интересно узнать что сейчас люди изучают в институтах. Видимо все перешли на лисп и питон.
Приведите правильный для учебных целей.
И гляньте хотя бы в текст программы.
in Antwort AlexOtt 07.05.15 13:45
В ответ на:
Паскаль для обучения - это очень старый миф
Паскаль для обучения - это очень старый миф
Вообще то с представителями нетрадиционной ориентации я не люблю вступать в полемику.
Но было бы интересно узнать что сейчас люди изучают в институтах. Видимо все перешли на лисп и питон.

В ответ на:
пример программы, кстати, тут неправильный
пример программы, кстати, тут неправильный
Приведите правильный для учебных целей.

NEW 07.05.15 19:54
in Antwort AlexNek 07.05.15 18:46
извените, но я сам преподавал и паскаль, и Ц, и фортран, так что знаю про сложности... Питон сейчас активно преподается во многих университетах. А так, я программирую на том, что лучше подходит для задачи - если мне надо построить регрессионную модель, я не буду брать C++, я возьму R, или что-то подобное. Также, я не буду брать Java для embedded платформы, а возьму Ц или специальный язык.
я конечно заглянул в программу - иначе бы не писал. я вижу там объявление a: integer - этого достаточно. При этом, объявление - в одном месте, использование в другом и т.п.
Вот питон (тоже не без изъянов в виде явных типов, но они хотя бы объявляются по месту):
я конечно заглянул в программу - иначе бы не писал. я вижу там объявление a: integer - этого достаточно. При этом, объявление - в одном месте, использование в другом и т.п.
Вот питон (тоже не без изъянов в виде явных типов, но они хотя бы объявляются по месту):
a = float(input("Enter number A: "))
b = float(input("Enter number B: "))
c = a+b
print str(a) + " + " + str(b) + " = " + str(c)
Вот Clojure:
(let [_ (println "Enter A: ")
a (read)
_ (println "Enter B: ")
b (read)]
(println a "+" b "=" (+ a b)))
Enter A:
1
Enter B:
2
1 + 2 = 3
Enter A:
1.0
Enter B:
2.5
1.0 + 2.5 = 3.5
P.S. а на SICP все-таки посмотрите - он именно учебник программирования, а не учебник лиспа
NEW 07.05.15 20:56
Справедливо говоришь. Вот уж, действительно, "from your lips to God's ears".
in Antwort AlexOtt 07.05.15 13:45, Zuletzt geändert 07.05.15 20:59 (Kras2012)
In Antwort auf:
Паскаль для обучения - это очень старый миф. Сейчас уж лучше взять питон или что-то подобное, поскольку все эти тонкости о типах и т.п. - только мешают в самом начале, когда человек должен научиться думать, а не бороться с деталями реализации.
Паскаль для обучения - это очень старый миф. Сейчас уж лучше взять питон или что-то подобное, поскольку все эти тонкости о типах и т.п. - только мешают в самом начале, когда человек должен научиться думать, а не бороться с деталями реализации.
Справедливо говоришь. Вот уж, действительно, "from your lips to God's ears".
NEW 08.05.15 10:37
in Antwort Kras2012 07.05.15 20:56
"from your lips to God's ears".
------
Еще бы физику вспомнить...
ну там что-то про скорость распространения звука в вакууме...

------
Еще бы физику вспомнить...
ну там что-то про скорость распространения звука в вакууме...

NEW 08.05.15 23:11
Питон да, изучали. Правда как 3-й язык, но потом очень много на нем программировали. Кстати, присоединяюсь к предыдущему оратору: этот язык очень даже неплох для начинающих.
Я до сих пор его использую для быстрой реализации небольших по объему задач, например, парсить или быстро протестировать чего-нить.
in Antwort AlexNek 07.05.15 18:46
В ответ на:
Но было бы интересно узнать что сейчас люди изучают в институтах. Видимо все перешли на лисп и питон.
Но было бы интересно узнать что сейчас люди изучают в институтах. Видимо все перешли на лисп и питон.
Питон да, изучали. Правда как 3-й язык, но потом очень много на нем программировали. Кстати, присоединяюсь к предыдущему оратору: этот язык очень даже неплох для начинающих.
Я до сих пор его использую для быстрой реализации небольших по объему задач, например, парсить или быстро протестировать чего-нить.
NEW 16.05.15 19:48
in Antwort AlexNek 04.05.15 21:12
Совет: Первое правило программиста - меньше программировать.
Google→копировать→вставить
Google→копировать→вставить

Germany.ru Boot CD v1.0 поможет :)
NEW 18.05.15 13:16
больше думать и учиться (если конечно хочется быть программистом, а не кодирующей обезьянкой на копеечной зарплате)
in Antwort schweps2 16.05.15 19:48
В ответ на:
Совет: Первое правило программиста - меньше программировать.
Google→копировать→вставить
Совет: Первое правило программиста - меньше программировать.
больше думать и учиться (если конечно хочется быть программистом, а не кодирующей обезьянкой на копеечной зарплате)
NEW 18.05.15 13:53
in Antwort AlexOtt 18.05.15 13:16
Так получается по-твоему Java, C++ и прочие разработчики, использующие готовые библиотеки и паттерны, - это кодирующие обезьяны на копеечной зарплате. Ну ты мне прям глаза раскрыл, камарад. 



Germany.ru Boot CD v1.0 поможет :)
NEW 18.05.15 15:54
in Antwort schweps2 18.05.15 13:53
те, которые копи-пастят - да. Использование библиотек и паттернов само по себе ни плохо, ни хорошо, но вот когда люди бездумно копируют куски кода из разных мест, а потом воюют с dependency hell и прочими проблемами - тогда это ой.
NEW 19.05.15 21:00
Я сразу вспоминаю объявление:
Паралимпиада по программированию. Приглашаются программисты на 1C, PHP и VBA.

in Antwort AlexNek 05.05.15 20:39
В ответ на:
Предлагаю тем кому он неизвестен расказать, что делает эта строка
(if (< n 3)1(+ (fi (- n 1)) (fi (- n 2))) )
Я так понимаю вы любите пошутить?
Предлагаю тем кому он неизвестен расказать, что делает эта строка
(if (< n 3)1(+ (fi (- n 1)) (fi (- n 2))) )
Я так понимаю вы любите пошутить?
Я сразу вспоминаю объявление:
Паралимпиада по программированию. Приглашаются программисты на 1C, PHP и VBA.

NEW 20.05.15 14:11
in Antwort AlexNek 04.05.15 21:13
Насчет с какого языка начать ... С точки зрения ученика лучше с явы или чего-нибудь несложного и практически применимого. И чтобы результат видно было. Понятно, что ява для начала не очень, но в ней практическая польза. Людям хочется учить то, что им через некоторое время позволит сказать: я это умею и это мне принесет большую зарплату
У нас один профессор структуры данных и алгоритмы пытался объяснить на паскале (не объясняя самого паскаля). Это при том, что дети еще яву не выучили. И перспектива изучения паскаля никого не радовала, потому что пользы в этом никто не видел.


NEW 25.05.15 21:01
in Antwort svnv 19.05.15 21:00
Вот ты смеешься, а у меня скоро новый проект: говнокопание в Access VBA. И ведь никак было не отказаться ;)
NEW 25.05.15 21:02
in Antwort Juleeta 20.05.15 14:11
Было бы что изучать. Да и не нужен какой-то конкретный язык программирования для изучения алгоритмов, см. Кормена ;)
NEW 25.05.15 22:17
in Antwort AlexNek 04.05.15 21:13
это уже первая глава книги *Изучаем программирование*? :-)
я так и не понял, в каком месте требуются советы.
какая целевая аудитория у этого *учебника*?
я так и не понял, в каком месте требуются советы.
какая целевая аудитория у этого *учебника*?
NEW 25.05.15 22:20
in Antwort AlexNek 04.05.15 21:13
языки для изучения программирования с нуля: я бы брал JаvаSсriрt или C#
NEW 25.05.15 22:30
Вообще то хотелось что бы каждый написал, что то полезное для начинающих.
А получилось совсем наоборот.
in Antwort Tomasson 25.05.15 22:17
В ответ на:
я так и не понял, в каком месте требуются советы.
я так и не понял, в каком месте требуются советы.
Вообще то хотелось что бы каждый написал, что то полезное для начинающих.
А получилось совсем наоборот.

NEW 25.05.15 22:42
in Antwort AlexNek 25.05.15 22:30, Zuletzt geändert 25.05.15 22:42 (Tomasson)
смотря, какая целевая аудитория.
-- дети
-- студенты
-- индустри-лёйте, которые хотят попрограммировать что-то
разный подход иконтент содержание.
-- дети
-- студенты
-- индустри-лёйте, которые хотят попрограммировать что-то
разный подход и
NEW 25.05.15 23:22
in Antwort Tomasson 25.05.15 22:42
ну по идее здесь студенты обитают. Иногда родители детишек забегают.
Но не думаю что здесь можно как то точно обозначить круг. Все кому интересно и считает что ему нужно.
Но не думаю что здесь можно как то точно обозначить круг. Все кому интересно и считает что ему нужно.
NEW 25.05.15 23:40
in Antwort AlexNek 25.05.15 23:22
Попались интересные цитаты из популярных книг
-Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
-Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям.
-Проектирование объектно-ориентированных программ — нелегкое дело, а если их нужно использовать повторно, то все становится еще сложнее.
-Умение писать код — тяжелая работа. Она не ограничивается знанием паттернов и принципов. Над кодом необходимо попотеть.
-Лучший способ в чем-то разобраться до конца — это попробовать научить этому компьютер.
-Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
-Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям.
-Проектирование объектно-ориентированных программ — нелегкое дело, а если их нужно использовать повторно, то все становится еще сложнее.
-Умение писать код — тяжелая работа. Она не ограничивается знанием паттернов и принципов. Над кодом необходимо попотеть.
-Лучший способ в чем-то разобраться до конца — это попробовать научить этому компьютер.
NEW 29.05.15 09:32
in Antwort Simple 27.05.15 22:48
В яваскрипте очень много интересных концепций, кстати. Просто большинство тех, кто его использует, плохо его выучили. Или вообще не учили.
NEW 29.05.15 10:03
in Antwort natuerlich blond 29.05.15 09:32
Мы тут о ЯП для обучения программированию.
NEW 29.05.15 10:21
in Antwort natuerlich blond 29.05.15 09:32
Или вообще не учили.
-----
Эээ... Тут днями попалось обьявление об вакансии.
Среди прочего:
- <MS SQL> сервер - <TSQL>, навыки проектирования высокопризводительных баз, навыки оптимизации имеющихся баз, построение индексов, написание процедур.
...
- ЖабаСкрипт.
...
А ты хочешь что бы еще чего то и учили.

-----
Эээ... Тут днями попалось обьявление об вакансии.
Среди прочего:
- <MS SQL> сервер - <TSQL>, навыки проектирования высокопризводительных баз, навыки оптимизации имеющихся баз, построение индексов, написание процедур.
...
- ЖабаСкрипт.
...
А ты хочешь что бы еще чего то и учили.

NEW 29.05.15 10:48
in Antwort Murr 29.05.15 10:21
Вот именно, что явускрипт рассматривают часто как дополнение к чему-то другому.
NEW 29.05.15 20:46
in Antwort natuerlich blond 29.05.15 09:32
авторы яваскрипта что-то слышали про интересные концепции, но так их не поняли - иначе откуда такой цирк с преобразованиями типов, сравнениями и т.п. Если бы это был отличный язык, то кучи проектов по созданию языков типа Dart, Type- -, etc. просто бы не возникли... Сейчас JS больше превращается в платформу, в которую компилируют другие языки.
NEW 30.05.15 16:15
in Antwort natuerlich blond 29.05.15 10:48
Скорее, наоборот. У нас, например, проект пару лет назад перевели с jsp на AngularJS, backend остался придатком со своими REST-сервисами.
NEW 30.05.15 23:34
Добавляя к прелестям яваскрипта вроде зависимости от платформы (тут функция есть, тут нет, а если вы на IE10 запустите скомпилированное под IE но 9...) еще и свои баги. Попробовали мы несколько проектов на GWT сделать. Баги ловить - непередаваемые очучения.
Я, собственно, спросить хотел - а что, кроме гугловского GWT есть еще что-то транслирующее нормальный язык в JS?
P.S. При мегабайтных современный JS библиотеках пора назад на апплеты переползать...
in Antwort AlexOtt 29.05.15 20:46
В ответ на:
Сейчас JS больше превращается в платформу, в которую компилируют другие языки
Сейчас JS больше превращается в платформу, в которую компилируют другие языки
Добавляя к прелестям яваскрипта вроде зависимости от платформы (тут функция есть, тут нет, а если вы на IE10 запустите скомпилированное под IE но 9...) еще и свои баги. Попробовали мы несколько проектов на GWT сделать. Баги ловить - непередаваемые очучения.
Я, собственно, спросить хотел - а что, кроме гугловского GWT есть еще что-то транслирующее нормальный язык в JS?
P.S. При мегабайтных современный JS библиотеках пора назад на апплеты переползать...
NEW 31.05.15 13:05
in Antwort MrSanders 30.05.15 23:34, Zuletzt geändert 31.05.15 16:49 (AlexOtt)
ClojureS, TypeS, CoffeeS, Dart, Scala2Js, ... У многих этих языков есть одно преимущество - возможность проведения глубоких оптимизаций на этапе компиляции, что позволяет уменьшить размер кода, увеличить скорость и т.д. Я помню что было несколько примеров когда код на ClojureS был на 10-20% быстрее чем написанный вручную на JS опытным разработчиком.
На ClojureS, например, написан редактор/IDE http://lighttable.com/, который позволяет интерактивно разрабатывать программы на разных языках - посмотрите короткое видео на странице редактора.
P.S. вместо S подставить слово Скрипт (по английски) почему-то при постинге оно заменяется на --
На ClojureS, например, написан редактор/IDE http://lighttable.com/, который позволяет интерактивно разрабатывать программы на разных языках - посмотрите короткое видео на странице редактора.
P.S. вместо S подставить слово Скрипт (по английски) почему-то при постинге оно заменяется на --
NEW 01.06.15 10:51
и правильно сделали. значит, ваша фирма не ищет людей так, как Мурр цитировал.
in Antwort Simple 30.05.15 16:15
В ответ на:
Скорее, наоборот. У нас, например, проект пару лет назад перевели с jsp на AngularJS, backend остался придатком со своими REST-сервисами.
Скорее, наоборот. У нас, например, проект пару лет назад перевели с jsp на AngularJS, backend остался придатком со своими REST-сервисами.
и правильно сделали. значит, ваша фирма не ищет людей так, как Мурр цитировал.
NEW 01.06.15 11:12
так вроде бы авторы создали явускрипт за неделю
но мне кажется, что главная проблема в том, что многие перед применением этого языка не особо пытаются его изучить.
in Antwort AlexOtt 29.05.15 20:46
В ответ на:
авторы яваскрипта что-то слышали про интересные концепции, но так их не поняли - иначе откуда такой цирк с преобразованиями типов, сравнениями и т.п.
авторы яваскрипта что-то слышали про интересные концепции, но так их не поняли - иначе откуда такой цирк с преобразованиями типов, сравнениями и т.п.
так вроде бы авторы создали явускрипт за неделю

но мне кажется, что главная проблема в том, что многие перед применением этого языка не особо пытаются его изучить.
NEW 01.06.15 21:12
in Antwort natuerlich blond 01.06.15 11:12
в JS полно много неявных преобразований и т.п. которые можно только заучить (а не изучить), да и то регулярно на грабли наступаешь (я пишу на нем эпизодически). Поэтому я стараюсь выбирать языки с четкой семантикой и понятными правилами преобразований, сравнений и т.п.
NEW 01.06.15 21:51
in Antwort AlexOtt 01.06.15 21:12
которые можно только заучить
-----
А не помогает заучивание. В любой момент переменная может поменять тип. Именно по-этому: "и то регулярно на грабли"...
я пишу на нем эпизодически
-----
Ну если только деваться некуда...
-----
А не помогает заучивание. В любой момент переменная может поменять тип. Именно по-этому: "и то регулярно на грабли"...
я пишу на нем эпизодически
-----
Ну если только деваться некуда...
NEW 02.06.15 23:28
in Antwort MrSanders 30.05.15 23:34
NEW 04.06.15 16:14
in Antwort Simple 02.06.15 23:28
Насколько я помнюь, ваадин это просто набор виджетов для gwt, нет?
А вот в сторону angular посмотреть как-то не догадались. Надо глянуть что это за зверь такой.
А вот в сторону angular посмотреть как-то не догадались. Надо глянуть что это за зверь такой.
NEW 05.06.15 18:40
Я как раз последние два дня клепал новый гуй на Angular UI. Сплошное удовольствие :) Хорошая документация и куча вопросов на stackoverflow - ответы находятся практически сразу.
in Antwort MrSanders 04.06.15 16:14
В ответ на:
А вот в сторону angular посмотреть как-то не догадались. Надо глянуть что это за зверь такой.
А вот в сторону angular посмотреть как-то не догадались. Надо глянуть что это за зверь такой.
Я как раз последние два дня клепал новый гуй на Angular UI. Сплошное удовольствие :) Хорошая документация и куча вопросов на stackoverflow - ответы находятся практически сразу.
NEW 06.06.15 10:47
Нам не поможет, мы все одно моментально захотим чего-нибудь странного :) Но посмотрю, спасибо за наводку.
Из последнего странного - в GXT-шном grid-е вынь и положь а чтобы на каждую строку была своя подсказка (tooltip). Я сначала спихнул на разработчика, а потом пришлось вместе с ним искать. Полдня промучались - ничего элегантнее переопределения render у ячейки не нашли. А поведение рендера зависит от типа данных, а сделать метод для форматирования данных в строку у абстрактного суперкласса всех ячеек никто не догадался... В общем - страшненько, с 5-ю анонимными подклассами, но работает.
in Antwort Simple 05.06.15 18:40
В ответ на:
Хорошая документация и куча вопросов на stackoverflow - ответы находятся практически сразу.
Хорошая документация и куча вопросов на stackoverflow - ответы находятся практически сразу.
Нам не поможет, мы все одно моментально захотим чего-нибудь странного :) Но посмотрю, спасибо за наводку.
Из последнего странного - в GXT-шном grid-е вынь и положь а чтобы на каждую строку была своя подсказка (tooltip). Я сначала спихнул на разработчика, а потом пришлось вместе с ним искать. Полдня промучались - ничего элегантнее переопределения render у ячейки не нашли. А поведение рендера зависит от типа данных, а сделать метод для форматирования данных в строку у абстрактного суперкласса всех ячеек никто не догадался... В общем - страшненько, с 5-ю анонимными подклассами, но работает.
NEW 06.06.15 15:13
in Antwort MrSanders 06.06.15 10:47
Ничего странного, как по мне. Норм.требование к совр.гридам.
NEW 06.06.15 16:55
in Antwort digital.pilot 06.06.15 15:13
Странное в том смысле что при попытке найти решение начинает казаться что мы первые (ну или вторые) кому такого захотелось. Потому что решение, которое мы нашли, очень корявое. Авторы фреймворка предлагают ручками (стрингами) вписывать html-ные тэги.
NEW 06.06.15 20:47
in Antwort MrSanders 06.06.15 16:55
NEW 12.06.15 22:07
in Antwort MrSanders 06.06.15 16:55
Внезапно! из теплового лампового мирка современного джаваскрипта меня выдернули с требованием допилить через жопу спрограммированный апачевский модуль. А ты - гриды, гриды... :-D
NEW 13.06.15 17:58
in Antwort Simple 12.06.15 22:07
Я на прошлой неделе ловил ошибку, которую GXT-шный TreeView кидает. Из этого теплого лампового мирка я готов хоть на галеры. Вот разве что на визуал бейсике писать не готов :)
Так что - радоваться надо :) Модуль сишный, небось, да? директивы препроцессора, макросы, доступ к значению поля структуры в массива структур высчитав сдвиг... Добавляешь поле в структуру и тыдыщь! Ни-фи-га не работает! Романтика, да.
Так что - радоваться надо :) Модуль сишный, небось, да? директивы препроцессора, макросы, доступ к значению поля структуры в массива структур высчитав сдвиг... Добавляешь поле в структуру и тыдыщь! Ни-фи-га не работает! Романтика, да.
NEW 13.06.15 18:06
in Antwort MrSanders 13.06.15 17:58
Клиенту надо, чтобы при не найденном в лдапе юзере выскакивало 403, а оно 500 дает. И хрен его знает, какой хук надо переопределить, бился целый день безрезультатно.
NEW 13.06.15 19:59
in Antwort Simple 13.06.15 18:06
mod_ldap в апаче сконфигурирован? Или аутентификация отдана на откуп этому модулю?
NEW 14.06.15 15:28
in Antwort MrSanders 13.06.15 19:59