|
|
| Результаты опроса: Что лучше? | |||
| Delphi |
|
64 | 24.43% |
| C# |
|
123 | 46.95% |
| Они дополняют друг друга |
|
20 | 7.63% |
| Ни один из них |
|
55 | 20.99% |
| Голосовавшие: 262. Вы ещё не голосовали в этом опросе | |||
|
|
|
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
|
|
Delphi vs C#24.01.2010, 11:31. Показов 82419. Ответов 861
Метки нет (Все метки)
Всем привет.
Я уже давно люблю покодить на делфи(7) и вот решил попробовать на с#. Тема глупая и затасканная, но все же какие преимущества я получу(и недостатки) с точки зрения любителя.
0
|
|
| 24.01.2010, 11:31 | |
|
Ответы с готовыми решениями:
861
Что лучше брать Delphi XE2, Delphi XE, Delphi 7? Какие отличия Delphi 5, Delphi 6 и Delphi 7 ZipForge для Delphi Xe - интерфейс стал выглядеть как в Delphi 2007 |
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 07.04.2019, 07:55 | ||||
|
Добавлено через 2 минуты Добавлено через 1 минуту
0
|
||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|||||
| 07.04.2019, 11:19 | |||||
|
Напомню, иммутабельный вектор реализован по-другому (не через массив, как мутабельный). Добавлено через 8 минут Не важно, как этот вектор внутри реализован. Важно время операций. Для копирования О(1). Для добавления в конец О(1). Для доступа по индексу, изменения, вставки, удаления - О(log32) - практически О(1), так как размер векторов редко больше 1млн, часто меньше 1 тысячи. Добавлено через 2 минуты Добавлено через 1 минуту Добавлено через 4 минуты
0
|
|||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 07.04.2019, 12:03 | ||||
|
Shamil1, Ну и как этот вектор реализован под капотом? Как понимаю ссылка на старый + список изменений и инкапсулированный в operator [] восстановление конкретного элемента по списку изменений.
Но в принципе для некоторых применений, когда размер самого состояния (позиции) очень велик,и состояния хешируются для сравнения, (т.е. подавляющее большинство сравнений происходит без сравнения элементов) это может давать очень хороший результат. Только при чем тут мутабельность/иммутабельность данных? В данном случае верх дерева изменять все равно не надо, все изменения происходят внизу. Т.е. с мутабельными данными изменяют их тоже не кто попало и не когда попало. Их могут изменять только определенные части алгоритма (приватное состояние класса изменяют только его методы к примеру и далеко не все части алгоритма имеют право эти методы вызывать), и очень часто только в определенных стадиях. К примеру для подсистемы просчета траектории траектория изменяема. А для системы предсказания коллизий, траектория уже неизменяема. Т.е. опять же в случае как и с управлением временем жизни объекта имеем более строгое описание предметной области, которое разруливает все вопросы и снимает проблемы с актуализацией данных для других подсистем/ частей алгоритма, свойственные полной иммутабельности. Добавлено через 6 минут Точно так же потребитель должен уведомить коннекцию, о том что он отключился чтобы коннекция не слала ему данные (потребителей то может быть и несколько, при этом отсутсвие потребителей данных в текущий момент тоже далеко не всегда служит причиной закрытия коннекции). А по каким причинам и кто грохнул потребителя и грохнул ли вообще или он просто на другой канал переключился или декативировался на время - ну какое до этого дело коннекции? Добавлено через 19 минут
0
|
||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 07.04.2019, 19:47 | |
|
0
|
|
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
||||
| 07.04.2019, 21:46 | ||||
|
Я вызываю функцию, внутри которой используется некий объект. Если он в невалидном состоянии, то я получу исключение с детальным описанием проблемы и её причины. И это как раз то, что нужно. Функция должна выполнять свою задачу, а обработкой ошибок должна заниматься одна из функций вверх по стеку вызовов, которая знает, как нужно обрабатывать ошибки. А что мне даст использование weak_ptr? Исключение "опаньки! что-то пошло не так"?
0
|
||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||
| 07.04.2019, 23:15 | ||||||
|
Добавлено через 20 минут Пока яву не преподавали в школах он нафиг не нужен был. Добавлено через 7 минут
0
|
||||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|||||
| 08.04.2019, 01:34 | |||||
|
Пользователь нажимает кнопку. Для выполнения действия вызывается функция (можете называть её методом). Пользователь нажимает кнопку. Для выполнения действия вызывается функция. Посмотрите реализацию иммутабельного вектора. Например, в Clojure.
0
|
|||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 08.04.2019, 09:45 | |||||
|
К примеру пользователь нажимает кнопку "слушать музик". Необходимо во первых проверить наличие существующей коннекции. Если ее нету создать коннекцию. На ивенте "готов к работе" пришедшем от созданной коннекции, отправить запрос, и получать опять же на ивенте от коннекции входящий поток. При обрыве связи получить от коннекции соответсвующий ивент и попытаться пересоздать поток. НУ как бы вот именно так тот же WebSocket работает. Если обрыв присылает уведомление и удаляется. И вот потому что именно этот вопрос в языках с GC решается только ручным перебором мусора, и при этом резко удорожает перебор живых, в WinForms и нет визуального биндинга и т.д. и порезано подавляющее большинство функций визуальной разработки, а не потому что хуман ридабле быстрее или удобнее. Пример. Шахматная доска. Она может отображать только одну позицию одновременно. Для отображения двух позиций нужно или две доски или имплиментировать на одной лог изменений вперед-назад и третьего не дано. Добавлено через 37 минут Shamil1, При этом на ленте имплементация лога изменений имеет меньшую потребную перемотку ленты чем поиск копии. Особенно это касается перфоленты где запись однократна. Отсюда и все эти трюкачества с неизменяемыми данными. Они действительно были очень актуальны во времена создания ЛИСПа - тогда данные были физически однократно записываемыми. Но память давно научилась быть с многократной перезаписью и произвольным доступом.
0
|
|||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|||||
| 08.04.2019, 16:15 | |||||
|
Пусть у нас есть вектор, содержащий 1000 элементов. Упрощённо он состоит из корня, содержащего длину вектора и ссылку на массив из 32 ссылок на массивы из 32 элементов (на самом деле вектор устроен чуть сложнее). Если мы заменяем какой-то элемент, то нам надо заменить корень, 1 массив ссылок и 1 массив элементов. Остальные 31 массивов элементов используются в новом векторе без изменений и также продолжают использоваться в старом векторе. Если бы мы меняли вектор, состоящий из 30_000 элементов, то нам пришлось бы заменить корень, 2 массива ссылок и 1 массив элементов. Остальные (примерно) 1000 массивов элементов и 30 массивов ссылок используются совместно старой и новой версией. Добавлено через 19 минут Добавлено через 13 минут Ключевое слово class в C++ предназначено также для поддержки процедурного стиля программирования. То есть, использование class в коде не обязательно делает программу объектно-ориентированной. А Страуструп недовольно морщится, когда кто-то говорит, что С++ - это объектно-ориентированный язык программирования.
0
|
|||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||
| 08.04.2019, 18:07 | |||||||
|
Добавлено через 1 минуту Добавлено через 3 минуты Добавлено через 3 минуты Добавлено через 10 минут Shamil1, При этом еще раз для тех кто в ФП/процедурщине - объект это не пассивный буфер а активная абстрактная сущность и с чем ее есть ни одна функция точно не знает. Знает только он сам. А соответсвенно работа функций сводится к отдаче списку объектов команды делай раз. Если кто то по ходу из списка исчезнет самой функции от этого не холодно не жарко. Так же как и другой функции которая по другому списку командует делай два. Добавлено через 9 минут Shamil1, Т.е. суть как раз в том чтобы функции не требовалось заморачиваться вопросом нужен ей этот объект или нет. Вместо этого объект заморачивается о том нужна ли ему команда делай раз делай два или делай три. Т.е. в каких списках обработке ему присутствовать/в каких действиях участвовать/на какие команды реагировать. В результате получается самоуправляемая иерархия взаимосвязанных объектов. Добавлено через 18 минут Добавлено через 3 минуты
0
|
|||||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
||||||||
| 09.04.2019, 14:39 | ||||||||
|
А вся байда с состояниями и их изменением относится к интерфейсу пользователя. И что будет, если она самоудалится в тот момент, когда плеер будет работать? Например, я выполняю запросы к БД, используя Соединение. Зачем мне перед каждым запросом делать кучу проверок? Если Соединение придёт в негодное состояние, то я получу Исключение - и это то, что надо (потому что я не знаю, как это исключение обрабатывать).
0
|
||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||
| 09.04.2019, 18:00 | ||||||||
|
компайлтаймовый же ФП/декларативный подход шаблонов - ну это реально моща, которая сводит практически к нулю код обслуживания мелких нужд ООП, типа автоматики слежения за взаимосвязями и т.д. Поэтому называть С++ ООП языком - ну это все равно что сказать что других ООП языков не существует. А это не так потому что в той же дельфе яве шарпе реализована полная симуловская модель объектов, хотя и нет средств автоматики взаимосвязей. Добавлено через 1 час 15 минут Добавлено через 3 минуты Добавлено через 10 минут Добавлено через 2 минуты Добавлено через 17 минут Добавлено через 5 минут Кстати так думал о применении подобной структуры для замены COW строк/стринглистов для ускорения копирования. При неравенстве длин и необходимости в подстроках получается полный 3,14здец, когда строка в 2 байта может держать мегабайтный текст используя из него 1 байт.
0
|
||||||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|||||
| 10.04.2019, 09:46 | |||||
|
Во-первых, ИП - это меньшая и наиболее простая часть любой системы. На разработку экселя ушли, наверное, тысячи человеко-лет. А написать ИП к нему один человек может за несколько месяцев. Во-вторых, все ИП более-менее похожи друг на друга. Что эксель, что какая-нибудь система учёта - те же окошки, те же кнопки. В-третьих, ИП бывают разные и не все содержат кнопки. В том же экселе можно работать через веб или с командной строки или через апи.
0
|
|||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 10.04.2019, 11:06 | |||||
|
Добавлено через 58 секунд Добавлено через 42 секунды Добавлено через 16 минут
0
|
|||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|||||||||
| 10.04.2019, 11:33 | |||||||||
|
Для командной строки и АПИ нет никакого состояния, поэтому нечего активировать/деактивировать. Для веб-интерфейса, если он написан без javascript, тоже нет никакого состояния. А если он написан с использованием javascript, то состояние есть в javascript, а на сервере всё равно нет состояния. Состояние есть у дестокпных приложений. Когда я последний раз писал десктопное приложение, я все заявки задал декларативно в хамле (код соответствующих классов был пустым)
0
|
|||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 10.04.2019, 19:52 | |||
|
И если для UI и особенно CURD учетной направленности такие наборы компонент для декларативного конструирования имеют высокую степень универсальности, и соответственно развиты настолько что код нужен очень редко, то для остальных 75% задач индустрии это далеко не так. Добавлено через 4 минуты Автоматика же плюсов превносит возможность создания подобных декларативных конструкторов в вопрос управления взаимосвязями, что сильно облегчает вопрос создания задаче-ориентированных наборов компонентов. Добавлено через 7 минут Работоспособность того же HTML к примеру обеспечивает подобная самоуправляемая иерархия объектов. А сам HTML - это по сути схема сборки иерархии - т.е. список компонентов с их настройками и взаимосвязями. Добавлено через 5 часов 28 минут
0
|
|||
|
14733 / 9507 / 1363
Регистрация: 21.01.2016
Сообщений: 35,869
|
||
| 12.04.2019, 05:42 | ||
|
0
|
||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|
| 12.04.2019, 12:48 | |
|
Типы int, double и complex являются примерами иммутабельных структур в С++.
Есть переменные и есть значения переменных. Если значение нельзя изменить, а только заменить целиком, то тип является иммутабельным.
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 12.04.2019, 14:35 | ||
|
0
|
||
| 12.04.2019, 14:35 | |
|
где найти delphi c компилятором? и с чего начинать программирование в delphi? Почему функция работающая в Delphi 7 не работает в Delphi 2007 и в 2009 ?? Переписать часть кода с Delphi на ассемблер (ассемблерные вставки в Delphi) Как в Lazarus сделать интерфейс Delphi 2006 вместо Delphi 7? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|