LINUX.ORG.RU

Какой язык программирования должен быть первым? Предлагаю bc


0

1

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

Обычно таким языком становится pascal или basic в школе. Но почему? Ведь существует язык bc, причём уже давно. Язык простой, позволяющий производить вычисления с произвольной точностью, но при этом с довольно мощным си-подобным синтаксисом (единственное, жаль там тернарного оператора ?: нет).

Конечно, он не позволяет рисовать картинки, но для рисования картинок можно взять какую-нибудь Kturtle.

Так вот, поддерживаете ли вы bc как первый изучаемый язык? Заодно, для знакомства с другой концепцией программирования, будет интересен и язык dc, который можно давать одновременно — стековый. На мой взгляд, обратно-польский синтаксис самый прогрессивный из известных — странно, что им так редко пользуются.

★★★★★
Ответ на: комментарий от KRoN73

> У нескольких моих знакомых Borland C был первым языком. Язык, как язык...
man bc
Какой ещё borland C? Это не язык, а среда разработки

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

>Это не язык, а среда разработки

Да-да, можешь хоть текстовым редактором назвать :D

KRoN73 ★★★★★
()

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

Pascal, C явно для этого с успехом применимы.

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

Насчет bc я точно не знаю, но немного сомневаюсь, что он для этого сойдет.

Вторым студенческим языком должен быть любой язык, позволяющий покопаться в имеющейся платформе и узнать, что как работает. Как используются изученные ранее структуры данных на практике, какие интерфейсы взаимодействия для чего используются. Потоки, IPC, синхронизация, сокеты и т.д.

В общем, С и, возможно, местами asm.

Третьим студенческим языком должен быть язык с куда более высокой абстракцией, позволяющий решать более глобальные задачи. Масштабные системы, интернет-сервисы, Ъ-ынтырпрайз.

Java, C#

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

zhuravlik ★★★★
()
Ответ на: комментарий от zhuravlik

> Первым студенческим языком должен быть любой язык, позволяющий адекватно донести основные структуры данных и алгоритмы над ними.
Переменные, массивы, циклы, ветвления? Всё в bc есть, и при этом язык идеально простой

Насчет bc я точно не знаю, но немного сомневаюсь, что он для этого сойдет.

Это что-то вроде C по синтаксису, только нет тернарного оператора ;: нет printf, переменные не надо объявлять, тип переменных обычно — число произвольной точности (к-во знаков задаётся в переменной scale)

Есть все функции для вычислений и ещё немного.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от anonymous

> начинать с C/C++/ASM это курс на 5 лет дальше или уходить из программирования (желательно) здоровый образ жизни нужен а не гнить за монитором опять же будеш там где сможеш заработать больше далеко не факт что это программирование будет или если ты «ПРИЗВАННЫЙ» дальше сам разберешся

Запятые в двадцать первом веке это моветон?

anonymous
()
Ответ на: комментарий от Xenius

>Переменные, массивы, циклы, ветвления?

Массивы, структуры, связные списки, деревья, хэш-таблицы и т.д. И я не говорил о том, что это все должно быть в составе языка. Я говорил о том, что с помощью выбранного языка это должно быть возможно реализовать, причем без искусственных усложнений.

Это что-то вроде C по синтаксису, только нет тернарного оператора ;: нет printf, переменные не надо объявлять, тип переменных обычно — число произвольной точности (к-во знаков задаётся в переменной scale)


Ладно, надо будет почитать man bc. Уговорили. =)

zhuravlik ★★★★
()
Ответ на: комментарий от KRoN73

> > Ну, я очень рад, что применение постфиксной нотации в ЯП фактически ограничивается советскими МК. Потому что читать его крайне трудно.

Это, значит, ты ещё Lisp'а не видел.

Вот уж не знал, что KRoN73 не отличает префиксную нотацию от постфиксной. Это какой-то интересный вид психического расстройства?

Ну, или Focal'а хотя бы :D

Например, вот тут http://www.cs.uiowa.edu/~jones/pdp8/focal/focal69.html не вижу формул в постфиксной нотации.

Про APL, вообще молчу...

И правильно делаешь.

sanuda
()
Ответ на: комментарий от sanuda

>Потому что читать его крайне трудно.

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

elverion
()
Ответ на: комментарий от sanuda

>Вот уж не знал, что KRoN73 не отличает префиксную нотацию от постфиксной

Речь шла не о виде нотации, а о удобстве чтения, как бы:

Потому что читать его крайне трудно.

KRoN73 ★★★★★
()
Ответ на: комментарий от elverion

>После обратной бесскобочной записи инфиксная нотация кажется избыточной, нелогичной и вообще ущербной.

А уж префиксная с тонной скобок... :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> А уж префиксная с тонной скобок... :)
Кстати, в префиксной с правой ассоциативностью скобки не нужны:

/ * + a b * + c d + e f - / z w * x y

Аналог в инфиксной:
(a + b) * (c + d) * (e + f) / (z / w - x * y)

Аналог в префиксной, но со скобками:
(/ (* (+ a b) (* (+ c d) (+ e f))) (- (/ z w) (* x y)))

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

Вся прелесть префиксных и постфиксных нотаций по сравнению с инфиксной в том, что в них операторы могут идти подряд, за счёт чего увеличивается количество вариантов расстановки операторов и переменных — и потому, при некоторых дополнительных правилах скобки не требуются.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

>Кстати, в префиксной с правой ассоциативностью скобки не нужны

Вот только транслятор сильно усложняется. И нельзя в рантайме использовать переменное число аргументов без интерпретации.

KRoN73 ★★★★★
()
Ответ на: комментарий от Xenius

> Кстати, в префиксной с правой ассоциативностью скобки не нужны:

А как догадаться, * - это аргумент ФВП или функция, которую надо применить?

anonymous
()
Ответ на: комментарий от anonymous

Такие мелочи ненавистников инфиксной нотации не интересуют!

sanuda
()
Ответ на: комментарий от anonymous

> А как догадаться, * - это аргумент ФВП или функция, которую надо применить?
Фильтр Воздушный Панельный, Факультет Военной Подготовки?

Если это про операторы вроде композиции функций, то можно всё-таки выделять скобками, но только целые функции (полученные из элементарных).

Но вообще, я говорил пока об обычной арифметике.

Xenius ★★★★★
() автор топика

Javascript же, есть из коробки на любом компе. А потом показать человеку QtQuick, штука учится на ура с нулевого уровня и лишена костылей из html и css

Gorthauer ★★★★★
()
Ответ на: комментарий от Gorthauer

> Javascript же, есть из коробки на любом компе.
bc тоже есть из коробки на любом компе... Ну ладно, не на любом, а только на таком, где установлена ОС.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

>> Если учиться программировать то C/C++

А почему не Go?

Потом с этим Go куда идти? Я думаю работодатель сразу go to home без выходного пособия устроит:)

TheMixa ★★★
()
Ответ на: комментарий от TheMixa

> Я думаю работодатель сразу go to home без выходного пособия устроит:)
Какой ещё работодатель, вы про что? Далеко не все становятся программистами, а хотя бы один язык программирования (а лучше как минимум два разных парадигм) должны изучить все — для общего образования (программирование — вторая грамотность)

Xenius ★★★★★
() автор топика

почитал каменты...
В общем, все какие-то сишки, бейсики, асмы... Из более адекуатных - лого...
Все не то.
Начинать надо с brainfuck и malbolge. Пусть привыкают к программированию правильно!

yaws
()
Ответ на: комментарий от Xenius

> А давно ты обнаружил это свойство ссылок на Лоре?

Хм, сам у кого-то подсмотрел несколько месяцев назад.

PolarFox ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.