Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/95: Рейтинг темы: голосов - 95, средняя оценка - 5.00
39 / 39 / 20
Регистрация: 23.04.2012
Сообщений: 462
Записей в блоге: 2

Pascal vs C++

24.12.2012, 11:47. Показов 23808. Ответов 209
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Раньше программировал на языке паскаль. Теперь перехожу на С++, изучаю по книге Дейтлов.
Так вот у меня вопрос, в чём отличие между Паскалём и С++? Я слышал, что возможностей у с++ больше чем у паскале, так какие же эти возможности? Лично я пока их не замечал (может быть потому что пока начинающий) кроме сложности языка с++
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2012, 11:47
Ответы с готовыми решениями:

Turbo Pascal, Pascal ABC, Free Pascal, PascalABC.NET - в чем разница?
Всем привет, решил изучать Паскаль, но на форуме увидел 4 его версии - Turbo Pascal, Pascal ABC, Free Pascal, PascalABC.NET и не понял, в...

Различия трансляторов Pascal ABC.Net и Turbo/Borland Pascal
Пожалуйста, объясните различия между компиляторами Pascal ABC.Net и Turbo/Borland Pascal

Нужно перевести программу с Turbo Pascal в Pascal ABC.NET
Вот есть программный код , но он для турбо паскаля, помогите перевести его в АБС.NET Program graphics; uses graph; var...

209
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.12.2014, 20:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от BAADF00D Посмотреть сообщение
Сказать ты можешь много чего. Только правдой твои слова от этого не станут. А вот я тебе говорю правду, за что ты и негодуешь. Ты говоришь "знаю c#, но не очень хорошо". Это значит "не знаю", потому что достаточно знать управляющие конструкции и возможности контроля, равно как и уметь сравнить их с другими языками, чтобы сказать знаешь ты язык или нет. Я тебе предлагал узнать, но ты преподчел снова как попугай повторять одно и то же.
Этот бред честно говоря, пора бросать пить товарисЧ.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
19.12.2014, 21:15
Цитата Сообщение от BAADF00D Посмотреть сообщение
Это значит "не знаю", потому что достаточно знать управляющие конструкции и возможности контроля
Их вообще то в принципе десять причем две сводятся к goto, три if-goto и одна к серии if-else if, еще две можно свести к goto и indirect goto, но это уже извращение. Но в языках есть отличия и кроме этого, а именно работа с указателями, новомодная динамическая агрегация и т.п. К примру можно выучить управляющие конструкции С++ но при этом писать на С++ как на паскале (имеется в виду стандарт-паскаль), но это еще не знание языка.

Добавлено через 14 минут
Цитата Сообщение от BAADF00D Посмотреть сообщение
Код Lisp
1
(mapcar #'(lambda (item) (+ item 1)) '(2 2 2)) -> '(3 3 3)
Можно на С++ такое же организовать типа
C++
1
List.AddAll(1);
или в виде функции
C++
1
List=IncList(1,TList(2,2,2));
или даже так
C++
1
List=ListProcessAll(loAdd,1,TList(2,2,2));
Не забывайте что любая функция того же лиспа тоже имеет свой исходный код. Если его нет не лиспе, значит он на С++
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
19.12.2014, 22:46
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вообщето к составному оператору - т.е. множеству операторов
Э нет, множество как минимум является первоклассным объектом, в отличие от. Множество может быть неупорядоченным, в отличие от.

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

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну да, еще и динамической агрегацией. Толку от нее.
Чем? Что за динамическая агрегация?

А так, навскидку:
- GC и, как следствие, отсутствие деструкторов
- дженерики работают совершенно по-другому, нежели шаблоны
- отсутствие невиртуальных методов
- только один вид наследования (против 3-х в плюсах)
- но наличие интерфейсов и отсутствие множественного наследования
- отсутствие явных ссылок и указателей
- примитивные типы не равносильны объектным (например не могут использоваться в качестве параметров дженериков)
- автоматический боксинг и анбоксинг
- "статические" исключения

Добавлено через 2 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
или даже так
Вообще, что Common Lisp, что C++ тут никуда не годны.

Haskell
1
map (+ 1) [2,2,2]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Не забывайте что любая функция того же лиспа тоже имеет свой исходный код. Если его нет не лиспе, значит он на С++
Что это вообще значит?

Добавлено через 3 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
или даже так
Вообще, велосипед изобретать не надо. Есть стандартный путь, правда выглядит он как говно, ну да ладно.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
19.12.2014, 23:23
Цитата Сообщение от korvin_ Посмотреть сообщение
Вообще, велосипед изобретать не надо. Есть стандартный путь, правда выглядит он как говно, ну да ладно.
Ну и не пытайтесь тогда расказать какой хороший лисп. Потому что для выполнения этой операции он вызывает именно это гавно

Добавлено через 1 минуту
Цитата Сообщение от korvin_ Посмотреть сообщение
Что это вообще значит?
То что комманды скриптовых языков кто то выполняет. и этот кто-то написан на С++

Добавлено через 6 минут
Цитата Сообщение от korvin_ Посмотреть сообщение
Чем? Что за динамическая агрегация?
Возможность добавить/удалить метод объекта в runtime
Цитата Сообщение от korvin_ Посмотреть сообщение
- дженерики работают совершенно по-другому, нежели шаблоны
Ну не знаю шаблоны пользую редко.
Цитата Сообщение от korvin_ Посмотреть сообщение
- отсутствие явных ссылок и указателей
Как на меня минус, но тоже зависит от задачи.
Цитата Сообщение от korvin_ Посмотреть сообщение
отсутствие невиртуальных методов
Учитывая специфику (байт-код и виртуальній проц) там невиртуальным взяться неоткуда. Хотя насколько понимаю они там в большинстве своем динамические а не виртуальные.

Добавлено через 13 минут
Цитата Сообщение от korvin_ Посмотреть сообщение
- но наличие интерфейсов и отсутствие множественного наследования
Множественное наследование применять пришлось только один раз - порождал клас Ферзь одновременно от классов Ладья и Слон. В случае необходимости можно заменить контейнерными классами.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
19.12.2014, 23:38
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Не забывайте что любая функция того же лиспа тоже имеет свой исходный код. Если его нет не лиспе, значит он на С++
https://en.wikipedia.org/wiki/... anguage%29
Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older (by one year).
Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
Этот бред честно говоря
А что Вам так не по душе? Кроме эмоциональности по большому счету все верно.

Добавлено через 41 секунду
Цитата Сообщение от korvin_ Посмотреть сообщение
Что это вообще значит?
Что человек просто не в теме.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
19.12.2014, 23:56
Цитата Сообщение от castorsky Посмотреть сообщение
Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older (by one year).
По тем временам - Если его нет не лиспе, значит он на FORTRAN или assembler

Добавлено через 3 минуты
Цитата Сообщение от korvin_ Посмотреть сообщение
Ага, только для начала вызубрить тысячестраничный стандарт, понять все нюансы применения и комбинации различных фич и научиться постоянно держать их в голове.
Я ж говорил - все у вас пасквилянтов задом наперед. Сначала надо дорасти мыслью к примеру до перегрузки операторов, а потом посмотреть в справочнике каким образом это реализовывается.

Добавлено через 11 минут
Цитата Сообщение от korvin_ Посмотреть сообщение
Вообще, что Common Lisp, что C++ тут никуда не годны.
Код Haskell
1
map (+ 1) [2,2,2]
А если ни значения [2,2,2] ни размер [] ни 1 ни даже + или - не известны во время компиляции, тогда как?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
20.12.2014, 00:16
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
По тем временам - Если его нет не лиспе, значит он на FORTRAN или assembler
http://racket-lang.org/ написан на себе. Ядро писалось на си.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Сначала надо дорасти мыслью к примеру до перегрузки операторов, а потом посмотреть в справочнике каким образом это реализовывается.
По моему твердому убеждению Вам надо перерасти мысль о перегрузке операторов и прочем.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А если ни значения [2,2,2] ни размер [] ни 1 ни даже + или - не известны во время компиляции, тогда как?
Вам был задан аналогичный вопрос, Вы предпочли не отвечать. Например, лисп макросы. Это совсем не то, что есть в с++, а целая система возможностей.

Добавлено через 6 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Если его нет не лиспе, значит он на FORTRAN или assembler
Не понимаю, правда, как с этим утверждением выигрывает с++. Он тоже на си писался и долгое время экстендед си и оставался.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 00:49
Цитата Сообщение от castorsky Посмотреть сообщение
Не понимаю, правда, как с этим утверждением выигрывает с++. Он тоже на си писался и долгое время экстендед си и оставался.
А он и есть extendet c. из названия следует.
Цитата Сообщение от castorsky Посмотреть сообщение
По моему твердому убеждению Вам надо перерасти мысль о перегрузке операторов и прочем.
Вот доперегружаю те операторы которые нужны в текущем проекте и пойду мыслить дальше,но уже не заботясь о том как сложить бульдога с носорогом.

Добавлено через 4 минуты
Цитата Сообщение от castorsky Посмотреть сообщение
Вам был задан аналогичный вопрос, Вы предпочли не отвечать. Например, лисп макросы. Это совсем не то, что есть в с++, а целая система возможностей.
Еще раз какой именно? Может быть просто его не заметил.
С++ сам по себе целая система возможностей, как и любой язык.
Цитата Сообщение от castorsky Посмотреть сообщение
http://racket-lang.org/ написан на себе. Ядро писалось на си.
Вот и я о том же - у любого скрипт-языка есть ядро которое писалось на си. ну или на другом компилируемом языке. Интересно а на чем Вирт писал первый компилятор паскаля?

Добавлено через 6 минут
Цитата Сообщение от castorsky Посмотреть сообщение
Он тоже на си писался и долгое время экстендед си и оставался.
Писалось не ядро выполняющее команды а компилятор. что есть огромная разница
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
20.12.2014, 00:57
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Еще раз какой именно? Может быть просто его не заметил.
Вот и вот.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вот и я о том же - у любого скрипт-языка есть ядро которое писалось на си. ну или на другом компилируемом языке.
То же можно сказать и о с++, так что претензия считается несостоятельной. Кстати говоря все языки что тут приводились компилируемые.

Добавлено через 6 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Писалось не ядро выполняющее команды а компилятор.
Ядро языка (core languge). Какое еще "ядро выполяющее команды"? Интерпретатор? Для всех перечисленных выше языков интерпретаторы и компиляторы написаны на них же.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 00:57
Цитата Сообщение от korvin_ Посмотреть сообщение
И что ты делаешь в этом случае?
Дык писал же на эту тему. Функция может задаваться таблично, может в виде сплайнов, если в виде мат формулы - то парсер в бинарное дерево вычислений со сменным алфавитом занимает 150 строк.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
20.12.2014, 00:57
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Интересно а на чем Вирт писал первый компилятор паскаля?
Не знаю. Я не паскалист.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 01:00
Цитата Сообщение от castorsky Посмотреть сообщение
Для всех перечисленных выше языков интерпретаторы и компиляторы написаны на них же
Чем тогда компилировали первый компилятор языка?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
20.12.2014, 01:03
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Функция может задаваться таблично, может в виде сплайнов, если в виде мат формулы - то парсер в бинарное дерево вычислений со сменным алфавитом занимает 150 строк.
Давайте условно считать что мы знаем КАК (в каком виде) задается функция, но мы не знаем КАКАЯ (сколько в ней аргументов и что она выполняет) это функция.

Добавлено через 32 секунды
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Чем тогда компилировали первый компилятор языка?
Тем же чем и плюсовый
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 01:08
Цитата Сообщение от castorsky Посмотреть сообщение
Тем же чем и плюсовый
Насколько понимаю первый плюсовый компилятор компилировался на с - т.е. на языке компилятор с которого уже существовал
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
20.12.2014, 01:13
Ну как это обычно делается. Сначала транслируем новый язык в уже известный, для которого есть компилятор. Потом на новом языке пишем его же компилятор, транслируем его в известный язык и вуаля, у нас есть компилятор нового языка, написанный на нем же.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 01:26
Цитата Сообщение от castorsky Посмотреть сообщение
Давайте условно считать что мы знаем КАК (в каком виде) задается функция, но мы не знаем КАКАЯ (сколько в ней аргументов и что она выполняет) это функция
Ну и? Как при табличном так и при сплайновом задании все ок. при задании в виде формулы тем более. под парсером имеется в виду модуль который способен преобразовать выражение к примеру
(x-1)&(y-2)|cos(2*10*z^5)-15 в бинарное дерево вычисляюще значения при любых x y и z. хотя количество и имена переменных обычно заданы. Хотя в принципе организовать ввод количества, имен и диапазонов переменных тоже не вопрос.
& и | в данном выражении - R-функции

Добавлено через 5 минут
Цитата Сообщение от castorsky Посмотреть сообщение
Ну как это обычно делается. Сначала транслируем новый язык в уже известный, для которого есть компилятор. Потом на новом языке пишем его же компилятор, транслируем его в известный язык и вуаля, у нас есть компилятор нового языка, написанный на нем же.
Вы ухо тоже чешите обматывая руку вокруг головы? По большому счету тут написанно примерно так: берем компилятор С и пишем на нем компилятор C++.

Добавлено через 4 минуты
ps: кстати функции for() if() while() и т.д добавить в алфавит тоже не проблема. Игрался как то на эту тему с парсером, сделанным для курсака. Как раз дошел до организации скопа, но пора была дипломом заниматься.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
20.12.2014, 01:30
напомню с чего начался этот разговор. То есть Вы в рантайме получине формальное описание функции, сформируете из этого описания реальную функцию и передадите ее в функцию, вычисляющую интеграл? Я Вас правильно понял?

Добавлено через 3 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
берем компилятор С и пишем на нем C++.
Нет же. Берем компилятор си и пишем транслятор из с++ в си, затем на с++ пишем компилятор с++.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 01:46
Цитата Сообщение от castorsky Посмотреть сообщение
То есть Вы в рантайме получине формальное описание функции, сформируете из этого описания реальную функцию и передадите ее в функцию
Ну если скорость ее расчета критична, то можно конечно в машкод преобразовать, и передать указатель. Но пока что хватало бинарных деревьев, а то и просто функций вычисляющих что либо по набору значений(из таблицы, сплайн и т.д.)

Добавлено через 11 минут
Цитата Сообщение от castorsky Посмотреть сообщение
Нет же. Берем компилятор си и пишем транслятор из с++ в си, затем на с++ пишем компилятор с++.
В данном случае разницы 0. Зачем заморачиваться созданием ненужного транслятора который будет достаточно сложен, т.к переводит в язык с большим набором синтаксических возможностей в язык с меньшим набором, если возможностей С достаточно для создания любого компилятора, а тем более в данном случае, т.к. компилятор С++ будет компилить и сырцы на С? Хотя разве что в случае трансляции в С, т.к. все языки являются подязыками С.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
20.12.2014, 02:05
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну если скорость ее расчета критична, то можно конечно в машкод преобразовать, и передать указатель. Но пока что хватало бинарных деревьев, а то и просто функций вычисляющих что либо по набору значений(из таблицы, сплайн и т.д.)
Мы говорим на разных языках. Вы не понимаете зачем это нужно и развиваете
спор
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
я о том что лямбда функции очень удобны например если есть общая функция к примеру интегрирования и туда надо передать подинтегральную функцию известную во время компиляции. У меня обычно подинтегральная функция во время компиляции неизвестна.

Да, это правильный подход и на с++ Вы будете загонять в стек (или кучу) новую функцию из машинного кода!!! Вопрос: зачем нужен такой уровень абстракций, если в итоге мы пишем транслятор математических выражений в машинный код, при этом соблюдая соглашения по вызовам операционной системы и архитектуры процессора?
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Зачем заморачиваться созданием ненужного транслятора который будет достаточно сложен
Затем чтобы реально оценить сложность реализации той или иной возможности нового языка. А затем и необходимость этой возможности вообще.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 02:10
Цитата Сообщение от castorsky Посмотреть сообщение
Вопрос: зачем нужен такой уровень абстракций, если в итоге мы пишем транслятор математических выражений в машинный код, при этом соблюдая соглашения по вызовам операционной системы и архитектуры процессора?
Затем например что эта функция может к примеру генерироваться из ввода пользователя. пользователь мышка по форме клоц-клоц, точка и линия рисовать, потом из этих линия получаются контур, а по этот контур надо считать процесс Ритца напримэр, вай-вай-вай.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.12.2014, 02:10

Нужно перевести код из Turbo Pascal в Pascal ABC.NET
Доброго времени суток. На форуме находил похожие темы, но к сожалению так и не смог разобраться. Помогите пожалуйста перевести код из Turbo...

Есть ли аналог модуля tpdate.tpu (Turbo Pascal) для Free Pascal
Внимание! Нужно срочно узнать название юнита для freepascal, который выполняет функции tpdate.tpu для турбопаскаля!!! Помогите!!!

Из множества выбрать три различные точки по условию -из Turbo Pascal во Free Pascal
Даны 2 множества точек на плоскости. Выбрать три различные точки первого множества так, чтобы круг ограниченный окружностью , проходящий...

Список слов распечатать в алфавитном порядке. В Turbo Pascal или Pascal ABC
Дана непустая последовательность слов, в каждом из которых содержится от 1 до 6 заглавных латинских букв; соседние слова разделены запятой,...

Нужно перевести код с Pascal ABC на Turbo Pascal - рисование работающей мельницы
Вот код, он должен рисовать работающею мельницу. uses graphABC,crt; type point=record x,y:integer; end; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
160
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru