![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
kurzon |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 307 Регистрация: 12.8.2007 Репутация: нет Всего: -11 |
На каком языке больше возможностей работы с строчками?
Это сообщение отредактировал(а) kurzon - 6.10.2007, 18:25 |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 5 Всего: 70 |
шаблонный характер std::string дает очень большой простор для различных маневров, чего нет у опонента
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Больше всего на АСМе.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Esperito |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 2.9.2007 Репутация: нет Всего: 3 |
Голосую за русский язык.
![]() |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: нет Всего: 60 |
ЗА русский это да
![]() -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
kurzon |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 307 Регистрация: 12.8.2007 Репутация: нет Всего: -11 |
Голос прынят за С# |
|||
|
||||
Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
асм полюбэ!
|
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
не, brainfuck получше будет..
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Здесь всё начиналось, а здесь бенчмарк по строкам.
Что же касается возможностей - вопрос бредовый... Единственный известный мне язык, нативно приспособленный к работе со строками, - это perl со своими pcre и т.д. В паскале есть определённый набор возможностей работы со строками, который ты можешь расширить только своими ф-циями. В С++ делай производный класс от std::string или QString(или ещё чего-нибудь) и добавляй к уже имеющемуся набору возможностей что угодно. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
NEW_M_A_N |
|
|||
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 24.5.2007 Репутация: нет Всего: нет |
В принципе не слушай ни кого! Пользуйся тем языком, который лучше знаешь. Ну а вообще посоветую лучше C++. Не потому что им чаще пользуются, а потому что там можно грамотно распряжаться памятью не резервирую место под символы, которых в строке вообще не будет, в отличии от Pascal.
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Чё, правда что ль? ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Ну если говорить о Turbo Pascale, то правда, но едва ли о нем идет речь...
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
doomik |
|
||||
![]() Одинокий волк ![]() ![]() Профиль Группа: Участник Сообщений: 360 Регистрация: 25.10.2005 Где: #vingrad Репутация: нет Всего: 15 |
![]() ![]() -------------------- "Единственный способ изучать новый язык программирования - писать на нем программы." - Brian Kernighan Remember, st1ng3r /server irc.ircline.ru /j #vingrad |
||||
|
|||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: нет Всего: 58 |
Поддерживаю ![]() |
|||
|
||||
MrCherry |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
чем больше в универе долбят поганый паскаль - тем больше я его ненавижу.
ни один человек, который разбирается в с++ никогда не вернётся к паскалю. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Это кто там не знает что String без параметров в Turbo Pascal займет 256 байт, а с параметрами займет столько байт сколько установят?
Причем строка не может занимать больше 255 символов. Если не согласны так хоть поясните с чем. Конечно можно извратиться и работать с указателями, но это неудобно. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Den64 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: нет Всего: 2 |
Раньше я програмил тока на Паскале, я его неплохо знаю. Потом я изучил си. Мне он кажется намного логичнее и проще! В Паскале процедуры лишняя констроукция в си и без неё ниплохо. {} - быстрей писать. В си нинужно писать then. В Паскале строгая типизация - это минус для меня. В си нет тупова булевого типа! % круче чем div, | круче чем or, ! круче not, & круче. for в си намного ближе к низкому уровню и функциональнее В си больше простых типов данных.. Объявлять переменные можно в любом месте, там же и инициализовывать.. В си есть модификаторы. Единственное что в Паскале мне больше нравица это что там . заменяет . -> :: А вопще мне асм больше всего нравица!!! Это сообщение отредактировал(а) Den64 - 16.11.2007, 02:19 --------------------
Инагда пишу звуками. |
|||
|
||||
nerezus |
|
||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
Не будешь же ты писать прикладнуху на С? |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
В паскале нет шаблонов(может в Delphi добавили?), там возможно только процедурное программирование и объектно ориентированное(с ограничениями), на си++ можно писать к примеру в функциональном стиле (если есть желание), возможно обобщенное программирование и т.д.
Если в паскале нет к примеру сборки мусора, то с этим ничего не поделаешь, в программе на с++ можно при желании использовать сборку мусора, можно использовать подсчет ссылок на объекты, и тд, ограничений никаких нет. |
|||
|
||||
esperant0 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: нет Всего: 14 |
Прикольно, вы в начале призываете никого не слушать, а потом даете совет. Так вас ведь то же не надо слушать. Согласно вашему совету. А значит не надо слушать что не надо никого не слушать, А значит всех надо слушать. Тогда придется и вас послушать. А вы говорите никого не слушать. Вобщем вы сказанули противоречивую сентенцию. Противоречия как и тавтологии смысла не несут Добавлено через 1 минуту и 12 секунд Возможности одинаковы в обоих языках. Иба оба языка эквивалентны машине тьюринга. Это исчерпывающий ответ на ваш вопрос. Добавлено через 6 минут и 14 секунд
чушь. Колбасов после С++ вернулся к паскалю. Творожников вернулся. А вы говорите не один. -------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
||||
|
|||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
согласен не аргумент не аргумент субъективно этот критерий не может дать оюъективный ответ, какой язык лучше/хуже в разных ситуациях по-разному детский сад функциональнее да не понял только причем здесь низкий уровень char, short, int, long, float, double в Pascal?
согласен только копилятор обычно все равно выделяет место под стековый фрейм для хранения всех локальных переменных (с целью оптимизации) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
Но в С++ компилятор вызовет конструктор именно там, где объявлена локальная переменная, а не при входе в функцию. Благодаря этому в программах на с++ можно использовать идиому raii. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Однобайтовые char, byte, Shortint Boolean Двубайтовые word, SmallInt Integer (зависит от процессора) четырех байтовые Longword Longint Pointer (Зависит от процессора) 8 ми байтовые Int64 С плавающей точкой Single - 4 байта Real - 6-8 байт Double - 8 байт Comp - 8 байт (целое длинное считается сопроцессором ) Currency - 8 байт (4 фиксированных знака после запятой) Extended - 10 байт Файлы множества set of <> 1-32 байта Перечисляемый тип Строка Массив ----------------------------- В паскале действительно Файлы, строки, массивы, множества являются фундаментальными типами. Сомнительно, что в Си больше встроенных типов.
В Си введена концепция блоков, в паскале ей противопоставляется концепция вложенных функций. Т.е. переменные вложенных функций не видны во вне. И не всегда хаотически разбросанные переменные это плюс. Я несколько раз имел с этим проблемы, когда копировал блоки кода, возникала путаница со счетчиками цикла. Из серьезных плюсов. Гибкая работа с указателями. Макросы (в С это действительно нужная штука) Гибкая работа с CRT Прозрачный механизм работы переменными объявленные как static Прозрачный механизм ввода/вывода в стандартные потоки Неудобства Отделенный хедер от реализации, при этом сложнее навигация, компиляция, вынужденные директивы для исключения повторного включения реализаций. При этом не полностью соблюдается инкапсуляция модулей как программных единиц, так как весь код попадает в один сегмент при компиляции. Правда можно использовать namespace, но это усложняет вызов и усложняет обращение к глобальным переменным модулей. Приемущества паскаля В pascal е этому противопоставляется ясная и последовательная схема приоритета видимости переменных при возникновении конфликтов имен и доступа к переменным с меньшим приоритетом. Строковые операторы работающие над типами строк (строка ведь встроенный тип как Integer). В конце, концов объекты. Стандарт Pascal был в последних версиях определен как Pascal with Objects. (не путать с Object Pascal). Простейшие объекты были уже тогда. Пусть у них не было механизма виртуальных методов, но уже были секции public/Private т.е. инкапсуляция + механизм наследования. Некоторые успели поработать даже с объектной Turbo Vision. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
пожалуйста, пусть вызывает ![]() одно другому не мешает, да я и не говорил про конструкторы ![]() если уж говорить об удобстве, то объективно, принцип определения переменных в любом месте кода, удобнее кроме того, в С никто не запрещает определять переменные до начала, собственно, кода в Pascal - жесткое ограничение так что по всем параметрам, Pascal тут в минусе Добавлено через 10 минут и 28 секунд
если говорить об ELF - формате, то там для каждого исполняемого файла или разделяемой библиотеки существует лишь один програмный сегмент кода, который отображается компоновщиком (ядра или пользовательского уровня) на адресное пространство процесса секций может быть много, но все они расположены в пределах одного програмного сегмента последовательно друг за другом (возможно, с выравниванием) я не вижу смысла во множестве програмных сегментов кода зачем для кода каждого из модулей создавать отдельный сегмент? какие проблемы это может решить? Это сообщение отредактировал(а) MAKCim - 16.11.2007, 12:45 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: нет Всего: 92 |
по мне так гораздо удобней (хедеры отдельно) в большинстве случаев мне нафиг не надо заглядывать в реализацию в смысле весь код? компилятор проходит по каждой единице трансляции отдельно.
чем усложняет? Это сообщение отредактировал(а) zkv - 16.11.2007, 13:11 |
||||
|
|||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Это уже детали реализации языка конкретным компилятором, к самому языку это не относиться. Я подразумевал именно логическое структурирование модулей. Расположение модулей в экзешнике не регламентируется стандартом. Согласен, но отчасти. Сама возможность механизма приводит к необходимости проверки, но это не такой уж принципиальный вопрос. После небольшой практики хочеться добавить регистрозависимость имен в плюс. Но не потому что возможно объявления типа HWND hwnd; Я считаю создание переменных отличающихся регистром неправильным. Важно, то что это заставляет строже относиться к именам и не писать их как угодно. Например в паскале можно написать Hwnd1 или hWnd1, а это путает. Добавлено через 8 минут и 25 секунд
у pas модулей реализация просто ниже и отделена в специальную секцию, так что это совсем не мешает просматривать описания
Че делает компилятор мне не интересно, это уже особенность реализации, важно что он рассматривает все модули как единое пространство. Необходимостью каждый раз писать префикс. использование using namespace я не рассматриваю так как это сводит на нет все его приемущества в данном модуле. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
а как еще рассматривать? как тогда компоновать объектные файлы? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Ну например, ставить в соответствие каждому заголовочному файлу свой модуль реализации. Компилировать его так, чтобы он был самодостаточным и лишь линкер подставлял адреса функций/переменных из внешних модулей. А то ведь описать класс можно в одном заголовочном файле, а реализовать в cpp шнике с другим именем или вообще в нескольких. Т.е. модульность лишь призрачная. Меня по началу удивляло, чего это он не хочет компилить *.h файл ![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
объектный файл самодостаточен каждый объектный файл имеет таблицу релокаций, т. е таблицу, которая описывает сущности, значения которых до момента компоновки не известны компоновщик рассматривает объектные файлы как самодостаточные сущности, которые могут быть связаны только посредством релокаций т. е как раз получается описанная тобой схема Добавлено через 1 минуту и 46 секунд
кто мешает (так же как и переменные в С) реализовать методы в нужном *.cpp файле? ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 1 Всего: 329 |
в паскале быстрее ставить точку, нежели эту несуразицу -> Добавлено через 1 минуту и 4 секунды бред, ибо код в паскале более читабелен! Добавлено через 2 минуты и 1 секунду ага, особенно для баз данных ![]() Добавлено через 8 минут и 35 секунд
ну вот с одной стороны с++ позволяет объявлять переменные где и как попало (ну может я утрирую), а с другой стороны обязывает нас чётко писать имена переменных!!!!!!!! это минус |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
А как тогда в паскале объявить переменную для блока(типа "где попало")? |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Паскаль процедурно ориентирован, значит во вложенной процедуре. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
это - несомненный плюс.
бред только для малознакомого с С/C++. Иначе придется объявить бредом всю математическую нотацию, заменив словами "принадлежит", "существует" и т.д. |
||||
|
|||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Не все так красиво, в математике все однозначно, а тут нет. Тот же оператор деления. В паскале и бейсике операторы целочисленного деления и деления с плавающей точкой различаются, потому при делении 2х переменных/значений всегда тип результата очевиден, чего не скажешь про С/С++. А вот на счет логических операторов соглашусь, побитовый and и and сравнения это разные операторы и тип результата разный, потому называться должны по разному. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
Недостатки есть в любом языке. Ну, кроме матерного
![]() Так что вопрос только в том, насколько перевешивают достоинства. Лично мне в С++ больше всего нравятся три вещи: 1. Поддержка нескольких парадигм программирования. Причем хорошая поддержка, а в грядущем стандарте станет еще лучше. 2. Возможность при необходимости сделать все что угодно (например, наличие reinterpret_cast), но поощрение делать красиво и правильно. 3. Выразительность. Возможность на языке не только писать код, но и проектировать программу - сильная вещь. Pascal лишен некоторых недостатков С++, но не имеет упомянутых достоинств. имхо. |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 5 Всего: 70 |
для детей младшего дошкольного возраста. Не где попало, а там где потребовалось. А от нечувствительности к регистру вся соль, от объявления переменных в одном месте, теряется. |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Зато "несуразица" предоставляет намного более широкий диапазон возможностей ![]() Субъективное мнение. Мне вот читабельней кажется плюсовый код. Опять же на любителя. Что читабельней: findAll или findall? А ведь паскаль не запрещает написать второй вариант ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: нет Всего: 37 |
ИМХО бессмысленно сравнивать процедурный язык, созданный для учебных целей и промышленный ОО-язык. Стоит м.б. Delphi vs C++ тогда обсуждать. (или Algol vs C++
![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Sartorius, я об этом уже говорил, тут даже не определено в какой из спецификаций "Pascal", "Pascal with Objects" или "Object Pascal".
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
не бред ибо согласно [c++2003: lex.key] и даже [c99: 7.9](но в си только при подключенном iso6446.h ![]() ахх, ну и разумеется #define and && можно сделать и в более старых си. Вот и будет читабельность. а в паскале с препроцессорами вообще говоря тяжко. Мне вот всякие input.readable() and output.writeable() c and'ом тоже читаются легче чем с &&.
йап-йап. в паскале нет аналогов шаблонов. только за это его дóлжно мучить пока он ими не обзаведётся{как уже было с перегрузкой операторав} или пока он не умрёт. [Хотя если достать какой-нибудь макропроцессор{типа m4}, то в принципе можно кода нагенерировать, но это полумера]
а можно этот пункт подробнее?. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
Можно. Язык программирования не может (да и не должен) быть полноценным языком проектирования, но язык может поддерживать напрямую некоторые принципы проектирования. В отношении С++ это прежде всего поддерживаемые парадигмы. Про это я сказал в п.1, но относительно технических средств. То же верно и в отношении проектных средств: программист может обдумывать задачу с той точки зрения, которая в данный момент приемлема, используя синтаксис С++. Вот вам простой пример разного подхода к одной задаче. Задача - вычисление определенных интегралов функций одного переменного. Идея - имеем классы для определения подынтегральных функций и нечто собственно для вычисления интеграла. ООП:
Обобщенное программирование:
Я пока это писал видел только общий план. В принципе написанное будет работать (совсем немного доопределить, что б компилилось и линковалось). В подробности шаблонов ООП и Templates я не вникаю, я их просто использую, думая о задаче. Здесь много нерешенных проблем, например погрешность вычисления, эффективность и т.д. И я могу спокойно их обдумывать, выражая мысли на бумаге, которые уже являются правильным кодом, его мне не придется переписывать. Только изменять и дополнять. При этом код получается самодокументируемым. Вам ведь понятно что там к чему? И это достигнуто малыми средствами. Самим языком, а не комментариями и выкрутасами с макросами. Чисто технически - мне импонирует возможность написать интерфейс класса, не реализуя его, и опробовать его в программе. Она, конечно, не будет линковаться, но будет компилироваться. Т.е. я могу попробовать на зуб свой интерфейс еще до реализации. И изменять его не вдаваясь в подробности реализации. Я не утверждаю, что в других языках так нельзя. Но так выразительно, и что бы еще потом получилось эффективно - мало где. И напоследок. С++ не поддерживает напрямую некоторые вещи. Но его легко научить это поддерживать. Посмотрите на boost - он почти целиком из таких расширений состоит. Особенно выразительные примеры - пример Dimension Analisys в MPL и библиотека parameters. Т.е. для конкретной задачи мы можем создавать инструменты, используя которые приобретаем новые семантические средства, синтаксически оставаясь в языке. Немного сумбурно получилось. Если што непонятно готов развить. ![]() |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
baldina, непонятно только одно: какой из языков ты считаешь невыразительным - С++ или Паскаль?
![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
Я не говорил, что Pascal невыразителен (хотя чистый паскаль стоит сравнивать с С а не С++).
Я говорил за что мне нравится С++ Добавлено через 2 минуты и 12 секунд Религиозные войны вообще дело такое... Тонкое, как и восток. Остроконечники и тупоконечники.
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Спасибо, теперь понятно
![]() Полностью с тобой согласен - С++ очень выразительный язык. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 1 Всего: 329 |
||||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Может быть тебе ещё и For кажется читабельней, чем for? 0_o -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
Здесь говорили что система модулей в Delphi лучше чем cpp - h файлы, мне -же кажется что наоборот, в плюсах можно разделять реализацию и объявления.
Это может быть очень удобно, если умеешь пользоваться, можно спрятать реализацию класса, спрятать его члены, оставить только объявление базового класса и фабрику для создания производных классов. В паскале-же "все кишки наружу". |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Нет, в паскале, в случае предоставления только dcu(если мы говорим про турбо паскаль, то это вообще tpu
![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
Возник тут у меня вопрос, можно-ли на паскале реализовать смарт поинтер, или к примеру запретить создавать объекты в стеке, или наоборот в куче? Есть ли там возможность реализовать собственную стратегию управления памятью (на плюсах я могу переопределить new delete).
Возможно, что это слишком субъективно, но все программы на паскале которые я видел, были какими то неказистыми и невыразительными, несмотря на синтаксис самого языка. Возможно это мне так кажется, так как на той же площади монитора помещается меньше строк кода на паскале, а это хуже для читаемости чем даже птичий язык С++? имхо паскаль имеет самый раздутый синтаксис... |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
К вопросу темы (про строчки).
Огромный плюс С и С++ - отсутствие стандартных операторов ввода-вывода, и реализация посредством стандартной библиотеки. То же относится и к строкам. Родные строки в паскале конечно удобней С-строк. Но если расширять их функционал - в силу более простой семантики (массив символов - более общее понятие, чем "строка") различные преобразования в С++ проще и эффективнее. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Знаем мы все эти расширения, тормозят они нипадецки. Встроенные вещи, на то они и встроенные, что оптимизированы и работают быстро, так что со строками в стиле C ничего не сравниться. Вся эта хваленная универсальность постоянно выходит боком сильными тормозами. Потому что универсальность делается в ущерб эффективности. Железки мощные нехай работают, а как выходишь на максимальную загрузку так сразу все видно. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
std::string - тормоз? Хотел поспорить на пиво, передумал. Достаточно погуглить, что бы нарыть тестов тех самых расширений. |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Гм. Гм. Ну чёрт с ними с «расширениями», но как можно назвать быстрым представление строк, в котором для определения длины строки требуется O(N) времени. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Так в критических местах ее можно сохранить в локальной переменной, чтобы постоянно не вычислять, а если посмотреть на набор функций, то они ориентированы на выполнение всех операций без вычисления длинны. Т.е. делаем операцию пока не встретим нуль или отседова n символов. Зачастую можно обойтись без операции вычисления длинны или вызов производить пренебрежительно редко. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Так в std::string длина и сохранена. Точно так же, как в ваших ansi/widestring ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
"расширение" std::string имеет метод size(), имеющий временную сложность О(1).
Под быстротой С-строк, понятно, понимается эффективность доступа к отдельному символу, при этом не т ребуется каких-либо преобразований. Скорость работы строк паскаль и std::string (а также С-строк, если их грамотно использовать) полагаю одинакова. А вот скорость работы специальных классов, обрабатывающих строки, в момент преобразования в стандартную строку, может быть разная. Для std::string, например, это происходит без каких-либо накладных расходов. Добавлено через 5 минут и 3 секунды Конкретно касаемо расширений для строк Pascal vc C++. Т.к. в паскале длина строки всегда хранится вместе со строкой, любые манипуляции, меняющие длину строки обязательно приводят к операциям, корректирующим значение длины. Нетрудно придумать практические примеры и написать для них класс С++ (или использовать строки С), где вычисление длины строки и её изменение будет происходить реже. Для миллиона таких операций разница в скорости будет видна на глаз. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
В делфях точно (не знаю как во всех паскалях), есть полная поддержка сишных строк. Во FreePascal думаю тож есть. Т.е. объявление, выделение, адресация инкремент указателей, даж некоторые стандартные функции. Это довольно удобно при работе с WinApi или если скажем урезать модуль System для получения ультрамаленьких приложений. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
Почему всегда когда речь заходит преимуществах Pascal - Delphi, то приводят в пример именно строки. Неужели больше нечего? std::string может в отличии от AnsiString использовать механизм copy on write, если приложение часто копирует строки, то это дает заметное преимущество в скорости. Причем у меня есть выбор какой реализацией string пользоваться, ненравится cow - не используй, вместо string можно использовать vector, если хочется можно сделать свой string совместимый с stl, а у вас особого выбора нет
![]() Добавлено через 1 минуту и 22 секунды с такой аватарой меня так и тянет паскаль защищать ![]() |
|||
|
||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Понял че сказал? С каких пор копирование по значению быстрее передачи по ссылке?
Почему нет? Если говорить о Object Pascal, то никаких проблем создавать объекты. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: нет Всего: 92 |
||||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
Да, понял. Кто мешает использовать указатели и ссылки на объекты-строки. При копировании по значению(глубокое копирование) AnsiString копируется полностью, а std::string (при использовании идиомы COW), копирует только ссылку на объект. Далее при попытке изменить одну из строк происходит реальное копирование. С ссылками на строки можно работать так-же как и в паскале.
А могут ли эти объекты выглядеть как встроенные типы данных - Integer, String и пр.. |
||||
|
|||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Мешает то что их удобство и состоит в том, что они создаются в стеке, а значит во выходу из функции токая строка уничтожается.
В точности описал механизм AnsiString ![]()
Выглядеть понятие весьма растяжимое и специфичное. Сильно зависит от компилятора и его возможностей. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
cow к передаче параметров по ссылке/значению никакого отношения не имеет.
да че вы ссоритесь? ObjectPascal, FreePascal, Delphi... Понятно, что все востребованные языки развиваются, не только паскаль, но и С++. Вот только... Есть стандарт С++. Мы собственно говоря про С++ остаемся в его рамках. Идите теперь почитайте про паскалевский стандарт. А про "поддерживает то, поддерживает сё..." - если в языке есть оператор print или тип string я хочу ими пользоваться. ибо они есть стандартное свойство языка. Очень трудно понять и объяснить, что "вот этой фичей пользоваться не надо, она убогая, используйте вот это расширение языка для этой среды или вот эту библиотеку проприетарного производителя" |
|||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
тоже самое можно сказать и про std::string, память под строку выделяется в куче, в стеке хранится только указатель на ее начало + специфичная для конкретной реализации информация. Даже если принять что std::string и AnsiString реализованы одинаково, то все равно, std::string - это stl контейнер, и для него есть туева хуча стандартных алгоритмов. Так-что можно сказать что он более функциональный.
Вот в этом и проблема, если он встроенный то его или невозможно изменить, или это сделать очень сложно. Такая реализация может в многопоточных приложениях вызывать утечку памяти при копировании(глубоком) между потоками(либо каждая строка должна содержать примитив синхронизации). Ты ничего не подозревая копируешь строку, думая что другой поток будет использовать копию, а он использует тот-же объект. |
||||
|
|||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Это старый стандарт. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 5 Всего: 70 |
||||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
+1
Добавлено через 3 минуты и 27 секунд кстати название темы: Pascal sv C++, что бы это могло значить ?? |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Alexeis, если автоматический объект, созданный на стеке, выходит из области видимости, то это вовсе не означает, что он освобождает какие-то ресурсы(маленькую область стека мы в расчёт не берём). Вот, к примеру, shared_ptr - он ничего не уничтожают, если есть другой shared_ptr, ссылающийся на тот же объект
![]() Блин, что за марафон с аватарками? Я теперь всех путаю ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
верно, есть стандарт 1999 года, но что-то не очень его раздают, видимо секретный.
![]() в открытом доступе удалось онаружить только Draft 1993, есть там что-то про объекты даже Добавлено через 3 минуты и 31 секунду но кстати на http://www.iso.org/ из опубликованных значится только ISO 7185:1990 Information technology -- Programming languages -- Pascal |
|||
|
||||
Daevaorn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 5 Всего: 70 |
у тебя они включены? ![]()
есть даже ревизия 2003го. Все официально продаются комитетом за небольшую плату. А драфт можно без проблем найти и по-современней, было бы желание... |
||||
|
|||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
ладно, стандарт есть. я рад за паскаль, правда. даже был удивлен сходу не обнаружив концов.
ну так в последнем стандарте read, write, string исключили? вряд ли. значит все рассуждения остаются в силе. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
а ты присоединяйся ![]() |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Сдать аватарку в аренду? ![]() Кстати, есть здесь добрые люди, которые смогут присобачить к моей аватарке новогоднюю шапку? ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
После такой тупости да еще поддерженной кучей народу считаю, что мне здесь обсуждать нечего... -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 5 Всего: 70 |
||||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
ну вот, дельфиста обидели...
Alexeis, тут изначально обсуждать то нечего было ![]() Развивай ЧЮ |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
а зря. такая неориентированность на длину строки приводит к некоторым серьезным проблемам с безопасностью. gcc к примеру любит орать warning'и если кто-то хочет использовать gets. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
точно к таким же проблемам ведет неправильное значение длины строки |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
А что, её так легко запороть? выйти за границы буффера гораздо легче. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
archimed7592, ПРЕВЕД!!!
Добавлено через 1 минуту и 8 секунд я как то странно себя чувствую ![]() |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
как легче умереть, прыгая с крыши, или подставляя голову под падающие кирпичи? направление разное, результат один, рецепт общий - обходить и крыши и кирпичи. Если это С строка, имеется оконечный 0, достижение которого контролируется, то имхо разницы никакой. |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
контролируется? То-то же strncpy не оканчивает строку нулем при нехватке места. Причем самое смешное, snprintf строку нулем заканчивает если места нет. Кстати. В ЖЖ упаминались generic'и в дельфи. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Mayk, пожалуйста, не нужно путать мощнейший метаязык в виде шаблонов С++ и какие-то дженерики, которые, что в java, что в .net'е, что в Delphi основаны на интерфейсах. В дотнете, по сути, никакой разницы между интерфейсом и дженириком нет.
Да и вообще, ни одна runtime технология никогда не сравниться с compile-time шаблонами. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Согласен, не сравняется [ровно как и с++ не сравнится с немрловскими макросами]. Однака положа руку на сердце, оно ей часто надо? При дженериках приведение типов в контейнерах более не требуется. Это хорошо. А то что дженерики обрабатываются в рантайм жалко конечно, но не более того. Задачи в которых требуется тьюринг полнота шаблонов на практике имхо достаточно редки. [Не могу вспомнить и одного примера, использующего мощь метаязыка, но думаю что они есть]. Задачи в которых шаблоны делают много чего нечитаемого в stderr'е достаточно часты. Это уже имхо авторов STLFilt'а. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Не так давно я на С# делал фасад для работы с AutoCAD'ом через COM. Считывался XML файлик, в котором рисуемые сущности могли находится либо внутри block, либо внутри layer. Вся разница в том, что в первом случае нужно вызывать ф-цию myBlock.AddXXX, а в другом modelSpace.AddXXX. Мне досталась какая-то кривая версия автокада, в которой AcadBlock и AcadModelSpace не имели общего интерфейса. В итоге выхода было два: дублировать код полностью, либо написать обёртки над этими объектами. Ессно я выбрал второй вариант, ибо он кошернее и мне требовалось работать всего с 15-20 ф-циями(т.е. я просто делал минимальную обёртку). Но, если бы это был С++, то никаких обёрток не понадобилось бы т.к. С++ инстанцирует шаблон в compile-time и сразу может проверить наличие или отсутствие нужных методов. А в дотнете - сиди и делай copy-paste. Позже понадобилось добавить ещё около 20 ф-ции, благо я порылся в иерархии, поэкспериментировал и понял что можно явно приводить оба объекта к какому-то магическому IAcadBlock3(а зачем нужны первые 2? ![]() Ну а если посмотреть масштабнее - могло бы быть 150 ф-ций, причём, разных поддерживаемых сущностей могло бы быть не 2, а штук 15 и, по закону подлости, они не имели бы общего интерфейса. В таком случае я просто написал бы скриптик, генерирующий обёртки, но что же это за шаблоны, если их главную ф-цию приходится выполнять самому, пусть, порой и в полуавтоматическом режиме... Добавлено через 14 минут и 57 секунд
Ну а что касается этого - возьми, хотя бы, те же traits... Или, вот я сейчас достаточно плотно работаю с геометрической библиотекой CGAL. Она совершенно не привязана к типу, представляющему число. Это может быть и double и числовые типы из GMP и что угодно другое. Вот понадобилось мне использовать неточные сравнения(в моём случае это была точность до 1e-6). Написал я класс, в котором все операторы сравнения перегружены для неточных сравнений - и вуаля, теперь, сравнивая два вектора я могу быть уверен, что не получу отрицательный результат из-за неточности double. Можно сделать подобное на дельфёвых интерфейсах? Несомненно, но, представьте себе, какой получиться оверхед из-за, во-первых, вызовов ф-ции, да ещё и виртуальных вызовов(когда ни один линкер, не в силах ничего оптимизировать). Ещё пример: в этой библиотеке написана обёртка над mpz_t из GMP, которая немного кривовата. Я элементарно унаследовался от этой обёртки, не меняя, по сути ничего - просто сделал forward конструкторы. Потом, чтобы обёртка, над Gmpzf начала правильно считать sqrt, я унаследовался от соответствующих traits, где изменил всего один функтор Sqrt, заменив его вычислитель на нужный мне. И все эти унаследования и прочие извращения никак не сказались на производительности т.к., к примеру, forward-ctor - просто инлайнился(как, скорее всего и сам конструктор, на который происходил редирект). Анлогично и со всем остальным. Кстати, когда-то и где-то мы делали бенчмарк vector vs new. Угадай кто остался в пролёте ;). Шаблоны - это мощь. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
хотелось бы узнать, как strncpy может определить нехватку места. ![]() этот пример скорее подтверждение моего поста насчет переменной, хранящей размер, а не опровержение. Добавлено через 1 минуту и 48 секунд archimed7592, +1 вобщем С++ рулит. чтд ![]() |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
На самом деле очень просто. "Решение этой задачи предлагаю решить читателю самостоятельно" ![]() Добавлено через 1 минуту и 58 секунд Просто если задуматься, почему strncpy не пишет в конец 0, то можно достаточно быстро прийти к ответу на вопрос почему sprintf пишет, а strncpy нет ![]() ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
archimed7592, если б так все было просто...
смотри сюда:
Добавлено через 2 минуты и 26 секунд да и вообще, имея void f (char *str, size_t size) { // делать здесь предположения о реальном размере памяти, на который указывает str дело неблагодарное } Добавлено через 3 минуты и 52 секунды а итог простой - все на плечах пользователя. и забытый 0, и неправильно определенный size есть проблемы одного рода |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
baldina, нет, нет. Мы не берём в расчёт неправильный размер, указанный заведомо большим, чем реальный.
Что же касается меньшего размера - ты можешь считать, что всё правильно, ибо, если идёт просьба записать не больше 6-ти байт в 10-байтный буффер, то значит оставшиеся 4 байта для чего-то нужны и для строки не предназначается. Ну а незаписываемый 0 в случае strncpy - подтолкну направление в котором нужно мыслить: что возвращает strncpy? А что возвращает snprintf? Добавлено через 53 секунды Само собой. Просто иногда на плечи пользователя возлагается чуть больше, а иногда - чуть меньше ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
/archimed7592, ну ты и графоман блин, я столько не осилю
![]()
c# и дот нет? А тот addXXX можно было вытащить и вызвать через рефлекшн?
В том числе и шаблоны c++[особенно пока variadic template arguments не появятся в компиляторах]. Правда в гораздо меньшей степени. ![]()
йап, в том то и дело что в строках аля паскаль никаких дополнительных переменных не надо. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Можно, но это, IMHO, ещё большее извращение. Имея Boost.Preprocessor это не проблема.
Ты думаешь их нет? ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
baldina |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
я только это утверждал. так что, archimed7592, мы спорим об одном и том же разными словами. речь шла о возможном переполнении буфера. более я ни с чем не спорю. (хотя в скобках замечу, что семантика strncpy, чем является возвращаемое значение, к возможному переполнению никакого отношения не имеет. отношение имеет правильное или неправильное использование, корректная или некорректная программа) Добавлено @ 17:29
Я кстати недавно тестировал std::vector vs boost::array. gcc и VC++. Результат был одинаков и несколько меня обескуражил - если размер указывать заранее, то vector быстрее (правда совсем ненамного). Скурпулезное рассмотрение выявило причину. Получается немного разный ассемблерный код, вот за счет этого и разница. Но кто бы мог подумать! Это сообщение отредактировал(а) baldina - 18.12.2007, 17:30 |
||||||
|
|||||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Boost.Preporcessor сам по себе проблема трудочиаемости имхо. йа пробовал на нём сделать
но испугался этих жутких макросов. Благо ~40 строк pythonа генерирует такой хедер без проблем. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
не знаю господа
я вот капитально на Python подсел более мощного во всех отношениях языка я не видел + мощная интеграция с С чего еще надо? ![]() ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
так и запишем что в борьбе с++ vs паскаль победу одерживает питон.
![]() кстати, чисто посмеятся, гугл находит почему паскаль лучше с.
![]() ![]() ![]() * пристыженно уходит учить Ерланг * -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Наконец-то... Развели, понимаешь, войну Pascal vs C++ в канун 2008 года. Хорошо хоть не Алгол против Фортрана
![]() И да будет системный код наш на Си, сервера на Эрланге, а прикладная логика на Питоне. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
||||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
а зачем? ![]() Python самодостаточен а для низкоуровневых вещей есть С вся проблема С++ (точнее компиляторов) - использование разных алгоритмов трансформации имен символов для генерации объектных файлов т. е код на С++ довольно тяжело интегрировать с Python Это сообщение отредактировал(а) MAKCim - 19.12.2007, 17:28 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Void, MAKCim, шуток не понимаете что ль?
![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
честно говоря не понял, в чем заключалась шутка ![]() вполне себе серьезное высказывание, правда со смешным смайлом хотя может у тебя просто настроение было хорошее ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
пару месяцев назад читал статью, о тенденциях в программировании, в частности речь шла о том какие системы программирования как развиваются..
там говорилось о том, что количество проектов использующих Python, Lua, ruby и т.д. растет быстрее всего, чуть медленнее Java - .NET, С++ занимает свою нишу (что-то около 20%), ну а Паскаль скоро будут помнить только старожилы, так как он займет свое почетное место среди таких языков как Cobol, Fortran и пр... ps возможно он сохранится только в Российских ВУЗах ![]() Это сообщение отредактировал(а) Lazin - 20.12.2007, 12:28 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Поскорей бы... Не дай Б-г. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
чисто циферки. Некоторая статистика по freshmeat [собираеццо не регулярно].
pascal на fm'е действительно не очень живой. Это сообщение отредактировал(а) Mayk - 20.12.2007, 13:17 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
Fiyanov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 255 Регистрация: 19.4.2007 Где: Kazakhstan->Te mirtau Репутация: нет Всего: 2 |
Delphi умирает уже не первую пятилетку господа. Смотрите правде в глаза. Он всегда отставал от VS. Но признаков смерти никода не было. Более того этот самый Delphi (сейчас это Developer Studio) вытащил Борланд из долговой ямы. То есть его покупают. Вот уже 2007й вышел. Правда не в полной редакции но всё же. Не думаю что делфи когда нибудь умрёт. Это глупость. Каждый день появляються новые тихнологии с новыми языками и находяться люди которые их осваивают и дают им жизнь. Делфи же уже старичёк, у него хватает фанатов. Всё зависит от мастерства!
|
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Ну-ну! Это совершенно разные вещи. Дженерик (в дотнет) - это особое понятие на уровне рантайма (ВМ), что кстати не отменяет шаблонов и прочих механизмов встроенной кодогенерации (всяких там макросов...) со стороны конкретного языка. Физический класс инстанцируется при первом использовании дженерика. Для reference-типов - один (ну там мож где тип тупо храниться - дотнетчики поправят ![]() Дженерики из гуд - для языков, имеющих возможность создания типа на лету (читай - имеющих ВМ/интерпретируемых/etc.). Что касается питона - вот тоже давно нравился и нравится, но вот юзать - совсем не юзаю (за исключением waf-а ![]() ![]() Это сообщение отредактировал(а) Любитель - 31.3.2008, 03:39 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
При том, что при написании дженерика ты должен перечислить все интерфейсы, которые тебе необходимы(или получишь объект с которым ничего не сможешь сделать - даже необходимость делать new ты должен указать явно). Др. словами ничего не мешает написать не менее гибкий код просто напросто используя интерфейсы. А если метод не интерфейсный(ну не догадался разработчик в интерфейс засунуть), то от дженерика пользы столько же сколько от копипаста ![]() Просто я на опыте сталкивался, когда несколько нужных мне классов не имели интерфейса и пришлось мне заниматься копипастом... Так что не надо "ля-ля" про инстанцирование. Если бы оно было, то ничего не мешало бы использовать рефлексию и сделать перечисление интерфейсов лишь как вспомогательный инструмент в случае дженерика. Та же ситуация, насколько я понимаю, и в Java. Добавлено через 3 минуты и 16 секунд А, ну да, по сути я не утверждаю, что это одинаковые вещи. Я лишь хотел сказать, что никаких преимуществ при использовании дженериков(вместо интерфейсов) нет... Ну, разве что, синтаксис немного иной - на любителя ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
duck typing рулит
![]() |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Ну да - всегда можно обойтись боксингом/анбоксингом + интерфейсами + кастингами. Страдает производительность.
Протесть дженерик-коллекцию интов и обычную. Увидишь разницу. А тут вроде наоброт - гораздо хуже. Дженерики - лишь мелкое удобство. |
|||
|
||||
archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
А где разница то? 1. В синтаксисе 2. В подсказках IDE(будет показывать, что аргумент ф-ции не object, а int). 3. В просто смешной защите от дурака(нельзя будет передать ничего, кроме int). Но здесь, если отвлечься от конкретно коллекций и перейти к чему-нибудь, что будет пользоваться не только operator=, к примеру, выставлять в требованиях некоторый интерфейс дабы с обобщёнными объектами можно было бы как-то взаимодействовать, то переписав код на интерфейсы ты получишь ту же самую "защиту от дурака", которая будет выражаться в ругани компилятора при попытке использовать объект, который не поддерживает требуемый интерфейс. Вывод: это лишь синтаксический сахар. Вполне возможно, что in a nutshell это нечто большее, но предоставляемый ф-ционал - лишь сахар, пудра, пыль. Примеру ради: как не используя рефлексии реализовать аналог следующего плюсового предиката?
Сразу приведу пример шарповых классов:
Этим кодом я хочу подчеркнуть, что оба типа(KeyValuePair1 и 2) НЕ имеют общего интерфейса предоставляющего доступ к value(и не могут иметь, если конечно value не превратить в банальный object - от чего убегали к тому и придём). Это сообщение отредактировал(а) archimed7592 - 1.4.2008, 21:08 -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 4 Всего: 232 |
archimed7592, можно конечно и так:
В этом случае есть общий интерфейс. Код громоздкий, сам знаю ![]() З.Ы. в дженериках вывод типа хромает, но мелкомягкие вроде собираются что-то с этим делать (Рихтер упоминал про это). З.Ы(2) в холиварах на винграде - как на военных заводах времён перестройки: что ни попробуют собирать, но вместо кастрюль и сковородок выходит автомат Калашникова. Так и здесь - какой язык ни начни сравнивать с другим, хоть OCaml с Haskel - всё равно в итоге перемываем кости .NET/C#... Про паскаль и С++ забыли уже. ![]() ![]() ![]() -------------------- ![]() |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Ну дык я то просил без общего интерфейса ![]() ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Ещё раз - дженерики это не механизм кодогенерации! Это возможность рантайма.
Насчёт "потесть" - я про поизводительность. Непосредственная работа с интами или постоянный боксинг/анбоксинг. Добавлено через 1 минуту и 48 секунд Йа хде? ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 1 Всего: 329 |
||||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Собственно выпустив C# и Java несостоятельность Си++ уже признали. Остается только подождать, пока в Паскале не уберут запрет на операции над указателями без приведения к целому, после этого Си++ можно выносить.
![]() ![]() -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Операции над указателями типа PChar разрешены, так легче переносить код из C++.
Delphi активно обменивается фичами с C#, а не С++, потому шаблонов ждать не стоит. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
Lazin |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
с каких это пор, у них совершенно разные области применения ![]() ![]()
Паскаль? А, это-то, что пылится на одной полке с Cobol-ом? ![]() ![]() Так что, там еще и указатели нужно к целому приводить ![]() ![]()
Вот именно "как", компилятор С++ на порядок(и вряд-ли на один ![]() ![]() а они тут причем? ![]() язык паскаль - практически умер ![]() ![]() но паскалистам этого не объяснишь, так как:
даже когда это что-то лучшее осталось в прошлом ![]() |
||||||
|
|||||||
Beltar |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Я конечно понимаю, что очень хочется верить, что последний вменяемый язык на земле исчезнет, но он по-прежнему продолжает развиваться, а вот C#-Builder благополучно накрылся ибо нефиг, раз Delphi .NET есть.
Наличие или отсутствие стандартов, на Паскаль они вроде тоже были, глубоко и искренне пофигу, тем более, что язык для RAD избыточен для программирования контроллеров. Что включать в стандарт будем? Соответствуют-ли стандарту все плюсовые компиляторы еще вопрос. Сделает кто-то Ada Studio сравнимую с Delphi и VS будут Аду массово использовать, нет значит не будут. Решают не столько качества языка сколько его поддержка крупной фирмой. Еще Fortran каким бы отстойным он по сравнению с европейским Алгол-60 ни был, в Америке цвел и пах, только из-за стараний IBM. Модула-2 может и лучше Паскаля, но где она сейчас? Только потому, что Borland не выпустила ее на рынок. Совершенно стихийным было развитие Бейсика и современный VB это уже совсем др. язык. Куда более стихийным, чем у Паскаля, который ориентировался на Borland.
Даже если компилятор Паскаля будет работать в 10 раз медленнее, я бы не советовал гнуть пальцы по поводу короткого синтаксиса Си, т. к. первая же компиляция программки в 5000 строк просто сожрет все время, сэкономленное на наборе за все время создания программы. Так что каким местом сложность стала преимуществом мне непонятно.
Как и у сишников т. к. смещения по памяти типа адрес+4 могут стать некорректными. Причем скорее именно у сишников. Пасквилянт еще подумает перед тем, как извращаться. [quote]Жуть, на нем кто-то еще пишет?[quote] Ну если вы не в курсе, то что я могу поделать. У меня вот знакомых пишущих на Си меньше, чем на Delphi.
Ну просто такую мелочь как класс стека (мне хватает для этого массива и Top:Integer) или отсутствовавший в VCL до Delphi 10 пустяковый компонентик иконки в трее при желании можно махом написать самому или всегда найти. ![]() ![]() Не поймите меня превратно. Я ничего не имею против STL и даже за нее, меня всегда удивляло почему подобная мелочевка не идет в VCL (или по крайней мере я про нее не знаю). Но подобную мелочь всегда можно найти. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||||||||
|
|||||||||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
Вы еще кипятите? |
|||
|
||||
archimed7592 |
|
||||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
![]() У сишников, в отличии от паскалистов, ptr + 4 - это сдвиг на sizeof(ptr) * 4, так что не надо "ля-ля". Есть конечно моменты, на которые нужно обратить внимание при портировании кода, но их ограниченное кол-во и сложность портирования не так уж и высока. Ню-ню ![]()
А как, вообще Delphi к паскалю относится? С тем же успехом можно под одну гребёнку и C++, и Java, и PHP и т.д., ибо у них синтаксис от Си происходит. Есть выбор: писать самому, допустить ошибки, отладить, снова отладить и т.д. Потом выяснится, что алгоритм неэффективен, переписать, отладить, снова отладить и так до бесконечности. Или же можно взять готовый, обобщённый алгоритм(к контейнерам то же самое относится).
А ты поищи, поищи. Давно это в паскале(да, лан, пусть, даже, в Deplhi) шаблоны появились, чтобы эта мелочёвка вообще в природе появилась? ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||||
|
|||||||
Lazin |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
я тебе про одно, а ты мне про другое, я о том, что при работе с указателем как с целым может возникнуть проблема с переносом на 64-х битную архитектуру, например представим что в С нету арифметики указателей (прям как в паскале ![]()
код нормально отработает при компиляции под 32х а если скомпилировать под 64х то то-же будет работать, почти всегда ![]()
ну вот недавно собирал библиотеку - 30 000 строк (Си), секунды 3 или 4 ![]() ![]() И вообще ты не о том, вот есть к примеру в Delphi шаблоны, а может ли он самостоятельно выводить типы шаблонных параметров, а есть ли в Delphi(Pascal) аналог шаблон-шаблонных параметров (это когда в шаблон передается не тип, а другой шаблон) и тд... Шаблоны в Delphi - это элементарная параметризация типов, а в С++ это тьюринг полный язык, на котором можно писать программы, которые будут выполняться во время компиляции и вычислять значения и типы.
наверное потому-что STL использует шаблоны, и без них очень кривой STL получится ![]() ![]()
Вот был сначала Visual Basic, дожил он до 6-й версии, а потом взял и исчез, прекратил развиваться, а все из-за того, что он зависел от одной известной компании. Это сообщение отредактировал(а) Lazin - 6.5.2008, 08:11 |
||||||||||
|
|||||||||||
jackfrost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 16.11.2007 Репутация: нет Всего: нет |
![]() ![]() ![]() Люди, все эти языки фуфло, ну сколько уже лет математикам приходится писать один и тоже цикл для вычисления банальной суммы: for (double i=1; double tmp=0 ,i<N,i++) {tmp+=1/i; } неужели сложно сделать что-то типа: sum(i,1,N,1/i); или даже sum(i,1,N, sum(j,1,N,1/i+1/x(j) ) ) ну это же проще пареной репы!!! веть вообще это можно было-бы решить макросом, если бы в Си составной оператор мог бы быть выражением: result = ( for (double i=1; double tmp=0 ,i<N,i++) {tmp+=1/i;} , tmp ); идиотизм писать математику на языке заточенным по работу с железом. А все эти паскали явы и ады не далеко ушли... таже фигня.. ..а те замечательные изменения которые приняли в С99 - пошли коту под хвост. Никто не хочет поддерживать уже почти 10лет, по IT меркам почти вечность.... Это сообщение отредактировал(а) jackfrost - 19.6.2008, 13:50 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
jackfrost, используй пакеты Математика, матлаб и проч. Там все предельно просто.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
jackfrost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 16.11.2007 Репутация: нет Всего: нет |
МАТЛАБ пользую для прототипирования алгоритмов, а писать потом все равно все на Си приходится. кстати действительно из смешного - в МАТЛАБе нат такой операции ![]() если под знаком суммы стоит функция строго одного аргумента, то нужно раскрывать все в цикл... |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
а почему нельзя написать функцию sum? ![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Потому что она без счетчика. Без счетчика такая функция есть, по крайней мере в модуле Math. Выбирайте на любой вкус ![]()
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
jackfrost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 16.11.2007 Репутация: нет Всего: нет |
да не об этом речь,
вот о каком синтаксисе мечтают люди, а функции тут не причем - просто препроцессор долженбы развернуть этот в код: for (tm1=0,i=1,i<N,i++ ) { for (tmp2=0,j=1,j<M, j++) { tmp2+=1/i+1/x(j); } tmp1+=y(i)*tmp2; } res=tmp1; а через функции никак - ибо выражение 1/i+1/x(j), должно быть вычесленно до вызова функции... может в Яве или в Си-шарпе есть механизмы сделать нечто подобное? собственно для этого достаточно чтобы сложный оператор (цикла) имел значение и мог быть правым значением в присвоении: res={for (.... } для рекурентного вызова... ну и механизм макросов как в Сях или желательно помощнее.... всех делов... Это сообщение отредактировал(а) jackfrost - 19.6.2008, 15:57 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
jackfrost, так вполне можно написать в Delphi. Смотри x(j), y(i) - это функции. Функции можно передавать в качестве параметра в другие функции. Точнее функцией будет 1/i+1/x(j) .
Добавлено через 1 минуту и 55 секунд Хотя пожалуй вложенно не получиться. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Кому сложно? Это делается элементарно. В одну строку. Но не на си и не на паскале. Ф-циональные языки и их особенности не запрещали.
Добавлено через 1 минуту и 54 секунды
Посмотри в сторону Nemerle. Там есть очень мощная система макросов. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
||||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
вообще написали бы еще в теме Глагол vs С++
![]() -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
jackfrost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 16.11.2007 Репутация: нет Всего: нет |
нафих глаголъ и лямбду с питоном,
вот нашел решение, работает только в GNU C и его портах: #define SUM(n,N0,N,eq) ({double tmp_##n=0; for (int n=(N0);n<(N);n++) {tmp_##n+=(double)(eq);} tmp_##n; }) Понятно, что такой код, далеко не безопасен и далек от оптимальности, но на этапе прикидки сложной математики просто супер!! Теперь можно писать запросто вот так: main() { double A[2][3]={{1,2,3},{4,5,6}}; double sumall=SUM(k,0,2, SUM(n,0,3, A[k][n]) ); printf("%f\n", sumall ); } такчто Си рулит и по сей день. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
покойся с миром
![]() |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
На этапе прикидки сложной математики, нужно и использовать соответствующие инструменты, от Матлаба до Хаскеля, Окамла, Схемы и Питона с соответствующими пакетами. Как только произнесены слова «можно не очень оптимально», Си отправляется в лес. Можно, конечно, одним топором всё рубить, только зачем. Впрочем, дело вкуса. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 2 Всего: 162 |
Господа паскалисты, а на каких платформах уже научился работать ваш компилятор? x86_64, arm, sparc, mips, powerpc?
|
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
JackYF, призывает древние силы
![]() иначе как древними паскалистов назвать сложно)))) |
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
JackYF,
freepascal на всех известных... ![]() -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
древние силы окончательно пробудились!
![]() |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
На всех-всех? Даже на z80 с 48 кб памяти? -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Да не ребята, на железке паскаль не рулит, и С++ тоже. Трудно с малыми ресурсами писать высокоуровневый код. Получается либо С, либо сиподобный С++.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
jackfrost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 16.11.2007 Репутация: нет Всего: нет |
уже писал, что даже МАТЛАБ не позволяет писать ТОТ пример нормальным математическим языком.. а вот на Си - оказывается можно.... да и потом 90% математики что сейчас пишется в мире идет для встраиваемых систем, там естественно ничего кроме Си и быть не может по определению. |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
![]() ![]() У меня на мобильнике есть джава. На етокене - тоже джава. Больше подобных девайсов у меня нету. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
||||
|
||||
jackfrost |
|
||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 16.11.2007 Репутация: нет Всего: нет |
а у меня на спектруме вообще был БЕСИК и что?? никто на яве не будет веть делать реализацию например WiFi протокола ? )))))) я про эту математику собсвенно говорил.. |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
Mathcad тебе поможет, Мatlab он не для этого ![]() синтаксис Си можно исковеркать как угодно, главное что-бы ваши коллеги не знали где вы живете ![]() Добавлено через 42 секунды это не математика |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
По определению, может быть С++ с урезанными возможностями. В основном где могут стараются реализовать компилятор С++. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Ну хорошо, Матлаб пролетает, давно я его не трогал. Остаются языки с list comrehensions. Haskell, к примеру:
В точности как просили. И операторы в функциональных языках являются выражениями, ага. Функции высшего порядка, немного синтаксического сахара и вуаля. Это сообщение отредактировал(а) Void - 25.6.2008, 19:57 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
Какие то ограниченные вы люди... последнее время увлекаюсь скриптовыми языками... еще что-то пишу на делфи, например в последнем проекте на делфе использую скриптовой движок PHP ... практически 70-80% в проекте будет написано на PHP, а делфи лишь как оболочка, этого требует задумка проекта...
P.S. После тестирования многих скриптовых движков (Lua, Python, PHP, Pascal Script, FastScript) я выбрал PHP... Pascal Script слишком медленный, Lua трудно итегрировать, FastScript платный, а питон отдельная история... Под устройства не пишу... и никогда не буду писать, это не мое... так что мне что есть реализация freepascal'ya на z80 с 48 кб, что ее нет, по - барабану... слишком узкая специализация... -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
||||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
почему то еще все забыли про
Lazaru и MSEide аналоги среды делфи под большое кол-во операционных систем... GNU Pascal ... который работает на следующих платформах ... (из вики)
Безосновательные комментарии игнорирую... ![]() -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
PHP самый ограниченный из перечисленных тобой скриптовых языков)) |
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
Lazin,
опять безосновательное утверждение... -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
с каких это пор MSYS это платформа? ![]() ну взять хотя-бы питон ![]()
питон - ЯП общего назначения, не только для веба (пхп в основном для него) в нем нет скобок но есть пространства имен и модули еще он быстро работает и имеет классный синтакс, only one thing to do this)) а еще классы и функции могут содержать документацию также, аргументы функций можно передавать как обычно а так-же по их именам ну и конечно множественное наследование.. и интроспекция конечно-же функционально программирование: лямбды, замыкания.. map reduce питон следует принципо everyting is an object так-же возможна перегрузка операторов можно использовать потоки есть много встроенных типов данных - списки, словари, кортежи (AFAIK в PHP только массивы, которые ближе к словарям ![]() можно использовать любой GUI фрэймверк.. Qt, tk, wxWidgets... интернационализация на высоте, так как используется юникод))) Добавлено @ 08:41 а для ПХП есть что то похожее на twisted framework? Это сообщение отредактировал(а) Lazin - 26.6.2008, 08:42 |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
Lazin, в пхп даже потоков нет)
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
MAKCim, а вот допустим я хочу управлять графикой, делать что-то в сети и что-то просчитывать? Нужно 3 потока.
Иначе как в левых прогах будет подвисание интерфейса. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
nerezus, если скрипт php работает больше секунды это уже плохо
![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
nerezus,
ну а причем здесь аязык? или работу с потоками нужно синтаксически встроить в язык? ![]() я думаю, не сложно написать библиотеку для работы с потоками -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
MAKCim, речь шла о скриптовых языках (в частности о питоне), там возможность работы с потоками поддерживается интерпретатором...
хотя для программиста поток является библиотечным объектом ![]() Добавлено через 42 секунды на С или паскале не сложно, а на ПХП? ![]() |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
т. е виртуальной машиной, т. е используется API хостовой системы очевидно то же самое можно реализовать в ядре PHP и точно так же поток будет представим объектом -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
nerezus |
|
||||||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
PDF, картинки и т.д. - все это нормально для пхп. К тому же ты забываешь про скриптинг, где скрипты работают часами/днями. Хотя это не сильная сторона пхп(сложность интеграции, отсутствие освобождения памяти(имхо это фатально), слабые возможности для скриптинга) Тут у питона и луа конкурентов имхо нету. Первый особо богат возможностями(я физику на нем через биндинг ODE считал), а второй интегрируемостью и скоростью.
Добавлено через 34 секунды
|
||||||||
|
|||||||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
если не реализовано, значит никому не надо ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
MAKCim, Поддержка кучи оборудования в линуксе тоже не реализована.
Нет до сих пор свободных дров для WiFi девайсов. Я не поверю, что это никому не надо ;) А вот многопоточность нужна мне. Но ее нету, а у меня недостаточно ресурсов(знание, время, возможности), чтобы ее сделать. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Мне кажеться это насилие над языком. Если есть что-то тяжелое и длительное, то это должен эффективно решать движок, при помощи быстрых и оптимизированных функций. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
что-то вы тут спорите много... все что нет в PHP стандартном (в том числе и потоков) будет реализовано средствами delphi и добавлено в движок как библиотека... да и многопоточность мне особо не нужна....
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
здесь вопрос не только в том, надо кому-то или не надо, но еще и в отсутствии открытых спецификаций на устройства ![]() иди напиши драйвер без спецификации ![]() Добавлено через 2 минуты и 52 секунды есть две проблемы первая озвучена выше вторая связана с ядром и порождается из-за нерешенной первой -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
иди напиши модуль без соответствующих возможностей пхп ) |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
но тут все проще PHP же открыт? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
здесь не обсуждаются низко уровневые языки....
P.S. Fast Script еще оказался и очень медленным.... это очень не приемлемо... P.S.S. Python мож и хорош,... но нравится мне больше PHP... тем более я использую 5ую версию, где ООП более менее на высоком уровне... -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
а как-же Pascal и С++? ![]()
в PHP ООП развит слабее, нет duck typing, а так-же не все является объектом ![]() хотя я практически не знаю PHP могу и ошибаться |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Я тоже толком не знаю PHP, но по-моему типизация для объектов ам именно что утиная. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
Все равно не сможешь написать модуль, не изменяя пхп, а изменять нельзя. И даже если бы ты захотел сделать это для себя - то там немеренное количество работы. И еще: тебе придется править каждый используемый тобой экстеншн. Ибо непотокобезопасны. А это уже нереально. И как следствие, что если ты все-таки это сделаешь(перепишешь движок пхп, нужные тебе модули), то другой человек не сможет воспользоваться твоими достижениями: 1) Код надо будет поддерживать в актуальном состоянии, т.е. при каждой новой версии тебе придется переписывать часть своей. 2) Человеку могут понадобиться другие модули. И кстати да: многие модули не имеют открытых исходных кодов =) |
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
Lazin,
ну прально... в PHP не все является объектом как например в Java, но я не считаю это недостатком... А в 5ом ПХП добавили публичные, приватные и т.п. методы, еще вроде свой-ва... могу ошибаться... P.S. Протестировал вчера Lua, вышло так что Lua - 5 сек а PHP - 8 сек, Lua выйграла..., хотя язык довольно скуден особенно в ООП, там его вообще нет... Python вообще трудно интегрировать с VCL ... Это языки высокого уровня, видно как вы разбираетесь в языках... а тем более логичнее было бы написать Pascal vs C, а не (C++) -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
nerezus |
|
||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
Объясни, каким боком тут VCL? о_О
|
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
С++ - язык программирования низкого уровня Добавлено через 2 минуты и 58 секунд ООП там есть, луа не поддерживает классы, но зато поддерживает прототипную модель ООП... Добавлено через 4 минуты и 40 секунд уверен что есть готовый питоновский биндинг для VCL ![]() |
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
Lazin, в Lua я вроде читал только какие то таблицы и шаблоны, которые и какбы заменяют объекты... но это даже не объектная модель java...
ссылочку... я что-то ничего не нашел... хотя б для c++ ... Добавлено через 1 минуту и 57 секунд
да нет... это классовая иерархия в Билдере и Делфи, на которой основан весь GUI программ... да и не только... -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
ты путаешь понятия, объектная модель и модель ООП, так что мы говорим на разных языках ![]() SWIG разве не сгенерит? Да и дергать ВЦЛ компоненты через скрипт...
думаю здесь все знают что это такое... ![]() |
||||
|
|||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 2 Всего: 162 |
||||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 5 Всего: 70 |
||||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 2 Всего: 162 |
Ну дык. А то человек вон какую фразу сказал ![]() |
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
JackYF, я сказал что-то не так... я говорю что в Делфи и в Билдере весь GUI строится на VCL, а VCL строится на WinApi... мне не хочится возвращатся к WinApi, обработке сообщений и т.д, я буду терять много времени на это, легче один раз интегрировать VCL в движок... и вообще забыть про реализацию GUI ...
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
nerezus |
|
||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
P.S. Насчет определения разобраться бы. Я для себя юзаю такое: ЯП низкого уровня - язык, в ктором нет абстракции над железом/ОС и напрямую приходится работать с вещами, не связанными с алгоритмом программы. В C++ это делать приходится(указатели, контроль памяти), однако есть средства, которые в некоторых случаях позволяют этого избежать(ООП фреймворки вроде Qt), однако избежать удается не всего, да и некоторые средства просто убоги по сравнеию с аналогами в других языках(например те же ссылки, которые нельзя переназначмить даже и т.д.) Добавлено через 5 минут и 15 секунд
Так же это относится ко всем дровам, часть закрытых большая. |
||||
|
|||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
для меня единственный язык низкого уровня это ASM и все его похожие реализации... компилируемые языки, которые переводят свою запись на язык ASM являются языком высокого уровня, другие же языки, которые исполняются, переводятся в байт код - скриптовые языки... ненужно тут причеслять что кто-то решил что работа с памятью делает язык низким по уровню...
Если в языке превосходят конструкции высокой абстракции... то и считать этот язык нужно как высокого уровня... а то что в нем присутствуют средства, конструкции низкой абстракции... не делает его низкоуровневым языком. -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
P.S. Слово абстракция тут лишнее для низкоуровневых ЯП. |
|||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
Язык программирования Высокого уровня - это язык предназначенный для легкого понимания человеком, для того, что-бы программы можно было писать быстро. Разницу почувствовать достаточно легко, к примеру, написав программу на питоне или руби, а потом на Си ![]() В общем, ЯП высокого уровня, это язык, который позволяет ничего не знать о железе, работе с памятью и тд... а позволяет просто описывать то, как программа должна работать... правда работать она будет как правило не так быстро)) |
||||
|
|||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
АААААа! Холивар перерастает в "WTF из высокоуровневый язык программирования". >ПАНИКА<
ЗЫ. Поставил теги PG-13 и NC-17 (это мол "кино детям не смотреть") запасся попкорном в ожидании феерии. Это сообщение отредактировал(а) Mayk - 28.6.2008, 13:07 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
господа, посмотрите в википедии насчет высокоуровневости, чтобы зря не холиварить
![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
половине форума вход заказан ![]() |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
в С понятия "указатель" и "память" абстрактны в том плане, что нет необходимости задумываться об ее (памяти) организации и о доступе (через указатели) к ней мы не задумываемся о селекторах, дескрипторах, сегментах, лимитах, не вычисляем эффективные адреса, не учитываем разрядность адресов... точно так же С и "железо" не связаны друг с другом ЯВУ - набор семантических и синтаксических правил описания действий, которые могут быть преобразованы в набор конструкций целевой системы в этом плане даже MSIL и байт-код Java (в случае, если он не выполняется напрямую) являются ЯВУ -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
http://ru.wikipedia.org/wiki/Высокоуровнев...рограммирования
В теме не написано что мы обсуждаем именно С++, а не си... P.S. Философы хр-вы... ![]() Добавлено через 3 минуты и 56 секунд MAKCim, послушался вашего совета... спасибо... ![]() Это сообщение отредактировал(а) lukas - 28.6.2008, 15:28 -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
Свое мнение иногда полезно иметь ![]() ну и фиг с ней, с викой, все равно не понимаю, как можно сравнивать Smalltalk и Pascal =) |
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
Блин, щас покапался в документации по ООП в PHP 5 ... и понял что интегрировать VCL туда будет проще простого, написав для этого несколько функций... и НАПисав несколько модулей для классов на ПХп... и все будет в ажуре... ХЫ.... щас даже умудрился сделать что-то на подобии несуществующих свойств у объектов, как в Java... круто смотрится...
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
![]() перечитай тему -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
MAKCim, в заголовке... ???
![]() -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
|
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
nerezus, я уж забыл о чем спор был....
![]() -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
так и есть покажи другие определения ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |