Сразу извиняюсь за неадекватное поведение и офтоп. Похоже моя идея все-таки заинтересовала некоторых сообщников. Частью технологии предполагаеться создание (в относительно далеком по ИТ-меркам будущем) "идеального" ЯП (языка программирования). С целью выяснения сильных и слабых сторон существующих технологий предлагаю следующий флеш-моб (покритикуй свой ЯП). Сейчас каждый желающий оставляет коммент следующего содержанию: ЯП (технология, которую вы знаете лучше всего и чаще всего используете), ее недостатки, которые больше всего вам НЕ нравятся. Огромная просьба ругать любимую технологию, поскольку ругать чужое легко и необъективно.
PS: Офтопы будут беспощадно убиваться. Просьба не засорять тему.
0 голосов



ноября 6, 2006 в 6:30 pm
Java
Недостатки:
1. Сложность синтаксиса и практически невозможность применять язык, для обучения программированию.
("Идеальный" ЯП должен имет человеко0ориентированный синтаксис)
2. Сложность реализации так зван(ой/ого) persistance. Возможно использование различных Hibernate-подобных примочек. Но это достаточно сложно и громоздко. Появляеться необходимость дублировать один и тот же код на разных уровнях системы. (DAO, Service, EJB, DTO, WEB). В "идеальном" ЯП persistance должен быть абсолютно прозрачным для программиста.
3. Статическая типизация. Несмотря на то, что она как бы уменьшает количество ошибок, она делает это ценой повышения сложности реализации AOP, Dynamic Proxy и т.п. Имхо в "идеальном" ЯП, должна быть динамическая типизация.
4. Сложность(относительная) организации взаимодействия обектов по сети. В иделале должна быть полностью прозрачной. Да есть RMI, CORBA, WEB-SERVICES, SOAP и т.п., но для всех их нужны стабы, прокси и прочие извращенства. Имхо причиной этой проблемы опять же есть статическая типизация.
пока хватит для начала.
ноября 7, 2006 в 1:10 am
Сделаю лирическое отступление. "Языки программирования" как сущность умерла уже пару лет назад. Есть Технологии программирования или Платформы в крайнем случае. Это мнение подтверждатет платформа .NET - языки там помимо синтаксиса не имеют различий.
По сабжу:
РНР (LAMP)
1. Низкая масштабируемость.
Частично проблема решается путем использования шаблонов, ООП. Хотя последнее реализовано на уровне более низком чен например в той же Java или .NET, но все равно, использовать LAMP для построения корпоративных систем большого/среднего уровня нецелесообразно.
2. Отсутствие перегрузки функций.
Иногда этого нехватает. В принципе это является следствием слабой ООП модели.
Вроде все.
Остального хватает для задач
ноября 7, 2006 в 10:49 am
Вынудили вы меня на длинный пост
Что же по пунктам:
1. Док, мы же договорились писать статьи, а не создавать форумные темы. Это как раз форумная тема.
2. Док, объясни, пожалуйста, подробней зачем необходим идеальный язык программирования. А то перескок с того, что "моя идея все-таки заинтересовала некоторых сообщников" до "предполагаеться создание “идеального” ЯП" уж больно шустрый. Явно не хватает длинного объяснения.
3. Райан, понятие "язык программирования" может отпасть только тогда, когда мы начнем писать на том языке, на котором "мыслит" компьютер. Для кремниевых железячек тоже "писали" при помощи тумблеров: "011100....". Потом заменили 4-битные комбинации на буквы, потом... ну вы знаете
3.1. .НЕТ вообще нельзя рассматривать как что-то серъезное пока он не станет кроссплатформенным. Чувствую, что сейчас куча народу начнет вопить, что он уже кроссплатформенный... Но это не так - попытки перенести его на линукс, мягко говоря, провалились. В данный момент это просто навесок над Windows и не более. Вспомните какой ажиотаж устроили вокруг АктивХ. Казалось надо быстро использовать, а то останешься не у дел. Ну и где он теперь ваш АктивХ?
Что-то я увлекся, дальше...
4. "Идеальный язык программирования" не существует в принципе.
Но, в таком случае, профессия программист отомрет за ненадобностью. А этого никто из нас не хочет.
4.1. Каждый человек воспринимает все окружающее его по-разному, в том числе и требования к языку у него разные. Т.е. идеал будет у каждого свой.
4.2. Конечно, идеальным вариантом будет восприятие компьютера есстественного языка человека. Т.е. говоришь компьютеру - "хочу вот такую, такую, такую штуку и чтобы на заднем фоне вот такая картинка, да еще и вода плескалась" :). А он генерирует программу. Вот это идеальный "язык программирования"
5. Динамическая/статическая типизация. Вот уже момент о котором можно долго дискутировать. Док, утверждает что статическая типизация - минус Явы. А я бы сказал что статическая типизация - это плюс С++. Кто прав? Правильно, никто.
6. Ну что же по С++ (что не так лично для меня):
6.1. В отличии от функциональных языков, недостаточная очевидность рекурсивных реализаций (но в нефункциональном языке по другому быть не может).
6.2. Запутанная поддержка полиморфизма (но альтернативы этому не видно - это проблема всех языков)
6.3. Сложная схема шаблонных классов (но возможностей, которые открывают шаблонные классы в С++, в полной мере нет ни в одном другом языке)
6.4. Поддержка макросов препроцессора, что иногда приводит к ошибкам (а иногда очень сильно помогает).
6.5. Наличие путей в обход принципам ООП, например friend (с другой стороны на присутствие такого обходного пути есть куча причин, которые приводят к положительным эффектам).
6.6. Есть еще, но мне надоело
7. Я намеренно все пункты писал с противовесом. Т.к. любой язык идет на определенные компромиссы. Проигрывая в одном, выигрывает в другом.
8. Вообще, доку 0 из 100 за тему. Т.к. тема абсолютно не конструктивная. Единственным результатом такого поста могут стать идеологические войны в комментариях. Хочешь создавать новый язык - создавай. Но тогда пиши о том, что хочешь в нем увидеть, а мы подскажем что еще туда стоит добавить. А главное определить для каких целей язык будет использоваться.
Всем спасибо за внимание, простите если кого-то утомил.
ноября 7, 2006 в 12:28 pm
В чем здесь флеш-моб не ясно, наверное имелась ввиду критика технологий?
C++ это чистый язык программирования, существующий отдельно от какой-либо технологии. На основе C++ построена масса технологий разного масштаба. Технологии в целом удобно разделить на 2 класса:
1) уровень исходных кодов (библиотеки классов, иногда с IDE обертками)
2) уровень бинарных интерфейсов (например COM/DCOM/COM+)
Критику каждой такой технологии посильно найти в Web.
Касательно критики любого языка программирования, хочу обратить внимание автора темы на классическую статью "Beating the Averages" by Paul Graham (http://cs.gmu.edu/~zduric/cs580/pgtalk-rev2.pdf) особенно абзац про The Bulb Paradox. Исходя из смысла последнего, любая критика ЯП - это критика конфликта способа мышления, навязываемого ЯП с одной стороны, и способа мышления программиста с другой.
ноября 8, 2006 в 10:22 am
в тему о недостатках
http://www.paulgraham.com/fix.html