Dancing On The Moonlight. Waiting 4the Sunrise
Приведите мне примеры языков сверхвысокого уровня, а то я что то слабо представляю себе, что сие такое.
Разделение труда не даром придумали... Есть люди, у которых хорошо получается делать деньги, а есть те, у кого хорошо получается писать программы. Называй их разработчиками, программистами или менеджерами, смысл не поменяется...
И так будет до тех пор, пока человеку без специльного образования не станет проще обяснить что ему нужно компьютеру чем другому человеку.
А это ещё не скоро.
Когда пишешь в кодах, то имешь только глюки самого себя
На асме добавляются незначительные глюки компилера, правда их видно сразу.
На сях глюк тебя + глюк компилера + глюки тех кто писал библиотеки
На С builder, к примеру , добавь еще глюки наделанные несколькими стонями разработчиков.
Короче, чем дальше в лес тем больше дров. Жаль, что сейчас невозможно писать на чистом асме
Эх Спектрум... Спектрум... как там все было просто.... Порты, прерывания и чистая, незамутненная всякими левыми прогами, оперативная память
0 0000 ORG 0000h
1 0000 F3 DI
2 0001 76 HALT
Assembly complete
0 Errors
1 Warning
Есть люди такие, как ты, которым нравится разбираться в "простых" вещах; а есть люди такие, как я, которым нравится забыть про "простые" вещи и играться с логикой более обширной.
Я когда думаю сортировать поле, я не думаю, как оно будет сортироваться, как эту сортировку сделать быстрее, и так далее. Я думаю, когда это нужно применить, где и зачем.
Люди разные, но похоже, что сейчас мир становится ближе ко мне и дальше от тебя. Правда, уверен, что и из-под меня он тоже со временем уплывёт.
Когда пишешь в кодах, то имешь только глюки самого себя
А ещё глюки проектировщиков процессора!
А программу без единого бага, как извсестно, можно написать только за бесконечное время.
Дело в том, что для того, чтобы иметь более-менее нормальную систему для тех или иных действий, все равно необходимо строить какую-то онтологию, "базис". Известный тезис Черча гласит от том, что все эти базисы (достигнув определенной сложности), в конечном счете эквивалентны, вопрос только в необходимом времени. Чем базис сложнее, тем больше возможностей он предоставляет что-то сделать хорошо и быстро, но, к сожалению, и такое же количество возможностей сделать нехорошо и запутаться. Эрго, невозможно усложнять язык бесконечно, стремясь к идеалу, а преследовать только утилитарные цели, членя все проблемы на какие-то классы и создавая по системе на каждый случай.
Кроме того, все языки группируются по каким-то парадигмам. Низшие в нашем понимании языки относятся к прямолинейным императивным. С увеличением "высоты" появляются автореферативные средства манипуляции - всевозможные указатели на функции и прочее, таким образом, получается нагромождение уровней - переменные, метапеременные и так далее. Во избежание сего строятся рефлективные конструкты.
Короче говоря, всех желающих ознакомится с предметом, приглашаю на cliki.tunes.org, а также рекомендую прочесть книжку Питера ван Роя и Сейфа Хариди "Programming - Concepts and Techniques". Где ее скачать, к сожалению, не помню; дело в том, что до поры до времени она была в свободном доступе на сайте авторов, сейчас же нужно искать где-то еще.
Ну, это совсем ерунда. Информация определяется как разность между условной и безусловной энтропией для каких-то событий. То бишь, энтропия - это характеристика системы в определенный момент, информация же характеризует динамику ее изменения.
Что есть условная и безусловная энтропия?
А по поводу разработки...
Команда из одних ассемблерщиков в большом проекте обречена на провал
Код, конечно, будет филигранным, но вот скрость разработки такого проекта будет предельно мала!
Команда же, которая состоит из одних "высокоязников", забивших на оптимизацию и ударившись в ЦЕЛЬ, рискует создать совершенно неподьемный с точки зрения железа, проект. =) Правда на них будет работать время и прогресс, но если СИЛЬНО увлечься, то и это не спасет =)
Поэтому не надо спорить, а надо кооперироваться
ЗЫ
А канал, вырытый чайной ложкой, будет гораааздо эффектней и эстетичней, чем забитый кувалдой гвоздик
0 0000 ORG 0000h
1 0000 F3 DI
2 0001 76 HALT
Assembly complete
0 Errors
1 Warning
pash_ka Да... Есть в процах глюки
Хы, а вот вспомнил, Глюки процессоров это не глюки - это ФИЧИ!
У Архитектуры х86 начиная с AMD K5 есть команда UD2 - санкционированный глюк(ошибка "неопределенная операция"
Разработана для проверки стабильности ОС
Теперь, чтобы вызвать глюк, винде не надо больше паритсья с зацикливанием кода или срывом стекового кадра, UD2 и всё
0 0000 ORG 0000h
1 0000 F3 DI
2 0001 76 HALT
Assembly complete
0 Errors
1 Warning
Создатели библиотек оптимизацией наверняка занимаюьтся, особенно библиотек пупулярныых и общепризнанных.
Но зачастую случается, что ради универсальности приходится жертвовать скоростью... В то время как в конкретной задаче универсальность не всегда нужна.
И всё-же... есть такая рекомендация для программистов: не заниматься преждевременной оптимизацией.
Сначала надо написать программу, а потом, если окажется что она работает медленно, оптимизировать те куски, которые тормозят. Вот я думаю, что написание собственнных функций в замену библиотечным - имеет смысл лишь тогда, когда явно видно, что всё из-за неё тормозит.
Понимаешь, понятие "работает медленно" весьма относительно. Ты же на знаешь на каком компе она будет исполнятся! А по поводу преждевременной оптимизации, то каждый должен заниматься СВОИМ делом!
Sky Cry Можно, и упереться чисто в библиотеки. Но вот библиотечные функции слишком универсальны. Взять, например, printf эта функция его только не умеет! Может выдать все че угодно и в любом формате
1 0000 F3 DI
2 0001 76 HALT
Assembly complete
0 Errors
1 Warning
Пожалуй самая сильная моя сторона - Джава. Вообще довольно просто - есть куча стандартных библиотек, о которых ты заранее знаешь, что они будут на каждом компьютере, так что ими можно пользоваться "беззаботно". Они может не самые быстрые или эффективные, но мне пока не приходилось писать что-либо, чему бы сильно не хватало оптимизации. Ну, а как говорится, зачем чинить то, что не сломано?
Например в программах, которые работают с базой данных, обычно именно база данных и является самым медленным местом. С ней надо соединиться, послать запрос, подождать, пока она его обработает, получить это всё дело и так далее... программа сама работает достаточно быстро, чтобы она всё успела сделать и потом долго ждала базу данных.
Так что в таких случаях достаточно оптимализировать базу данных, а не программу.
создается впечатление, что дух "настоящих программистов" начинает покидать наши бренные тела
я ничего не имею против той же Java (хотя лично для себя считаю ее ручным тормозом). но привязываться только к стандартным библиотекам, не задумаваясь, как они работают, на мой взгляд, слишком неосмотрительно. в первую очередь, это влияет на эффективность работы конечной программы. элементарнейший пример: использование сортировок.
что касается баз данных, то тут тоже не все так гладко, как может показаться на первый взгяд. если программа занимается не только банальным выводом данных, то несколько опрометчиво не задумываться об оптичизации, списывая все на скорость работы субд.
не удивлюсь, если через пару-тройку лет, системными требованиями к игре "крестики-нолики" будет несколько-гигагерцный процессор с гигабайтом оперативки.
я никого не призываю писать все на ассемблере или переписывать самому все имеющиеся библиотеки. советую лишь думать, что использовать в каждом конкретном случае, не ссылаясь, в частности, на скорость и эффективность работы той-же субд
А знать как они работают - действтельно очень полезно, я частенько заглядываю в их исходники, и использую их решения в собственном коде.
А по поводу БД, столкнулся однажды с ситуацией, когда использование библиотеки оказалось оченб вредным. Это была программа на PHP, и я использовал PEAR
Мне нужно было получить порядка 80 000 записей, и обработать их. Было-бы идеально поручить обработку базе данных, но таких возможностей MySQL 3-ей версии увы нету, так что пришлось в PHP-скрипте.
Проводить обработку заранее, при добавлении записей - тоже невозможно, т.к. обсчёт идёт с параметрами заданными пользователем.
Обычно для получения записей я использовал функцию getAssoc(), кторая возвращает массив результатов.
Ну вот и тут, не подумав так сделал. А потом пробегался по этому массиву проводя нужные вычисления.
Скрипт работал порядка 16 секунд на моём компе.
А когда я переписал алгоритм без использования этой функции - вышло около 9 секунд.
Насчёт беззаботно -- ты жестоко наврал. Могу привести сотни примеров когда чужие программы на Java у меня не заработали. И совсем немного когда я не смог портировать исходник на С++, изначально написанный кроссплатформенным.
По-моему для этой дискуссии давно пора создать новую запись
И они пользовались только стандартными библиотеками, работали у самого создателя, и у тебя была таже версия JRE?
Шучу, шучу. Конечно, именно в этом и дело -- каждая прога тащит за собой свою версию JRE. А они весят нехило. А ещё отжирают дохрена оперативы.
Java -- ZLO
Причём более новые совместимы со старыми, естественно.
И только JRE от Microsoft частично совместимы на уровне версии 1.1. Да и то с ба-а-льшими оговорками.
А ещё, давно не бло кардианальных изменений... Со времён перехода с 1.1 к 1.2 и Swing-библиотеки.
Ну так Sun нам подарочек устроила в виде версии 1.5. Нет, я понимаю что старые на ней пойдут... Но вот сколько мучений будет с новыми прогами... Как мы будем юзверям рассказывать где им смотреть версию JRE и как её качать...
1.5 вообще интересная вещь... решает много мучений программистов. Но, например, Eclipse, который её поддерживает (у них, как всегда, свой компилятор...), ещё бета.
Ещё где-то я читал про компилятор для джавы 1.5, результат работы которого совместим с более старыми версиями, что довольно уникально для 1.5.
Дал ссылку и всё!
Ну да, да... Вот только они не будет просить ссылку. Они будут жаловатьс, что у них ничего не работает.
А что им рассказывать? Дал ссылку и всё!
думается, несколько непрофессиональный подход к разработке программного обеспечения. если приложение разрабатывается для пользователя, то оно должно быть как минимум удобно для него. идеальное приложение - приложение работающее только на стандартных системных библиотеках (хотя и отсюда идет привязка к ОС) и не требующее для корректной работы инсталляци (disclaimer: инсталлцию можно оставить, но для ее проведения следует требовать только реально необходимые права безопасности, не осуществлять перезагрузку системы без веских на то причин и т.п.)
думаю, это стоит вынести в отдельную тему - сплошой оффтоп