Болталка PascalABC.NET


#836

И правильно говорит.


#837

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

Он говорит совершенно справедливо, только нужно слушать тему, а не вырывать фразу из контекста. Речь о том, что если алгоритм решения задачи требует множественных вставок и/или удалений элементов, то правильнее использовать не массив, а списковую структуру. Т.е. односвязный или двусвязный список в зависимости о того, что и как планируется делать с данными.

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


#838

ну, если школьная - то там так и имеется в виду, по 1 элементу копировать. Но если решать её более продвинуто - то или списки, или неуправляемая память.

SetLength создаёт новый массив и копирует в него содержимое старого. List тоже это делает, но только если объёма во внутреннем массиве не хватило (или если изменили свойство Capacity). А раз он делает это не каждый раз - он быстрее.


#839

А что мешает писать на Паскале в стиле C++, кроме недовольных комментаторов?


#840

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

Вот что писал Н.Вирт по поводу компилятора: “«Наш первый компилятор Паскаля был реализован на семействе компьютеров CDC-6000 и написан на самом Паскале.”. Это с учетом того, что C давно уже существовал.


#841

@Bronislav вот ещё, если хотите закопаться в код - исходники списка. Я, кстати, таки напутал с константами. Изначально 0, при добавлении первого элемента - 16, а потом *=2, каждый раз когда не хватает обёма.


#842

Вот именно. А в ABC.NET уже лучше.


#843

Это как?


#844

Мы уже обсуждали, что на олимпиадах и конкурсах пока что мало где позволяют писать на PascalABC.NET. Чтобы не отсеять тех, кто на C++ пишут.


#845

Так… Pascal СDС-6000 позволял вставлять фрагменты на ассемблере и обращаться к фортрановским модулям.


#846

Не знаю даже, хорошо это, или плохо. С одной стороны - плохо, язык хороший не допускают. С другой - хорошо, не допускают ведь потому, что он хороший соперник C++. :slight_smile:


#847

У С++ (кстати, как и и Питона) огромное лобби “наверху”. Но здесь не место для обсуждения подобных вещей.

Он ни разу не соперник. У них ниши совершенно различные. Но если С++ не проталкивать в школы на углубленку хотя бы, кое-кто лишится кормушки.


#848

Если Вирт писал Паскаль на Паскале, то кто разработал Паскаль?


#849

Он разработал язык и реализовал компилятор напару с Йенсеном. Вам что, в школе на информатике не давали историю языков программирования?


#850

Представьте себе, нет. Давали что-то типа того, что Паскаль разработал Вирт в 1968 году…


#851

Вот и я о том. Зачем же спрашивать, кто разработал Паскаль?


#852

Да это я и так знал. Вашу формулировку просто не понял.


#853

Это не моя формулировка, это прямые слова Н.Вирта (в переводе, конечно).


#854

@Gleb по моему в этот раз вы перестарались. Есть конечно и сообщения не по делу, но зачем сразу всё выкидывать.


#855

Болталку тоже читают. А в помощи новичкам этому не место.