Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
import Data.Char(toUpper)
main = do
inpStr <- readFile "input.txt"
writeFile "output.txt" (map toUpper inpStr)
readFile "in.txt" >>= return . parseLines . lines >>= writeFile "out.txt"
знать наизусть все страны мира и уметь показать их на карте. причем на скоростьВы так говорите, как будто это плохо.
Begin/end, if...then, := — это избыточный код, который не дисциплинирует, а только загрязняет код.
1) Присваивание возвращаемого значения «имени» функции
2) Арифметика аж в трех видах — операции, операции в виде слов (DIV) и процедуры(!) — inc()
3) Объявление массивов
как работает компьютер
Паскаль существенно дальше от работы компьютера, чем ANSI C. Вот именно так он и работает, хотите работу компьютера объяснять с «шишками» — берите его.
ни в чём ему не уступает
на паскале их дать проще
В питоне нет нормальных циклов, их заменяет анонимный итератор, который получается как результат функции, вы это школьникам объяснить сможете?
for i := 0 to 9 do for i in range(0, 10): LD R0, 0
LD R1, 9
LD R2, 1
L1: CMP R0, R1
JN L2
...
ADD R0, R2
JMP L1
L2: ...
и отдельно стоящий? to? смысла не имеет.
Pascal конечно — он и задумывался как язык для обучения…
$ cat a.cpp
#include <iostream>
struct A { };
std::ostream operator<<(std::ostream& os, A a)
{
return os;
}
$ clang++ -c a.cpp
In file included from a.cpp:1:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/iostream:39:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/ostream:39:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/ios:44:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/basic_ios.h:472:
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/basic_ios.tcc:178:25: error: base class 'std::ios_base' has private copy constructor
extern template class basic_ios<char>;
^
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/ios_base.h:787:5: note: declared private here
ios_base(const ios_base&);
^
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/ostream.tcc:360:25: note: implicit default copy constructor for 'std::basic_ios<char>' first required here
extern template class basic_ostream<char>;
^
a.cpp:7:10: note: implicit default copy constructor for 'std::basic_ostream<char>' first required here
return os;
^
1 error generated.
struct mas
{
float x;
};
// ...
mas *points;
| n, n < 2
f = <
| n + f(n-1)
f(N) when N < 2 ->
N;
f(N) ->
N + F(N-1)
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++)
printf("Hello!\n");
return 0;
}
program HelloWorld;
var i :integer;
begin
for i := 1 to 10 do
writeln('Hello, World!');
end.
for i in range(10):
print 'Hello World'print 'Hello, world!\n'*10
for i in range(10):
print 'Hello World'print 'Hello, world!\n'*10H
Quite frankly, even if the choice of C were to do *nothing* but keep the C++ programmers out, that in itself would be a huge reason to use C.
Tinf=integer;
List=^TList; {Указатель}
TList=record
data:TInf;
next:List;
end;По традиции, введённой авторами Си Брайаном Керниганом и Денисом Ритчи обучение этому языку начинают с программы Hello world. Вот её текст1 X
#include <stdio.h>
int main() {
printf(«Hello, world\n»);
return 0;
}
Написать этот текст на доске не сложно, сложности начинаются в тот момент, когда нарисована последняя фигурная скобка и необходимо переходить к пояснениям. Что это там в первой строке. Правильный ответ звучит примерно так: это директива макропроцессора, которая включает в нашу трансляцию специальный заголовочный, файл содержащий объявления библиотечных функций. А теперь давайте вспомним, что мы проводим первое занятие для абсолютно неподготовленной аудитории, смысл слова директива наши слушатели ещё могут догадаться из общих соображений и окажутся недалеки от истины но остаток фразы, макропроцессор функции, к тому же ещё библиотечные, объявления, все эти слова не оставляют слушателям ни единого шанса на понимание. Если в этот момент пуститься в пространные объяснения мы можем где-то через полчаса с удивлением обнаружить что увлечённо рассказываем, например, о конвенциях вызовов функций, в то время как наши слушатели читают книжки, играют в тетрис на мобильных телефонах, рисуют в тетрадках цветочки и занимаются другими делами, имеющими столь же прямое отношение к программированиюF Реальность такова, что объяснить неподготовленному слушателю смысл директивы include невозможно, нравится это нам или нет. Поэтому приходится произнести сакраментальное «так надо, а зачем мы узнаем позже». Заметим, мы ещё ничего не объяснили, а ссылка вперёд нам уже потребовалась
священным ритуаломВам в семинарию надо было идти учиться, а не на программиста. Как окончивший православную гимназию говорю. «Магия» и программирование не совместимы, человек должен чётко понимать, зачем нужен каждый символ в его коде.
Я вёл к тому, что при программировании на любом языке нам всё-равно придётся решить для себя «вот это я хочу знать как работает, ну а тут, я так уж и быть, поверю, что оно просто есть как есть и глубже разбираться не буду».Не нужно знать, как оно работает, нужно знать, что оно делает. Концепция чёрного ящика, когда известно что на входе и что на выходе. На ней строятся вычислительные системы уже много десятилетий.
stdio.h — как чёрный ящик, содержащий printfПеречитайте концепцию чёрного ящика. Нас совершенно не интересует, что там внутри. Совсем. Ваш подход плодит множество недомолвок. Сравните с хэлловордом на бейсике:
как кто-то не умеет обучать людей программированию на С++Этот «кто-то» (автор статьи по ссылке) уже 10 лет преподаёт на кафедре алгоритмических языков ф-та ВМиК МГУ им. М.В.Ломоносова. Хотя для компьютерных волшебников кандидаты наук, видимо, не авторитет.
Сама по себе идея выплёскивать на учеников всю подноготную языка и добиваться с самого начала понимания всех деталей — это зло.А этого и не надо делать. Им не нужно понимать, как работает PRINT. Им нужно чётко понимать, зачем он нужен в программе и что конкретно он делает. Магические символы \n, подстановки в print всяких %s, ведущие к необходимости понятия указателей ведут к тому, что мы не можем объяснить их назначение человеку, никогда ранее не писавшему программ.
Опять про семинариюОкей, откройте секту машинопоклонников, назначьте себя главным техножрецом. Я уверен, будет пользоваться популярностью.
FOR i=0 TO 5
PRINT i
NEXT iДля сравнения:using System;
namespace Program
{
class MainClass
{
static void Main()
{
for (int i=0; i<=10; i++)
Console.WriteLine(i.ToString());
}
}
}CLS
SCREEN 12
CIRCLE (200, 250), 100, 14
PAINT (200, 250), 14?from turtle import *
def yin(radius, color1, color2):
width(3)
color(color1)
begin_fill()
circle(radius/2., 180)
circle(radius, 180)
left(180)
circle(-radius/2., 180)
end_fill()
color(color2)
left(90)
up()
forward(radius*0.375)
right(90)
down()
begin_fill()
circle(radius*0.125)
end_fill()
left(90)
up()
backward(radius*0.375)
down()
left(90)
def main():
reset()
yin(200, "red", "green")
yin(200, "green", "red")
ht()
return "Done!"
if __name__ == '__main__':
main()
mainloop()
гуманитариев — в гуманитарный, технарей — в физмат, лингвистов — в лингвистическийХватит плодить роботов-исполнителей. Для создания творческой личности нужно многогранное образование. Это хорошо понимали при создании системы образования в СССР, когда целью было воспитание человека-творца.
использовать Чертежник
алг
нач
опустить перо
установить цвет ("красный")
сместиться в точку (2,2)
поднять перо
сместиться на вектор (0,-2)
опустить перо
установить цвет ("синий")
сместиться в точку (4,2)
кон
А искать баги в большом проекте на, например, плюсах с помощью дизассемблера — это жестоко:)

GDI или MFCНе надо приводить римеры технологий 20-илетней давности. Есть такая штука как Qt и QML.
В школе библиотеки ученикам устанавливать не нужно, это сделает админ/учитель.
Паскаль — самый простой язык для понимания детям, далеким от «линейного мышления»Да что ж такое… с чего вы взяли? Комментариев 200 выше посвящено опровержению этого мифа.
Какой язык программирования должен быть первым при изучении в школе?