Pull to refresh

Comments 100

UFO just landed and posted this here
Я как раз имел в виду, что не обязательно сразу начинать с GUI, под винду тоже можно писать консольные приложения. Полноценные консольные вин-приложения.
А чем "Полноценные консольные вин-приложения" при изучении основ языка отличаются от дос-приложения? :)
Например тем, что под досом нас приучают пользоваться функциями биоса, в то время как под виндой всё-таки стоит пользоваться WinAPI
Функции BIOS на паскале? О_о Я сейчас начинаю понимать что меня вообще в универе ничему не учили на младших курсах.
К тому же товарищь, функции BIOS — это уже не ДОС. Или для вас ДОС всё что с черным экрамном и консолькой 80x25
Более удобная среда разработки. В подобии ее кстати предостоит работать (если не в ней-же), потому при работе с ней студенты не только к языку привыкнут, но и к среде, что немаловажно.
Например размером массива который можно создать. Конечно, создавать большие массивы плохо, но иногда надо. Лучше учиться сразу работать с ними, чем долго учиться как обходиться без них, а затем переучиваться.
Мы вроде как говорим о первом годе обучения? Так?
На первом курсе не проходят ф-и биоса ( ну по крайней мере я не знаю университета в котором бы так делали).
На первом курсе изучают основы программирования, циклы, ветвления, структуры данных и т.д.
При этом не имеет значения в какой среде все это изучать. Когда я был на первом курсе то мои программы писались на во всем, что только скомпилировать C++))))
Это были: Borland 3.1 под DOS, Borland Builder 6, Visual Studio 2005 под Windows, Gedit + gcc под Linux, Xcode под Mac OS.
И все отличия в написании программ в этих средах сводились к библиотеке conio.h аналаг которой есть под *nix но мне было лень разбираться с ней.))
А вцелом из перечисленных сред самыми удобными вариантами были Borland 3.1 и Gedit + gcc ))
Они позволяли писать программы не отвлекаясь на работу с IDE.
И это правильно!!!
При изучении основ изучают не язык программирования или IDE, а сами принципы разработки программного обеспечения,а они везде одни и теже.
Так почему бы не рассказать о работе с терминалом в *nix вместо conio.h? По сути, объём работы преподавателя тот же. А зато знания получаются актуальные.
Потому что лабы делались в *nix не по требованию преподавателя, а по моей инициативе( лень было винду ставить)
Мой ответ был не столько вам, сколько остальным участникам дискуссии.

А вам респект за *nix и нежелание ставить windows ;)
Когда я был на первом курсе то мои программы писались на во всем, что только скомпилировать C++))))
Не верю. Компиляторы C++ для DOS - это суперособая статья. Я не знаю ни одного, который хотя бы "Здрайвтвуй, Мир!" скомпилировал:

#include <iostream>

int main(void) {
  std::cout << "Здравствуй, Мир!" << std::endl;
}

Да, я знаю что отличия минимальны - но нужно ли про них знать людям, которые только начинают изучать C++? Хорошо ли что тот C++, который описан в книжках в магазине и тот, который доступен им в MS DOS имеют между собой мало общего? И т.д. и т.п.
исесно, неймспейс std появился только в стандарте C++ ISO 99, его даже в VS 6.0 нет
Попробуем вот-так:

#include

int main(void) {
cout << "Здравствуй, Мир!=)" << endl;
}
хабр скушал iostream (

#include

int main(void) {
cout << "Здравствуй, Мир!=)" << endl;
}
блин( короче думаю меня поняли )))) вместо iostream надо написать iostream.h
не по стандарту. вот так люди запоминают, что надо iostream.h, потом переходят современный компилятор и удивляются, чего у них не работает.
по стандарту)) только стандарт 93 года))
Да и пусть люди лишний раз подумают этого им так не хватает!)
P.S.
Сужу по своему потоку. Это просто полный 3.14здец.(((((
Это какой-такой стандарт вышел в 93м году? Первый стандарт ISO вышел в 1998м, второй - в 2003м, следующий - предположительно в 2009м (ограниченная поддержка C++0x включена в GCC 4.3). Всё что было до этого - это какие-то внутрифирменные стандарты, не нужно ими пользоваться... Уж 10 лет прошло со времени принятия международного стандарта...
То была промежуточная версия народ жаждал новый язык вот ISO и подсуетилась.
C++ 93
Не было там никакой промежуточной версии, увы. Были "стандарты" на основе Cfront, но после неудавшейся попытки добавить туда исключения начался "разброд и шатание". Всё это кончилось принятием стандарта в 1998м году и смысла возвращаться назад (когда дело доходило до того, что простейшие программы было невозможно написать без кучи ifdef'ов) я не вижу.
Ну вообщем вы правы назовем это версий Borland'a)))
В Ubuntu это приводит к громким воплям:

$ g++ test.C
In file included from /usr/include/c++/4.2/backward/iostream.h:31,
from test.C:1:
/usr/include/c++/4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.

В ~x86 Gentoo (как я уже показывал ниже) - уже просто не компилируется вообще. Не знаю как в Fedora 9 (думаю что там как в Gentoo, но возможности проверить сейчас нет), но в любом случае поддержка <iostream.h> доживает уже последние месяцы не годы: в GCC 4.3 её уже нет совсем (а зато есть поддержка Java 1.5, что для многих важнее).
Ну VS 6.0 - это седая древность всё-таки. Там много чего нет. Я так понимаю что имелось в виду это:

#include <iostream.h>

int main(void) {
  cout << "Здравствуй, Мир!=)" << endl;
}

Ну что же, попробуем:
$ cat test.C
#include <iostream.h>

int main(void) {
cout << "Здравствуй, Мир!=)" << endl;
}
$ g++ test.C
test.C:1:22: error: iostream.h: No such file or directory
test.C: In function 'int main()':
test.C:4: error: 'cout' was not declared in this scope
test.C:4: error: 'endl' was not declared in this scope
$ g++ --version
g++ (Gentoo 4.3.0 p1.2) 4.3.0
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Картина Репина: приплыли...
Кажись мы говорим про DOS))))))
Gentoo !!! Уважаю товарищ генту был моим первым линуксом)
и че? вы думаете, в DJGPP под DOS результат будет иным? Гэцэцэ он и в Африке гэцэцэ
1. GCC 4.3 пока нет в DJGPP.
2. Я не видел ни одного вуза в котором "программирование под DOS" - это было бы "программирование под DJGPP". Обычно это неумирающий Borland C++ 3.1, глаза б мои на него не смотрели.
Да не спорю в DOS C++ версии 93 года.
Но для изучения основ программирования и алгоритмов этого более чем достаточно.
Неужто вы дадите на растерзание новичкам STL? Я думаю они и без неё прекрасно обойдутся.
STL - это базовая вещь в C++. Во всяком случае в современном C++. Если вы хотите чего-нибудь "попроще" - возьмите Python, Ruby или, на худой конец, Java. Но не мучайте людей убожищем под названием Borland C++ 3.1! Да, 15 лет назад это был самый крутой компилятор C++, но это было 15 лет назад!
Мы говорим про базу! про языко-независимые знания принципов программирования!
И язык с компилятором не имеют здесь ни какого значения ( ну если язык соответствует изучаемой парадигме программирования)
P.S.
Я ни в коей мере не защищая дос и борланд 3.1, я просто говорю, что у них есть право на жизнь в учебных заведениях, и что они вполне подходят для возлагаемой на них роли.
Да ради бога. Изучайте эту базу на любом языке программирования, который для этого подходит. Но зачем изучать то, что уже устарело и никому, в общем-то, нафиг не нужно? Borland C++ 3.1 ужасен тем, что он имеет очень мало отношения к современному C++ - и дело даже не в том, что человек не получает навыков использования STL (как можно писать на C++ не используя даже базовых вещей типа shared_ptr?), а в том, что он усваевает совсем другой язык, который ему представляют как C++. С++ - он как английский: ужасен, но всюду распрострамнён и иногда незаменим. И в этом смысл его изучения. Но когда изучают C++ с использованием Borland C++ 3.1... Это всё равно как если бы на курсах английского языка вас учили бы староанглийскому. Да, для чтения манускриптов в оригинале - самое то, но как бы вы отозвались о своих учтелях после поездки в США (или даже куда-нибудь в Европу) с такими "базовыми знаниями"? Уверен - цензурных слов было бы немного.
Полностью с вами согласен.
P.S.
Бесспорно STL очень мощная библиотека, но
можно прекрасно и без неё обойтись.
P.S.S.
Обычные указатели как то дисциплинируют))
как бы вам так помягче сказать, у вас функция main должна возвращать int, но return'а в теле функции нету, поэтому если компилятор пропустит такой код, то это наоборот плохо
Компилятор обязан пропустить такой код - это не Java. Лучше, конечно, "return 0;" написать, но это не суть. Суть в том, что Borland C++ и ISO C++ - две очень-очень большие разницы. В случае когда используется Pascal хотя бы нет самообмана.
Какое отношение имеет тип функции к платформе, под которую компилируется это счастье? Что плохого вы нашли в том, чтобы обучить основам на том же самом паскале под дос? Откуда вы знает, что все потом будут писать программы именно под win, а не под *nix? Те знания, что дают в основе, пригождаются под любой осью и любым языком программирования, как мне кажется.

А вот в том, что вы не поняли строчки void main(), вина исключительно ваша - достаточно было почитать 30 страниц любого учебника по C.
Ой нетрожте вы паскаль. Писал тут двум симпатичным первокурсницам лабу на паскале (онлайн, под носом у препода) обрыдался... =(
Начнем с того, что обучение в гос. учебных учреждениях предпологает, что ты будешь работать на Рос. вооружение. А там windows и не пахнет, Dos в лучшем случае.

P.s. в институтах не знаю, но в школах уже начинают с VBA.
Простите, но написанное вами - чушь. Обучение в моём государственном ВУЗе совершенно не предполагает моей работы на рос.вооружение. Кроме, пожалуй что, военной кафедры, однако и там все всё понимают и на нас в виде лейтенантов вобщем-то и не претендуют.

А Dos-ом в вооружении и не пахнет (по-меньшей мере на том что стреляет и думает куда и как стрелять, а так же на том что отвечает за связь, координацию и тп), вы, судя по вашему посту думайте что там не винды, потому что компьютеры не тянут...

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

VBA в школе станет хорошо в тот момент, когда родители каждого школьника смогут ему домой купить лицензионный MS Office за 200 долларов, а до тех пор лучше изучать Паскаль. Тут ведь дело в концепциях и алгоритмах, так ведь можно и с 1С в школе начинать, только вот школьники знать ничего не будут в итоге.
Единственная версия DOS, которая до сих пор поддерживается (FreeDOS) включает в себя все исходники. У вас есть возможность всё проверить. И в отличие от здоровых операционок типа Windows или GNU/Linux их количество таково, что их не так сложно вычитать...
ну, во-первых МСВС появилась раньше чем FreeDOS, а во-вторых почему-то сомневаюсь, что изменения, необходимые для того чтобы условный Эльбрус-90микро на процессоре МЦСТ заработал с этой операционкой, внести будет проще чем написать новую. Посему вычитывать их исходники никто не будет.
да) оч забавно кстати) Но всё-таки он не PC, так что имхо фотошопят они в своём НИИ на досуге)
Кстати говоря с МСВС знаком по наслышке - вполне возможно что графический интерфейс копирует интерфейс Win95
вики о МСВС:"....В качестве среды рабочего стола используется elk, основанный на Equinox Desktop Environment...."

вики о Equinox Desktop Environment:".....Эта рабочая среда в основном копирует стандартный вид интерфейса Microsoft Windows....."

так что скорее всего на скришноте-то не винда
>МСВС
это линух допиленный под нужды наших военных.
Конечно Ваше обучение может не предполагать работы на рос. вооружение, но программу на кафедрах составляют исходя из этих потребностей.

Винды там не может быть именно по причине бэкдоров
ОС потенциального противника приходится использвать т.к. своей нет.

Я тоже за паскаль, VBA не есть хорошо.
На каких кафедрах (кроме военной :))? Понятное дело что знание многих предметов можно применять и в военных целях, а изучение остального скинуть на то, что "это интересно - вот и преподаём".

ОС потенциального противника используется там где надо бумажку распечатать или презентацию сворганить. Это не военные, это бюрократы и казнокрады :-D
P.s. в институтах не знаю, но в школах уже начинают с VBA.
А смысл? Изучать язык, с которым неизвестно что произойдёт в будущем (никто не знает - будет VBA заменён на VSTO/VSTA, не будет. Как пример языка удобного для программирования - тоже не годится (тут лучше Python/Ruby или Java), так что... зачем? Зачем обучать людей тому, что им никогда в жизни не пригодится?

Когда я заканчивал ВУЗ я твёрдо понимал что вот есть курс алгоритмов (которые вечны и которые мне пригодятся так или иначе) и есть курс программирования (на которых мы изучаем какую-то чушь, которая к реальному программированию не имеет ни малейшего отношения, так что большого смысла в из изучении нет - но учить надо ибо выгонят, если "хвост" будет). Жаль что с тех пор ничего не изменилось.
>Dos в лучшем случае
даже боюсь спросить, что в худшем )
Какая разница в какой среде учить программированию. Ведь учат именно мышлению, а не "программирование под X" (подставить нужное).
Вспоминаем "программистов на Delphi"... Вот вам, кстати, пример "программирования" не под DOS.
UFO just landed and posted this here
И Microsoft!
Если автор имел ввиду MS-DOS.
А что программировать можно и не под Дос и не под Виндос, ни у одного дискусанта мысли не закралось?
Проблема правильная, но изложена немного наивно. Писать под DOS, Windows, *nix этому надо учить только после того как научили программировать. Платформа, а по большому счету, и язык програмирования - вторичны.
Проблема в качестве изложения. Если преподаватель не объяснил что void main(void) - означает программа не возвращает значений - это плохо.
Проблему преподавания я поднимал здесь: http://maxh0.habrahabr.ru/blog/43529.htm…. Обсуждение было показательным. Все кричат караул - что делать не знает никто.
Сейчас осваиваю Мандриву. Так, что не досом единым жив преподаватель. К осени, Бог даст, разберусь, а там посмотрим. Фри-паскаль ничем не хуже турбо (как говорят.)
/виртуальный плюс - т.к. нету возможности поставить полноценный, а хотелось бы даже не один/
(ОТ: Раз разговор зашел о Фри - не знаю, неудобен он для меня, хотя бы потому, что толком не доделан, нередко висит на программах, которые на Турбо спокойно летают - к тому же, медленнее и не с таким, имхо, хорошим дебагом. Зато очень, очень нравится то, что Free можно поставить почти на всё, что угодно)
Подытожу комментарии - более того, я с ними согласен:

Учат не программировать под DOS - учат составлять алгоритмы. DOS при этом удобен тем, что под ним доступны основные функции, которые применяются при составлении программ под практически любую другую систему. С таким же успехом можно учить под Юникс - но он гораздо менее популярен среди тех, кто начинает знакомиться с программированием, материал, имхо, легче воспринимается в более знакомой среде.

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

Курсы программирования под какую-то конкретную платформу и/или на каком-то конкретном языке - это другое, причем оно подразумевает наличие некоторых знаний из вышеуказанного предмета.

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

лично мне програмирование под M$ даром не нужно,програмирование в консоли дает лучшее понимае основ програмирование
Через какое время конкретно, вы считаете, автор будет писать на C#?
Это я к вопросу о вашей руке. Прикольный будет сувенир ))
дело в том, что до вас пытаются донести понимаение всяких-разных алгоритмов, поиски там бианрные, нечеткие и прочие, деревьев обходы, пути в графах и т.д. зачем вам окошки-апишки? вам основы вбивают. чтобы разницу между int и void улавливали ;o)))
А может лучше "основы вбивать" в среде, которая не требует мелочной борьбы с жёсткими ограничениями DOS? Даже если мы говорим о такой элементарной вещи как сортировка, то мы либо ужимаем себя в 64K (иначе приходится воевать с сегментной архитекторой) - и тогда даже пузырёк работает мгновенно, либо изучаем кучу вещей не имеющих ни малейшего отношения к "основам" и только забивающих зря мозги студентам. Давайте ещё изучим сортировку на магнитных лентах - между прочим довольно большой раздел в классическом труде Кнута...
Вас учат программированию, пусть хоть с QBASIC-а начинают :) Потом уже под винду в Делфи компоненты на форму понатыкаете и будете считать себя крутым программистом ;)
Почитайте Кнута, там никакой винды нет, там внутренний язык, на котором приводятся примеры алгоритмов и что теперь, в топку его?
При всём моём уважении к Кнуту я не могу считать его книги хорошим учебником. Справочник - да, если вам нужно в чём-то досконально разобраться - разумеется, если вам нужно что-то изучить... нет уж - лучше Кормен...
А меня когда-то вообще учили программировать всяких роботов обходильщиков лабиринтов и рисовальщиков лабиринтов на ЕС 1841. Что-то типа:

пока справа_стена
  вправо
конец пока

И я считаю, что это нормально. Тут стоит цель научить думать алгоритмически, объяснить назначение основных конструкций любого языка программирования — циклы, условные переходы т.д. И эта цель успешно достигается даже с такими ресурсами.
Да, лабиринты - прикольная штука. У меня, помнится, такое было с ящиками, которые возить можно было :)
На первом курсе нас учили писать консольные программы, и не для того чтобы мы всю жизнь писалди под дос а для того чтобы мы понимали основы языка. При этом никто не ограничивал в средствах хочешь пиши d старом добром досовском Borland c 3.11 хочешь в Visual Studio хочешь в Borland Buildure. Просто опыт обшения с одногрупниками показывает что поначалу досовское иде, не перегруженное функциями, гораздо проще для первоначального знакомства, и затем проще переходить в Гуишные иде.
UFO just landed and posted this here
а почему меня ни в школе ни в университете не учили программированию под DOS?
в школе был паскаль - идеальный учебный язык.
в универе преподавать начали сразу на С - наверное, самого совершенного языка.
про DOS вообще никто ничего не говорил. в лекциях часто упоминалась ОС UNIX и примеры комманд под неё.
я всегда использовал vim + fpc или gcc, в досе ниразу ничего компилить не приходилось.
Никто не мешает писать void main(void) на любой операционке.
Если вам пофиг на аргументы и на код возврата - можно и не писать.
Максимум варнинг словите.
Вообще правильное програмирование - это использование стандартный библиотек( а их очень много( буст будем УЖЕ считать стандартом например) ) либо написание и дальнейшее использование враперов(на теже треды)

Да и в любой случае 90%.. не 98% програминга - это програминг.
А АПИ зависимый кодинг - это так, мелочи :)
Помнится, на первом курсе и меня мучали Паскалем... архаизм жуткий, оставляет после курса впечатление дикой отсталости отечественных университетов.

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

Пускай люди хоть научатся пользоваться произвольным компилятором без IDE. А то некоторые даже и не знают, что за зеленой стрелочкой Build кроется какой-то Makefile...
ну какая разница FPC или Turbo Pascal на первом курсе? когда учат матрицы умножать или, может быть, синтаксический анализатор написать, между этими компиляторами разницу заметить трудно.
другое дело что FPC не содержит IDE, что создаст много неудобств многим студентам.
Вообще-то содержит
(http://www.petesqbsite.com/sections/express/issue21/freepascal.png)
Кроме того, есть Lazarus - клон Delphi
FPC содержит даже две IDE: текстовую и RAD (a-la Delphi). Это вы какую-то не ту версию использовали.
интересно, сколько использовал fpc, а о существовании IDE кроме лазаруса не знал :)
Почему "какая разница"? Зачем студентам привыкать к безвременно покинувшим мир программе и языку? Turbo Pascal мертв. FPC - жив.

Я бы и язык другой предложил, чтобы полученные навыки можно сразу применить в деле. Почему, к примеру, не Питон? Живой язык, сделать можно все, что угодно; к IDE конкретному не привязан. Достаточно высокого уровня, нет непонятностей, как в C/C++; простой, проще Pascal.

Pascal к следующему уже курсу В ЛЮБОМ станет для студента просто синим экранчиком в памяти, а Питон - полезным инструментом.

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

к тому же, сейчас никто на самом деле ничего серьёзного писать на любом паскале не будет.

питон намного сложнее чем паскаль и С для новичка, так как требует навыков абстрактного мышления. да и человек, который начинает изучать программирование с питона, может никогда так и не понять как это работает. почему бы тогда не С# или ява? :D

я считаю что первые несколько лет достаточно изучать только C, а про паскаль давно пора забыть.
Паскаль будет по проще C. Это как начинать с "великого и могучего" Perl ;)
Разница в скорости: у меня была лабораторная работа по различным видам сортировок, так в FPC скорость была раз в 10 выше чем в TP, поэтому мне кажется для студента хорошо писать на TP, чтобы можно лучше понять какие алгоритмы лучше.
Есть такая классная утилитка-измеритель - time. Если все же в аудитории или дома у студента будет какая-нибудь ось из нечастных, то всегда можно просто сделать:

time program

Если уж приперло производительность сравнивать.

А вообще да, конечно, Cи - более чем разумно.
Какая разница, в какой среде компилировать и выполнять программы? Задача учебных заведений в данном случае — научить программировать, а научиться собирать бинарники для той или иной платформы было и остается делом 15 минут. Just google it.
Смысл есть, учат программировать, а не под дос.
Мне кажется смысл в ДОСе так же в том, что его повесить достаточно просто при неумелом программировании, это приучает к некоторой культуре, а тупому набору кода.
При неумелом программировании нормальные среды убьют вашу программу, DOS, скорее всего, ничего не заметит - но с небольшой вероятностью умрёт сам. Для обучения первое - явно полезнее.
Проблема восприятия. Человек приходит, видит черное окошко и думает: "мои преподаватели старые пердуны, ничему нужному не научат, замем мне ос, написанная, когда меня еще не было..." В результате часть моих одногруппников, толковые ребята, ушли от программирования в сторону веб-дизайна, или администрирования, или еще куда
Еще одна проблема в графике. Подключить графические режимы и файлы шрифтов к борландовскому паскалю достаточно непросто, мягко говоря. А задание "постройте график функции" встречается часто
Вообще-то продключить графику всегда было делом 5ти строчек при наличии библиотек. Так что если преподаватель пишет эти 5 строчек перед заданием, то проблем с этим быть не должно :)
Sign up to leave a comment.

Articles