Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите с выбором языка.
Форум «Всё о Паскале» > Другое > Свободное общение
DarkWishmaster
Привет. Вообщем я знаком пока что только с Турбо Паскалем, но хочеться паралельно изучать и другой более продвинутый язык програмирования. С чего посоветуйте новичку начать?
klem4
Ну это смотря чем тебе хочется заниматься, какая область тебе интересна, если считаешь, что уже достаточно хорошо владеешь языком, то можешь попробовать Delphi(разобраться с основами создания графических приложений), после Паскаля это будет логично. А вообще решай просто побольше разных задач(алгоритмических), освой графический модуль(Graph), потом напишешь какую-нибудь простенькую игрушку, программист в первую очередь должен уметь составлять хорошие алгоритмы, уметь представлять реальные объекты в виде неких программных абстракций - массивов, хешей, классов и т.д. и уметь ими грамотно оперировать.
andriano
Поддержу klem4 почти по всем пунктам.
Единственное, я бы не советовал осваивать Graph. Уж лучше функции рисования WinAPI.
Delphi не слишком удобный инструмент для создания графических приложений, т.к. ориентирована в основном на пользовательский интерфейс.

Но самое главное, нужно постоянно отдавать себе отчет в том, что для написания _хорошей_ программы необходимо:

1. Серьезные познания в предметной области, в которой предполагается писать программу и наличие оригинальных идей. Например, чтобы написать программу, предназначенную для обработки звука, нужно хорошо знать прежде всего акустику, физику и математику, а также физиологию слуха.
2. Теорию алгоритмов и другие дисциплины компьютерных наук, которые применяются в рассматриваемой предметной области. Такими могут быть булева алгебра, аналитическая геометрия, теория чисел, теория устойчивости, численные методы и т.п.
3. Аппаратное обеспечение компьютера - hardware.
4. Особенности используемой ОС.
5. Используемый язык программирования.

При этом приоритет 1, 2 и (3,4,5) строго в этом порядке, а вот между 3, 4 и 5 может зависеть от конкретной задачи.

PS. В целом, выбор языка программирования в подавляющем большинстве случаев (кроме явной экзотики) не носит приоритетного характера. И еще, Турбо Паскаль - это не язык, а среда программирования. Есть гораздо более современные средства разработки, основанные на языке Паскаль, например Delphi или Free Pascal.
volvo
Перенесено из Модула-2

Ничего личного к Модуле не имею, но у нее недостатков больше, чем дополнительных возможностей (в свое время по результатам сравнения нескольких языков Модула проиграла всем, кроме С). Всё, всё, умолкаю, если хочешь попробовать - пробуй, отговаривать не собираюсь... smile.gif Просто есть гораздо более продвинутые языки.
TarasBer
Может, ему пока не нужна продвинутость?
Я бы Питон вообще посоветовал. Потому что он насильно учит ставить отступы. Больше, правда, ничего про Питон не знаю.
Archon
А я бы новичкам Питон не советовал. Даже без goto такой лапши понапишут...
TarasBer
> Даже без goto такой лапши понапишут...

А что такого есть в Питоне, но нет в других языках, что не позволяет написать лапши на других языках?
Lapp
Человек вежливо и по правилам попросил проконсультировать его по поводу языков: Помогите с выбором языка. Дискуссии, прямо скажем, не получилось..

Но когда человек попросил ссылку (в разделе "Ссылки") - это, конечно, возбудило бурные дебаты!.. smile.gif

Вас за ручку перевести, или сами справитесь?..
DarkWishmaster
Мне пока продвинутые языки не нужны, думаю что тут важнее развитие логики, изучение разных алгоритмов, техник и.т.
volvo
Цитата
Я бы Питон вообще посоветовал. Потому что он насильно учит ставить отступы.
Нет, только не Питон. Для развития основных навыков программирования лучше бы выбирать языки со статической типизацией, чтоб еще при компиляции получать по рукам за некорректную работу, а не когда-нибудь потом, во время выполнения, да еще и неизвестно, получишь ли сразу, или только на десятом прогоне...

Цитата
Дискуссии, прямо скажем, не получилось..
Может, потому, что не все ходят в "Свободное общение"? У меня, к примеру, этот раздел вообще скрыт, равно как и почти все остальные. Теперь тему обнаружили и получилась дискуссия...
TarasBer
Хз, вот илитисты типа ВСЛ посоветовали бы что-нибудь функциональное.
Говорят, они очень полезны для того, чтобы человек привёл мышление в правильное русло.
DarkWishmaster
Жаль что в модуле-2 все операторы, процедуры, функций, константы и.т вообще всё надо писать с большими буквами, это раздражает + я как понял тут все процедуры надо импортировать что-ли ( смотрел примеры задач), типа:
FROM InOut IMPORT Write, Writeln.
Ещё заметил что тут переменые отличаются, например в Паскале a=A, тут a<>A.
Но в остальном достаточно удобно, не режет глаза как Паскаль, удобнее интерфейс оформлен.
Посмотрим что дальше )
Archon
Цитата(DarkWishmaster @ 8.04.2011 22:14) *

Но в остальном достаточно удобно, не режет глаза как Паскаль, удобнее интерфейс оформлен.
Интерфейс чего? Ты точно говоришь о языке? Не надо путать его со средой разработки.
DarkWishmaster
Цитата(Archon @ 8.04.2011 19:24) *

Интерфейс чего? Ты точно говоришь о языке? Не надо путать его со средой разработки.

Интерфейс програмы т.е среда разработки
Archon
Паскаль и Модула-2 — это не программы, а языки. Для того-же Паскаля существуют десятки компиляторов и сред разработки. Кроме того, никто не запрещает писать программы в своем любимом текстовом редакторе.

Может быть я говорю очевидные вещи, но очень часто вижу студентов (!) которые не представляют, что Паскаль — это язык (почти как Русский или Английский), а не конкретная программа.
Lapp
Цитата(Archon @ 8.04.2011 21:01) *
Может быть я говорю очевидные вещи, но очень часто вижу студентов (!) которые не представляют, что Паскаль — это язык (почти как Русский или Английский), а не конкретная программа.
+1
Да я не ошибусь, если скажу, что больше 90% посетителей этого форума так думают. Я имею в виду всех юзеров, а включая гостей и 99% набрется таких. Просто удивительно, кто и как их учит..

Теперь по теме.. Я, наверное, покажусь занудой, но я скажу.

DarkWishMaster, тебе РАНО начинать учить другой язык. Те твои паскалевские коды, которые я видел, оставляют желать много лучшего. Не обкрадывай себя - программируй больше и показывай тут, чтоб мы поправили.

Да, я посоветую тебе выбор: Pascal.

Ты как фотолюбитель фигов - сделал два снимка и уже подавай ему Canon SLR, средний формат, Mamiya! А на деле - снимок Rolleiflex'ом не отличит от снимка Сменой-8..

В качестве упражнения: следующую задачу (и не hello word, а побольше, желательно с графикой и динамической памятью, с побитным доступом..) сделай полностью не заходя в среду. Набери в Блокноте, откомпилируй в комстроке. Это будет для тебя очень ценный опыт.

Вот когда ты поймешь, какие _реальные_ недостатки Паскаля (не "режет глаза", а по существу) - тогда пожлуйста. То, что ты пока сказал про Modula - это даже не детский лепет, это вообще ничто. Это как моя знакомая одна выдала: "у этого ноутбука есть большой недостаток: отпечатки пальцев очень заметны на крышке" (реальный случай)). Ты хоть попробуй понять, что влечет за собой различение/неразличение регистра - кроме эстетики, блин, прости Господи..

Не обижайся, я тебе добра хочу.
DarkWishmaster
Цитата(Lapp @ 12.04.2011 5:51) *

+1
Да я не ошибусь, если скажу, что больше 90% посетителей этого форума так думают. Я имею в виду всех юзеров, а включая гостей и 99% набрется таких. Просто удивительно, кто и как их учит..

Теперь по теме.. Я, наверное, покажусь занудой, но я скажу.

DarkWishMaster, тебе РАНО начинать учить другой язык. Те твои паскалевские коды, которые я видел, оставляют желать много лучшего. Не обкрадывай себя - программируй больше и показывай тут, чтоб мы поправили.

Да, я посоветую тебе выбор: Pascal.

Ты как фотолюбитель фигов - сделал два снимка и уже подавай ему Canon SLR, средний формат, Mamiya! А на деле - снимок Rolleiflex'ом не отличит от снимка Сменой-8..

В качестве упражнения: следующую задачу (и не hello word, а побольше, желательно с графикой и динамической памятью, с побитным доступом..) сделай полностью не заходя в среду. Набери в Блокноте, откомпилируй в комстроке. Это будет для тебя очень ценный опыт.

Вот когда ты поймешь, какие _реальные_ недостатки Паскаля (не "режет глаза", а по существу) - тогда пожлуйста. То, что ты пока сказал про Modula - это даже не детский лепет, это вообще ничто. Это как моя знакомая одна выдала: "у этого ноутбука есть большой недостаток: отпечатки пальцев очень заметны на крышке" (реальный случай)). Ты хоть попробуй понять, что влечет за собой различение/неразличение регистра - кроме эстетики, блин, прости Господи..

Не обижайся, я тебе добра хочу.


Да не обижаюсь, напротив, благодарен за советы. Этот форум очень многим мне помог, я очень за это благодарен. Сейчас начал учить динамичиские структуры, вроде не сложно но с связями между клетками не очень понятно, особено цикличный двухсвязный список volvo, хотя я понял то что он обьяснил, но код не очень понял.
То, что ты пока сказал про Modula - это даже не детский лепет, это вообще ничто" - Ну почему бы не сделать что-бы FOR<=>for<=>fOr и.т
откомпилируй в комстроке."- извини, а как в cmd компилировать?
Lapp
Цитата(DarkWishmaster @ 12.04.2011 23:30) *
а как в cmd компилировать?
Чем ты пользуешься?
case пользуешься of
TP: запусти tpc;
BP: запусти bpc;
FP: запусти fpc;
end;

smile.gif
DarkWishmaster
Цитата(Lapp @ 12.04.2011 23:48) *

Чем ты пользуешься?
case пользуешься of
TP: запусти tpc;
BP: запусти bpc;
FP: запусти fpc;
end;

smile.gif

Извини но я не понял. Пользуюсь TPC. Мне просто команды cmd не известны.
Допустим у меня код в блокноте, хочу скомпилировать.
запускаю cmd и там директория C:\Documents_and_Settings\User\
Lapp
Цитата(DarkWishmaster @ 13.04.2011 1:04) *
Извини но я не понял. Пользуюсь TPC. Мне просто команды cmd не известны.
Это недопустимо. Программер должен знать системный язык. Обычный "юзер писи" может без них обойтись. Программер - нет. Найди описание MS DOS (для начала, потом добавишь расширения) и разберись. Если будут трудности (или желание поделиться) - создай тему (в разделе про OS) и спрашивай. Слишком глубоко сразу нырять не надо (можно выпустить, скажем, FOR), но основной набор команд - обязательно. cd, dir, copy, move, del, mkdir, type, echo.. А также понятие системных переменных, маски и перенаправления (<<, <, |, >, >>).

В Windows эти команды имеют несколько ограниченный и урезанный вид. Но в UNIX (Linux) они - основа системы. Без них - никуда.

Цитата
Допустим у меня код в блокноте, хочу скомпилировать.
запускаю cmd и там директория C:\Documents_and_Settings\User\
Если у тебя директория, где у тебя лежат бинарники TP, вставлена в системную переменную PATH (о системных переменных читай в описании DOS), то можешь просто набрать tpc. Если нет - то набирай полный путь. Должно получиться что-то вроде:
C:\Users\andreyk>c:\bp\bin\bpc
Borland Pascal Version 7.0 Copyright © 1983,92 Borland International
Syntax: BPC [options] filename [options] Target: DOS real mode
-B = Build all units -I<path> = Include directories
-CD = DOS real mode target -L = Link buffer on disk
-CP = DOS protected mode target -M = Make modified units
-CW = Windows target -O<path> = Object directories
-D<syms> = Define conditionals -Q = Quiet compile
-E<path> = EXE/TPU directories -R<path> = Resource directories
-F<seg>:<ofs> = Find error -T<path> = TPL/CFG directory
-GD = Detailed map file -U<path> = Unit directories
-GP = Map file with publics -V = Debug information in EXE
-GS = Map file with segments -$<dir> = Compiler directive
Compiler switches: -$<letter><state> (defaults are shown below)
A+ Word alignment K+ Smart callbacks S+ Stack checking
B- Full boolean eval L+ Local debug symbols T- Typed pointers
D+ Debug information N- 80x87 instructions V+ Strict var-strings
E+ 80x87 emulation O- Overlays allowed W+ Windows stack frames
F- Force FAR calls P- Open string params X+ Extended syntax
G- 80286 instructions Q- Overflow checking Y+ Symbol reference info
I+ I/O error checking R- Range checking
Memory sizes: -$M<stack>,<heapmin>,<heapmax> (default: 16384,0,655360)

volvo
Цитата
начал учить динамичиские структуры, вроде не сложно но с связями между клетками не очень понятно, особено цикличный двухсвязный список volvo, хотя я понял то что он обьяснил, но код не очень понял.
Почему вопросы здесь по коду не задавал?

Где именно непонятно, что непонятно? Ты ж молчишь, не говоришь ничего, а оказывается ты не до конца разобрался и собрался двигаться дальше. По крайней мере в той теме так написано. Этого делать ни в коем случае нельзя. Пока ты сам не сможешь ту же программу написать без подсматривания в чужой код - значит, не до конца разобрался. Дальше - ни шагу. Рискуешь. "Вроде бы все понятно" и "действительно все понятно" - это разные вещи. Так и будешь недопонимать и делать одни и те же ошибки во всех программах.

Да и вообще, начинать динамические структуры с циклических списков - это не очень правильно. Односвязный нециклический ты уже пробовал делать? Где его реализация? Где реализация двухсвязного нециклического? Не надо бежать вперед слишком быстро, лучше досконально разобраться с более простыми темами, тогда при работе с более сложными будет гораздо проще...
DarkWishmaster
volvo, Ну я там картинку поставил. А так, просто неловко каждый раз спрашивать, пробовал сам разобраться.
Вот односвязный нецикличный(код для создания)

new(adding);
readln(Adding^.Info);
Adding^.Next:=nil;
if Root=nil then begin Root:=adding; Q:=adding; end
else Q^.next:=adding; Q:=adding;


Я так делаю.
volvo
Давай все-таки не будем перемешивать тему о новом языке и работу с односвязным списком (все остальные вопросы по списку - в отдельную тему оформляй. И не стесняйся спрашивать, главное для тебя - разобраться в вопросе. На то форум и есть, чтоб показать свой код и спросить, что не так, что где можно исправить, где ошибки). У тебя в коде не все гладко, выполняется лишняя работа, я бы делал так:

   Adding^.Next:=nil;
if Root=nil then Root:=adding else Q^.next:=adding;
Q:=adding; // Это выполняется в любом случае, вне зависимости от Root = nil


И еще одно: лучше давать "говорящие" имена переменным. А то Root - понятно, а вот что такое Q - не совсем. Назвал бы Head и Tail (ну, или Root и Tail хотя бы) - возможностей для недопонимания бы не было в принципе...
Lapp
Цитата(volvo @ 13.04.2011 16:06) *
(ну, или Root и Tail хотя бы)
если root, то уж top )).
Но, конечно, в списке лучше head & tail. Потому что червяк больше похож на список, чем дерево. Дерево - оно для графов больше..

но на эту тему правда лучше не тут
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.