LINUX.ORG.RU

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


0

1

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

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

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

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

★★★★★

Я бы пошел по проверенному пути. Лучше научиться С, чтобы потом радоваться программируя на Java и C#, чем привыкнуть к этим двум, потом ужасаться количеству телодвижений для того, чтобы сделать что-то на С.

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

С++ ввиду существования лучших альтернатив можно не изучать, разве что для общего развития. Но уродовать им мозг углубленно лучше не надо.

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

> То есть всё в порядке только в этом примере? Ну тогда я рад, что остальные два более убедительны.
Я про все говорил, просто хотел избежать оверквотинга

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

> man bc

Это не руководство для начинающего программировать.

> его не так уж и трудно написать

Хорошее написать трудно, надо быть зубром в программировании и преподавании. Все уже написано до нас - Вирт, и т. п.

unsigned ★★★★
()

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

по результатам можно будет делать выводы

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

Ну так программы и формулы пишут не для того, чтобы их писать.

sanuda
()

А не пофиг ли какой язык первым изучать? Самое главное чтобы он не стал последним.

Скорее всего Схему. Ее собственно для этого и делали (и используют). Даже на ее динамическую типизацию пофиг.

ЗЫ: Любой язык где есть понятие переменной - в топку.

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

>Ты намерен доказывать, что такая запись удобнее для восприятия, чем традиционная?

А что, есть кто-то считающий иначе?

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

>> имхо, не императивный.

Почему? Мне кажется, надо знать и о тех и о других. А с какого начать не так уж важно.

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

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

Ну так ломать мозг — это нормально. Всегда приходится это делать, когда встречаешь какую-то новую парадигму.

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

Тащемта можно адово угареть по unlambda, например.

sanuda
()

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

Люто, бешено плюсую. Я пользуюсь, у меня есть 2 советских ПМК с обратной польской нотацией (Электроника МК-61 и МК-54), жаль только, что стек маленький.

gentoo_root ★★★★★
()

bc - это калькулятор такой консольный.

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

>А собственно, какая разница: префиксная, инфиксная или постфиксная запись. Как бы все равно.

На дешёвых калькуляторах (с инфиксной записью, без скобочек и памятью на 1 число) трудно посчитать (a+b)*(c+d)*(e+f), разве что заюзать память на 1 число (скобочек же нет), а вот если это всё надо ещё и разделить на (x/y - z*u), то уже вообще не получится. С обратной польской записью всё легко: a,b,+,c,d,+,*,e,f,+,*,x,y,/,z,u,*,-,/. И даже укладывается в стек на 4 числа, как на МК-61.

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

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

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

>Вы ошиблись тредом, речь не про калькуляторы.

Я всего лишь продолжил обсуждение постфиксной нотации и привёл пример, где лично я это использую.

gentoo_root ★★★★★
()

Неожиданный подход, однако. Но в bc нет существенного компонента - работы с файлами. ИМХО начинать надо с Python-а: он и как калькулятор вполне хорош и допускает постепенное усложнение. И даже элементы функционального языка есть. А с модулями - и символьная математика (аккурат для школы).

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

Да в bc вообще ни хрена нет. Учить на нем программировать — это фашизм какой-то.

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

Так ить смотря когда первачил. Я вон вообще с Наири-1 начинал. Какой там язык? Потом были и PL/1 и Basic и C. И немного - Pascal. И ещё кой-какие. Счас любимый Python и при нужде - C. Ну при специфической необходимости или наоборот - одноразовом вычислении - bc.

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

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

sanuda
()

PHP же.

Сам не люблю PHP, но это наиболее практически применимый при низких уровнях знаний язык.
Я в 11 осилил Си, с особо сильными проблемами не сталкивался. Читал сначала «Си для школьников», потом какую-то серьезную большую книжку.
Начинать можно с любого языка, главное - понять общие принципы.
(Языки со строгой типизацией нужны - с них перейти на динамические в разы легче, чем обратно)

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

> Но в bc нет существенного компонента - работы с файлами.
Я же говорю «первым», а не последним.

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

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

> Ты намерен доказывать, что такая запись удобнее для восприятия, чем традиционная?
Без выделения блоков традиционная пожалуй удобней — но ведь можно пробелами отделять части выражения.

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

>Python. Удваиваю. ЯП очень простой

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

Хорошо было во времена Smalltalk'а. Тогда термин объектно-ориентированный не был так безбожно зафорсен.

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

> На дешёвых калькуляторах (с инфиксной записью, без скобочек и памятью на 1 число) трудно посчитать (a+b)*(c+d)*(e+f), разве что заюзать память на 1 число (скобочек же нет), а вот если это всё надо ещё и разделить на (x/y - z*u), то уже вообще не получится.

z * u MS C x / y - MR MS C a + b / MR MS C c + d * MR MS C e + f * MR MS C

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

С обратной польской записью всё легко: a,b,+,c,d,+,*,e,f,+,*,x,y,/,z,u,*,-,/. И даже укладывается в стек на 4 числа, как на МК-61.

Читается плохо, лучше так:
ab+ cd+ ef+ ** xy/ zu* - /

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

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

gandjubas
()

А если речь идёт о преподавании, то начинать нужно с низкоуровневого языка типа С. Паскаль обычно преподают, т.к. в нём меньше шансов встретить конструкции вида i++ + ++i, дабы не травмировать хрупкую детскую психику.

gandjubas
()

Смотря каую цель ставить. Если изучить алгоритмизацию то попроще чтото из pascal'е и python'о подобных. Если учиться программировать то C/C++

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

> Если вы человек взрослый, начните с того что вы вообще собираетесь программировать. Если просто поиграться, я думаю Питон - лучший выбор.
И почему некоторые думаю что я про себя?
Нет, я про то, какой язык желательно было бы первым преподавать в школе, например.

А если интересно, то да, мне просто поиграться — и для этого я уже с десяток разных языков изучил, пока больше всего нравится J.

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

> Если изучить алгоритмизацию то попроще чтото из pascal'е и python'о подобных.
Почему не конкретный bc?

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

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

Я изучал C, он мне нравился, по сравнению с паскалем и бейсиком, но теперь-то я знаю больше языков и думаю, что Perl круче, а всякие J и factor ещё интереснее.

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

Если на перле писать так, чтобы исходник легко читался, то он ничем не будет отличаться от питона. А писать по-другому смысла и нет.

sanuda
()

Лучше вообще не изучать языков программирования :) Но если вдруг сильно приперло, то Smalltalk, Lisp, Forth, ассемблеры.

buddhist ★★★★★
()

Си. Мозг поломаешь вначале, но зато плюшек много получишь от этого.

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

Начиная с C студент будет учится избегать сегфолтов, утечек памяти...

4.2
Зависит от заданий препода.

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

> Почему не конкретный bc?

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

gandjubas
()

>Так вот, поддерживаете ли вы bc как первый изучаемый язык?

У нескольких моих знакомых Borland C был первым языком. Язык, как язык...

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

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

Это, значит, ты ещё Lisp'а не видел. Ну, или Focal'а хотя бы :D Про APL, вообще молчу...

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