Все азы я выучил на паскале. Затем мы начали изучать С и позже С++. А зная азы и архитектуру языка, я легко освоил сишные языки.
затем в универе мы изучали Cygwin + Assembler + OpenGL. Этого опыта мне хватает и по сей день. Я легко освоил PHP, html, javascript, mysql и firebird.
Я за пару дней освоил AVR контроллеры, потому что я понимал основы языка, и не важно, ассемблер это или си
я понял, что такое ООП, система сообщений, мьютексы, семафоры, многопоточность, базы данных и пр.
Ух, круто. А то вон некоторые тратят годы, чтобы стать специалистами по базам данных, встраиваемым системам или фронтенд разработке. А вы, благодаря delphi конечно, легко все освоили. Достойно.
Википедия даёт 2 определения того, что такое инкапсуляция. Первое — ваше, и мне оно не нравится, т.к. не понятно, чем тогда инкапсуляция отличается от, собственно, объекта.
Не понял, каким образом вы сравниваете инкапсуляцию и объект? Если:
Я имею ввиду, что инкапсуляция — это, по первому определению, связывание данных и методов; объект — это как раз получившаяся связка.
Данные(поля) объекта и методы для получения/изменения значения данных — это свойства объекта. Инкапсуляция в данном случае — когда вы оперируете не напрямую с данными, а со свойствами объекта.
А объект — это не только куча свойств.
Не совсем верно. АТД по определению покрывает именно типы данных, понятие абстракции гораздо шире. Почитайте SICP: там как раз первые две главы описывают абстракцию по средствам процедур и по средствам данных.
Именно. В SICP и говорится, что абстракции лежат в основе программирования (и парадигм программирования). Зачем выделять их особенно для ООП — непонятно.
С другой стороны, открываем «Совершенный код», листаем до главы 6.1 и читаем про «АТД в основе концепции классов».
Возможность использования единого интерфейса для работы с разными БД — это конкретно полиморфизм, он там на пару пунктов ниже идёт.
Используется более общий, «абстрактный» интерфейс для работы с БД, а более специфичная реализация сокрыта. Чем не пример абстракции? А уж используется ли тут полиморфизм — менее значимо.
Да, поток байтов. Вот только формируя и передавая его, вы работаете не с регистрами/памятью напрямую, а, грубо говоря, пользуетесь удобными абстракциями в виде функций fopen, fread и прочих.
Хотя нет, вы пользуетесь абстракциями уровнем выше, которые предоставляет вам драйвер БД, и работаете с запросами, а не с потоками байтов.
А теперь нужна абстракция, чтобы скрыть работу с драйвером, а работать с общим для баз данных интерфейсом. И реализовать ее в парадигме ООП будет намного быстрей и изящней.
Заметьте, что f — файловый дескриптор, который в сущности ссылается на поток байтов (хоть это файл на диске, устройство ввода-вывода или удаленный компьютер). И естественно, что вы можете работать с потоком байтов как с потоком байтов.
Более того, объектно-ориентированные языки сами зачастую нарушают правило инкапсуляции, предоставляя доступ к данным через специальные методы — getters и setters в Java, properties в C# и т.д.
Вообще-то объединение данных и методов работы с ними и есть инкапсуляция, которая позволяет контролировать состояние объекта.
Так какие же дополнительные средства абстрагирования несёт в себе ООП? Понятия не имею. Выделение кода в подрограммы? Это умеет любой высокоуровневый язык. Объединение подпрограмм в одном месте? Для этого достаточно модулей. Типизация? Она была задолго до ООП.
Абстракция (а точнее АТД) — это то, на чем базируется ООП, а не то, что оно привносит в программирование. И да, ООП предоставляет абстракции уровнем чуток выше, чем функция или модуль. Например, абстракция «база данных», скрывающая низкоуровневую реализацию, и позволяющая работать с разными базами данных через единый интерфейс (достаточно будет, например, просто указать нужный «драйвер»).
Эх вы.
Посмотрите сколько многоточий, насколько волнительный текст. Человек явно пишет под дулом пистолета (или правильнее под стволом), а вы ему — тролль, тролль.
Ну-ну. А потом кому-то эту «дешевизну и скорость выполнения» приходится поддерживать и дорабатывать. И правка какой-нибудь мелочи на 10 минут выливается в пару-тройку часов работ, чтобы конкретный проект конкретного заказчика продолжал радовать конкретных пользователей.
Пару лет? Это же не обучение программированию с нуля. Шаблоны проектирования и прочие MVC они и на питоне работают. База Данных и там и там.
Раз вы хороший специалист, то вы, вероятно, выделяете время для обучения, и, скорей всего, вы программируете не только на PHP. А значит можете изучать тот же питон параллельно работе.
Ух, круто. А то вон некоторые тратят годы, чтобы стать специалистами по базам данных, встраиваемым системам или фронтенд разработке. А вы, благодаря delphi конечно, легко все освоили. Достойно.
Хотел бы я посмотреть на сейчас, если бы эти изобретения в свое время запатентовали.
Если бы психиатры так считали — был бы повод волноваться. А психологам можно, они такое любят.
Не понял, каким образом вы сравниваете инкапсуляцию и объект? Если:
Данные(поля) объекта и методы для получения/изменения значения данных — это свойства объекта. Инкапсуляция в данном случае — когда вы оперируете не напрямую с данными, а со свойствами объекта.
А объект — это не только куча свойств.
Именно. В SICP и говорится, что абстракции лежат в основе программирования (и парадигм программирования). Зачем выделять их особенно для ООП — непонятно.
С другой стороны, открываем «Совершенный код», листаем до главы 6.1 и читаем про «АТД в основе концепции классов».
Используется более общий, «абстрактный» интерфейс для работы с БД, а более специфичная реализация сокрыта. Чем не пример абстракции? А уж используется ли тут полиморфизм — менее значимо.
Хотя нет, вы пользуетесь абстракциями уровнем выше, которые предоставляет вам драйвер БД, и работаете с запросами, а не с потоками байтов.
А теперь нужна абстракция, чтобы скрыть работу с драйвером, а работать с общим для баз данных интерфейсом. И реализовать ее в парадигме ООП будет намного быстрей и изящней.
Вы пытаетесь сравнить абстракции разных уровней.
Вообще-то объединение данных и методов работы с ними и есть инкапсуляция, которая позволяет контролировать состояние объекта.
Абстракция (а точнее АТД) — это то, на чем базируется ООП, а не то, что оно привносит в программирование. И да, ООП предоставляет абстракции уровнем чуток выше, чем функция или модуль. Например, абстракция «база данных», скрывающая низкоуровневую реализацию, и позволяющая работать с разными базами данных через единый интерфейс (достаточно будет, например, просто указать нужный «драйвер»).
Есть мнение, что именно эта способность человеческого мозга позволила нам перестать жрать бананы на деревьях, а развиться до компьютеров и айфонов.
Получив требования, вы занимаетесь проектированием.
Посмотрите сколько многоточий, насколько волнительный текст. Человек явно пишет под дулом пистолета (или правильнее под стволом), а вы ему — тролль, тролль.
А на elderscrolls.net обещали в скором времени опубликовать перевод и нормальные скрины.
Ординатор
Персонажи
Нечто в стиле оригинальных концепт-артов к Морровинду было бы вообще прекрасно.
Страннота. Я всегда думал что от CSRF защищаются генерацией уникального токена для каждого действия пользователя.
Пару лет? Это же не обучение программированию с нуля. Шаблоны проектирования и прочие MVC они и на питоне работают. База Данных и там и там.
Раз вы хороший специалист, то вы, вероятно, выделяете время для обучения, и, скорей всего, вы программируете не только на PHP. А значит можете изучать тот же питон параллельно работе.
Подход « лишь бы это работало» приводит только к дополнительным затратам. На поддержку, на оборудование, чтобы «лищь-бы-работало-код» не тормозил.
Если вы или ваша компания может позволить себе тратить время на такой код — то замечательно!