Компания TIOBE Software подвела итоги (http://www.tiobe.com/index.php/content/paperinfo/tpci/index....) популярности языков программирования в 2010 году. Индекс популярности TIOBE не пытается найти самый лучший язык программирования по самому большому количеству написанных строк кода, а строит свои доводы по изменению интереса к языкам, на основе анализа статистики поисковых запросов в таких системах, как Google, Google Blogs, Yahoo!, Wikipedia, MSN и YouTube.
Звание языка 2010 года присуждено языку программирования Python, увеличившему свой рейтинг с 4.455% до 6.265% (увеличение на 1.81%), что позволило ему подняться с 7 на 5 место. Судя по всему Python также становится стандартом де-факто в области написания скриптов для системных нужд, вытесняя на этом поприще язык Perl, популярность которого упала на 0.71% (за год Perl переместился с 8 на 9 место). В области web-программирования Python, особенно в связке с фреймворком Django, активно конкурирует с PHP, рейтинг которого ухудши...URL: http://www.tiobe.com/index.php/content/paperinfo/tpci/index....
Новость: http://www.opennet.me/opennews/art.shtml?num=29236
Статья для тех кому лень открыть http://www.tiobe.com/index.php/content/paperinfo/tpci/index.... ?
да
Так на каждую новость можно тыкнуть "для тех кому лень открыть <источник>". Прошёл год, это некое подведение итогов. Не думаю, что много народу намеренно лазит на эту статистику пофапать а не набрал ли его обожаемый ЯП лишний процентик.
Статья для тех кто верит что количество упоминаниний языка в гугле соответствует его популярности.смотрим тут
http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_d...или по русски тут
http://www.rsdn.ru/forum/philosophy/2315566.flat.aspxТ.е. если я напишу 100500 постов на тему с++-сакс и питон-отстой то популярность обоих по тиобе возрастет.
Вообще удивительно что этот самопиар тиобовцев вызывает какие-то обсуждения.
Тренды интереса к языкам поисковики показывают достаточно неплохо. Другие методы еще хуже: проводить опросы - не будет объективности и полного охвата, считать строки открытого кода в публичных репозиториях пропустим большой пласт разных внутренних разработок, наколеночных скриптов и проприетарных систем. А в поисковиках ищут все, и разработчики проприетарных программ, и открытых, и авторы наколеночных скриптов. Подчеркиваю, речь именно о трендах, т.е. изменении популярности во времени.
Здесь имеет место быть полная терминологическая мешанина. Что такое "популярность"? "Интерес"? Даже на пальцах это трудно объяснить, не говоря о смехотворных фапоцифрах тиёбы.Тиёба показывает тупо "количество запросов", куда входят как праздный интерес (манагеров, например), запросы по конкретному API (прогеров), "левые" запросы (искали кофе Java или основы чего-либо (basic)), запросы дебилов, неспособных прочесть две страницы доков ("как открыть сокет в java") и т.п. Из этой помойки ни один мат.аппарат не способен вывести ничего полезного.
Опросы - чем они плохи? Что необъективного может быть в "какой язык вы используете?"?
Только сам опрос должен быть детальным: не "использую", а "рабочий инструмент"/"хобби"/"временно заставили"... Плюс нужно учитывать (отдельным блоком) уровень юзающего - нет смысла включать "начинающих осваивать сортировку". Тогда уровень того же C# подымется в разы - я в жизни не поверю, чтобы доминирующая платформа с единственным вразумительным языком была ниже ковыляющей по обочине жабы или, прости господи, похапэ. Кстати, "веб" и "нативные приложения" тоже должны разделяться, т.к. сайтоклепателей - легион и нет им счёта.
Вобщем, тиёба позорится своими цифрами, зря нервируя людей.
Популярность коррелирует с "озвученностью", т.е. количеством цитирования (не важно какого оно рода). Метод даёт довольно общие результаты, но другого нет.
> Тогда уровень того же C# подымется в разы - я в жизни не поверю, чтобы доминирующая
> платформа с единственным вразумительным языком была ниже ковыляющей по обочине жабыК моему великому стыду, не програмлю ни на C# ни на Java, но всё равно слова про "доминирующую платформу" воспринимаю как пускание пузырей в луже: Java была за долго до .Net, она есть сейчас и будет ещё очень долго, возможно что всегда. В пресловутом интерпрайзе ещё очень долго она останется доминирующей, хотя бы потому, что в интерпрайзе доминируют версии Unix, а Mono как реализация .Net в подмётки джаве не годится.
Про десктоп: у нас на работе биллинг куплен - и серверная и клиентская часть ("нативное приложение") на джаве, благодаря чему его спокойно юзают пользователи и Linux и Windows.
> Кстати, "веб" и "нативные приложения" тоже должны разделяться,
> т.к. сайтоклепателей - легион и нет им счёта.И именно по-этому они побеждают
Не следует забывать еще о сложности языка и его основных библиотек. Какой-нибудь Паскаль освоить куда легче чем C++, а PHP так вообще будет лидировать по количеству запросов. Ибо в его бардачном API сам черт ногу сломит.
>Какой-нибудь Паскаль освоить куда легче чем C++Справедливости ради современный Паскаль тоже стал изрядно запутанным языком (и имеет тенденцию к дальнейшему усложнению), да и литературы по нему меньше.
С каких пор Delphi - это язык?
Года с 2000ого примерно.
Delphi это название среды, язык, на котором пишут в делфи - object pascal
Object Pascal-ем этот язык был до выхода 7-ой версии IDE Delphi, с выходом этой версии Borland стала и сам язык называть "Delphi".
delphi language - точнее
> delphi language - точнеетрудно сказать, у них самих было написано так
whats_new_in_borland_delphi7_studio.pdf
Documentation
..
• The Object Pascal language is now called the Delphi™ language. The online Help and documentation have been updated accordingly.
• The Object Pascal Language Guide is now the Delphi Language Guide.
Программы, написанные на Java по быстродействию вызывают полное отвращение.
Это сильно зависит от того, кто и как пишет эту самую программу :)
Пару лет назад было показано, что _реальные_ программы на цпп работают _медленнее_ чем их жаба-аналоги. А всё от того, что отдельные быдло-кодеры пишут на цпп так:
class A {
.....
}void f1 ( A a1, A a2 ) {
.....
}void f2 () {
A a1, a2;
f1 ( a1, a2 );
}Испортить можно всё :)
PS. Как было написано у Буча: "Даже адепты языка CLOS стараются не использовать все его возможности".
косяков в этом коде не вижу.
При передаче управления в f1, для обоих параметров будет вызван конструктор копирования. Если класс A тривиальный, не проблема, а если нет -- лишние затраты на создание копии.А еще, дополнительный источник тормозов -- чрезмерное использование виртуальных методов. При передаче управления виртуальному методу, надо прочитать указатель на метод из VTable, после перейти по нему. В этом смысле, шаблоны и подход осуществленный в STL рулят, т.к. минимизируют количество виртуальных методов.
Уже интересно. А как тогда правильно?
А правильность уже зависит от того, что вы хотите получить.
Чтобы избежать оверхеда с копированием, можно передавать, как указатель, либо как ссылку. Вообще, параметры _НЕ_ИЗМЕНЯЮЩИЕСЯ_ в функции, рекомендуется передавать, как константную ссылку. Ну, понятно, что передавать "const char& ch", изврат, ессно! :-) В общем, здесь тоже надо смотреть по обстоятельствам.
В Java скорость вызова методов примерно в 20 раз выше, чем в C++.
http://keithlea.com/javabench/dataВ Java в параметры методов передаются копии значений, в том числе и ссылки на объекты передаются отдельными копиями (ссылок, а не объектов!). При этом GC учитывает все копии ссылок на объекты, в том числе и те, которые были переданы в качестве параметров методов.
А вот, например, другие результаты:http://shootout.alioth.debian.org/u32/benchmark.php?test=all...
Java, как видно, соснула в разы, особенно по памяти.
>А вот, например, другие результатыА что там? Не увидел конкретики — все тесты свалены в кучу, выбран средний результат.
>Java, как видно, соснула в разы, особенно по памяти.
Память больше не ресурс. 2ГБ сейчас стоят около 1000 рублей и продолжают дешеветь. Java нуждается в памяти так же, как ZFS нуждается в ней. То есть выделенная память используется наиболее эффективно. Правда, смотря по разгону Python'а, можно и этого достоинства лишиться. Deluge, например, кушает как не в себя. :))
> Память больше не ресурсВон из профессии!
> Вон из профессии!64 гига памяти на java-машину стоят менее одного человекамесяца труда квалифицированного программиста.
> В Java скорость вызова методов примерно в 20 раз выше, чем в C++.Вобщем-то, что я и говорил по поводу виртуальных функций.
class Toggle {
public:
....
virtual Toggle& activate() {
....
}
....
};class NthToggle : public Toggle {
public:
....
Toggle& activate() {
....
}
....
};Toggle *toggle = new Toggle(val);
for (int i=0; i<n; i++) {
val = toggle->activate().value();
}....
NthToggle *ntoggle = new NthToggle(val, 3);
for (int i=0; i<n; i++) {
val = ntoggle->activate().value();
}Это говорит лишь о конкретном компиляторе, но не о всех компиляторах.
В данном случае, не смотря на "виртуальность" ф-ции, контекст их использования известен, по этому, компилятор мог бы их и проинлайнить, результат работы от этого бы не изменился. Тем неменее, он этого не сделал и результат на лице. Как я понимаю, Server JVM, в конечном коде, который выполняется на процессоре (врядли при подобной скорости там интерпретируется байткод) это учла.Так же там использовался gcc-3.3.1, мягко говоря, далеко не самый последний. Уж 4.5.5 на дворе, 4.6 ветка на подходе. Насколько помню, вроде были новости, что там не слабо оптимизацию подвинули.
> Уж 4.5.5 на дворе, 4.6 ветка на подходе.Прошу прощения.
4.4.5, ессно! Или 4.5.2...
>В Java скорость вызова методов примерно в 20 раз выше, чем в C++.http://keithlea.com/javabench/index
>Despite its obvious flaws, this benchmark continues drawn a lot of attention and e-mail.Быдлокодинг быдлокодингом, а vuze c eclipse как были коровами так и остались, сколько память не дешевела и процы не разгонялись. Схожие по функциональности µTorrent, kdevelop работают намного быстрей.
> Быдлокодинг быдлокодингом, а vuze c eclipse как были коровами так и остались,
> сколько память не дешевела и процы не разгонялись. Схожие по функциональности
> µTorrent, kdevelop работают намного быстрей.Если бы Eclipse и Vuse переписали бы на C++, то они бы не взлетели вообще. Вот такая вот сложность присутствует.
кедовцам и кутэшнигам это расскажи. вместе посмеётесь.
Под явой стоит понимать только Java EE, остальные реинкарнации - так, с боку припёка.
Правильно - забыть про C++
ну ты и быдлокодер значит. В функцию надо передавать объекты по ссылке
>Пару лет назад было показано, что _реальные_ программы на цпп работают _медленнее_ чем их жаба-аналоги.Толсто
>А всё от того, что отдельные быдло-кодеры пишут на цпп так:
Т.е. вы выбираете те средства, что наиболее податливы для "быдло-кодеров"?
Вы их не видели просто. Java EE исполняется быстрее нативного си-кода.
> Вы их не видели просто. Java EE исполняется быстрее нативного си-кода.Доооооо
В относительном приросте Objective C круче Питона. По сравнению с 2009 рост более чем в 2 раза.
> В относительном приросте Objective C круче Питона. По сравнению с 2009 рост
> более чем в 2 раза.Obj-c хороший язык. Простой и мощный. С отличными развитыми каркасами. Да и сама процедура разработки под Мак ОС довольно незатейлива.
Tcl/Tk незаслуженно забыт, имхо. Только где-то в недрах всяких Cisco используется, да и то по историческим причинам. Изюмительный, очень высокоуровневый, легко расширяемый, кроссплатформенный и с собственным граф. тулкитом - где вот он?
> ... где вот он?Его придавило Питоном
Честно говоря, кроме старой версии инсталлера S.u.S.E,
и морды для Citrix я особо-то и не помню где его видел.
У Xilinx'а, в его среде для разработки под ПЛИС, используется для написания скриптов.
его придавило РМСом =) < Заметный удар по популярности языка нанёс Ричард Столлман, опубликовав в сентябре 1994 г. в ряде новостных групп рекомендацию «Почему вы не должны использовать Tcl». > http://ru.wikipedia.org/wiki/Tcl
"Тем не менее, рост Tcl-разработчиков за этот период составил 600%" - оттуда же.
Столлман, по-моему, эффектно слил, по-другому эти субъективные капризы тяжело назвать. Синтаксис, видите ли, непривычный - это смотря что считать привычным, любимый столлмановский Lisp тоже тяжело назвать привычным для большинства программистов. Синтаксис Tcl минималистичен и вполне последователен. Или то, что он "не разработан как серьезный язык программирования" - во-первых, есть и такая ниша, скриптинг, небольшие несложные программы на основе компонентов; во-вторых, Остераут его для того и разрабатывал, а, в третьих, давайте позволим судить об этом тем, кто этим языком реально пользуется? Остераут сам охренел, узнав, что на Tcl написаны полмиллиона строк для какой-то нефтяной платформы. А про притягательность для хакеров я вообще не понял, вспомнить перл тут было бы более уместно, а потом, что плохого в этой притягательности?
> есть и такая ниша, скриптинг, небольшие несложные программы на основе компонентов; во-вторых, Остераут его для того и разрабатывалчисто из интересу что мешает программировать на "нормальных" языках скрипты, примерно так как это здесь реализовано http://gosu-lang.org/intro.shtml раздел "Gosu Programs" ? (ну кроме того что нет инфраструктуры компиляции при первом запуске такого "скипта" и сохранения в кеше откомпиленного)
Всегда интересовали небольшие "чистые" языки программирования с полным доступом к ядру интерпретатора. Проще синтаксис - меньше аксиом в грамматике и семантике языка, больше можно реализовать всяких хитрых парадигм вроде функциональной.
> Всегда интересовали небольшие "чистые" языки программирования с полным доступом к ядру
> интерпретатора. Проще синтаксис - меньше аксиом в грамматике и семантике языка,
> больше можно реализовать всяких хитрых парадигм вроде функциональной.есть мультипарадигменные языки типо D, при программировании не обязательно использовать все подряд свойства языка а база обычно весьма проста - если бы к ним прилагалась инфраструктура типо питоньей для запуска сходу и библиотека для работы со свойствами обычно используемыми в скриптах - был бы такой язык используем для скриптования ?
например на мой взгляд цепочка вызовов методов объекта ничем не отличается от цепочки перенаправлений обработки вывода в баш-скриптах
> Tcl/Tk незаслуженно забыт, имхо. Только где-то в недрах всяких Cisco используется, да
> и то по историческим причинам. Изюмительный, очень высокоуровневый, легко расширяемый,
> кроссплатформенный и с собственным граф. тулкитом - где вот он?Угу, только в этом ЯП можно написать такое:
1=2;
Да ладно! Таких языков полно. Forth, например.
>> Tcl/Tk незаслуженно забыт, имхо. Только где-то в недрах всяких Cisco используется, да
>> и то по историческим причинам. Изюмительный, очень высокоуровневый, легко расширяемый,
>> кроссплатформенный и с собственным граф. тулкитом - где вот он?
> Угу, только в этом ЯП можно написать такое:
> 1=2;
#!/bin/bash[ 1 = 2 ];
echo $?;
set 1=2;
echo $1;
set 1 = 2;
echo $*$:~> ./test.sh
1
1=2
1 = 2:)
Надеюсь новоиспеченные веб-фреймворки типа Mojolicious вытянут популярность языка Perl на более висший уровень.
Ну и плюс perl6, который будем надеяться скоро допилят
Пока быстродействие perl6 только оставляет желать лучшего
> Пока быстродействие perl6 только оставляет желать лучшегоДа вроде, ребята пока заняты полной реализацией спецификации (по последним данным что-то около 90%), и потихоньку пилят производительность.
Вся надежда на Parrot! Хочется чтобы сделали удобный переходной мостик из Perl6 в CPAN Perl5. =)
Это точно.
А уж для системных скриптов питон уж вряд ли перл вытеснит.
Хотя поживем - увидим.
Да, будем надеяться! Mojo, Dancer, Moose, различные событийные фреймоврки, это явно поможет перлу в поднятии популярности! =)
Может быть. Хотя - аналоги всему этому есть в том же питоне ...
Вобщем поживем - будем посмотреть! :)
> на основе анализа статистики поисковых запросовУгу, и смысла в этом столько же, сколько в вычисление рейтина президента по позиции в музыкальном хит-параде.
у них флуктуации огромные, javascript в 2 раза упал за последний год, бред.
> у них флуктуации огромные, javascript в 2 раза упал за последний год,
> бред.Согласен, скорее всего это связано с изменениями в алгоритмах сбора статистики, а не изменением популярности языка.
Питон радует )
О! Питон самый трендовый. Внезапно же. Кто бы мог подумать.
Просветите, что случилось между 2004 и 2006 что так упала популярность джавы? Питон 2.4?
> Просветите, что случилось между 2004 и 2006 что так упала популярность джавы? Питон 2.4?Поскольку абсурдный индекс тиобе основан на результатах гуглопоиска (см.выше) то очевидно стали меньше задавать на форумах вопросов - а как на жабе поделить 2 на 2, и больше вопросов - а как на питоне поделить 2 на 2.
такой бредовый метод построения статистики у этой TIOBE Software. Я весть такой сижу теперь, и верю в питон :)
Что же мы делаем, друзья? Зачем обижаем Perl? Нужно постараться и поднять его в тройку лидеров! Это действительно Великий Язык, он того заслуживает!
Конкретные предложения будут?
Провести Perl Fest 2011 )
> Провести Perl Fest 2011 )В мае в дефолт-сити две будут. В латвии августе еще одна.
> Конкретные предложения будут?Нужен сайт для новичков в Perl в рунете. А то ничего такого вменяемого нету к сожалению.
>Конкретные предложения будут?каждый запустит у себя на сервере скрипт, который будет бомбить гуугл поисковыми запросами со словом "perl"
:)
Истинно же. =)
C# тут точно не место
Судя по Тиобе, дела у шарпа идут не блестяще. Растет, но медленнее, чем падает васик. А очевидно же - с васика мигрируют в основном на шарп. Вот и получается - весь рост только за счет поедания трупа васика, и то он его не успевает съесть целиком...
А где Haskell?
На 41м месте (читай "в глубокой попе").
У TIOBE получился рейтинг популярности языков среди людей, не умеющих решать проблемы самостоятельно.
Т.е. рейтинг довольно неоднозначный - в определёной степени низкое значение свидетельствует о технической продвинутости языка.
Не столько о продвинутости, сколько скажем о качестве сопутствующей документации. Если в perldoc можно найти ответ на почти любой вопрос, то разработчик, научившись раз им пользоваться гуглить почти перестанет.
Вот вам и ответ, как перлу рейтинг накрутить. Начинаем дружно гуглить нубские вопросы по сабжу (^-^)
> У TIOBE получился рейтинг популярности языков среди людей, не умеющих решать проблемы
> самостоятельно.неумение решать проблемы самостоятельно это когда на каком-нибудь форуме или stackoverflow просто пишут "как мне сделать все зашибись" и ждут ответов с готовыми кусками кода. А умение нагуглить решение проблемы это все-таки скилл. Джава платформа огромная, знать все невозможно; документация, к сожалению, порой не все отражает, поэтому приходится гуглить.
> Т.е. рейтинг довольно неоднозначный - в определёной степени низкое значение свидетельствует
> о технической продвинутости языка.ищут не только для того чтобы найти решение проблемы, ищут более подробную информацию о языке, новых технологиях с ним связанных, мануаллы и пр. Поэтому низкий рейтинг в очень редких случаях будет означать техническую продвинутость или законченность языка. Наоборот, чем больше функций, тем больше информации о них будут искать.
C/C++ во веки веков!
+1 ну не надо таких высказыванийа то не интересно читать сабж про крутость жабы XDDD
Не пойму, в чем смысл таких рейтингов. Ну применяется Java чаще C++, и что из этого следует?
Чисто теоретически. Если у языка и сопутствующих его платформ есть отличный, просто идеальный мануал, тогда он в этот рейтинг и не попадет :)))
а шо есть в рейтинге язык без мануала ?
a) существуют ли языки позволяющие:
1) для класса/функции/участка нити алгоритма указывать какая требуется оптимизация ?
2) для функции указать компилятору при каких ограничениях входных значений функция быстра или указать что работает как o(f(n)) или сам компилятор способен ли это определить ?
3) в объектной модели при создании объектов использовать интерфейс (а не непосредственно класс) с указанием компилятору требований необходимой реализации чтоб сам компилятор выбрал из наличествующих реализаций конкретный класс под требования ?b) отдельно - есть ли языки программирования с "алгоритмическим" (типо блоксхемно-описательным) стилем ?
c) существуют ли языки (не программирования а описательные скорее) с удобной или автоматической валидацией теорем-утверждений, с удобной работой с самими утверждениями ?
типо есть аксиомы и по ним проверять теоремы, раскладывать теоремы на составляющие теоремы и аксиомы
>>1) для класса/функции/участка нити алгоритма указывать какая требуется оптимизация ?asm
>>2) для функции указать компилятору при каких ограничениях входных значений функция быстра или указать что работает как o(f(n)) или сам компилятор способен ли это определить ?
зачем явно указывать o(f(n)) если можно выполнить как o(1)
>>3) в объектной модели при создании объектов использовать интерфейс (а не непосредственно класс) с указанием компилятору требований необходимой реализации чтоб сам компилятор выбрал из наличествующих реализаций конкретный класс под требования ?
объект - экземпляр класса, класс - пользовательский тип данных, интерфейс - обёртка, компилятор вам не ИИ - ибо нах ваще создавать язык программирования если всё будет делать компилятор ?
>>b) отдельно - есть ли языки программирования с "алгоритмическим" (типо блоксхемно-описательным) стилем ?
MC VS XDDDDD
>>c) существуют ли языки (не программирования а описательные скорее) с удобной или автоматической валидацией теорем-утверждений, с удобной работой с самими утверждениями ?
типо есть аксиомы и по ним проверять теоремы, раскладывать теоремы на составляющие теоремы и аксиомы
MathLab XDD
>>>1) для класса/функции/участка нити алгоритма указывать какая требуется оптимизация ?
> asmспасибо, а то на баше не смешно нонче
>>>2) для функции указать компилятору при каких ограничениях входных значений функция быстра или указать что работает как o(f(n)) или сам компилятор способен ли это определить ?
> зачем явно указывать o(f(n)) если можно выполнить как o(1)разворачивание алгоритмов это вопрос оптимизации, данный же вопрос относится к алгоритмизации на понимаемом компиляторе языке для дальнейшего использования в оптимизациях
>>>3) в объектной модели при создании объектов использовать интерфейс (а не непосредственно класс) с указанием компилятору требований необходимой реализации чтоб сам компилятор выбрал из наличествующих реализаций конкретный класс под требования ?
> объект - экземпляр класса, класс - пользовательский тип данных, интерфейс - обёртка,спасибо, Кэп!
итого я могу запросить такой объект который [(катается + красный) * максимально сытный] а будет ли это морковка, помидор или яблоко - подсчитает компилятор> компилятор вам не ИИ - ибо нах ваще создавать язык программирования
> если всё будет делать компилятор ?зачем вам компьютер если вы на счётах трушно посчитаете ? вы и ещё 100500 ваших клонов, а кто плохо считать будет того пустят на корм остальным 100499
>>>b) отдельно - есть ли языки программирования с "алгоритмическим" (типо блоксхемно-описательным) стилем ?
> MC VS XDDDDDнегуглится, или уточните или пишите без орфографических ошибок
>>>c) существуют ли языки (не программирования а описательные скорее) с удобной или автоматической валидацией теорем-утверждений, с удобной работой с самими утверждениями ?
> типо есть аксиомы и по ним проверять теоремы, раскладывать теоремы на составляющие
> теоремы и аксиомы
> MathLab XDDпока пользовался только Математикой, там нет нормального языка описания общих утверждений
в матлабе есть язык для работы с _ОБЩИМИ_ утверждениями ? есть ли к нему средства обработки отдельные от матлаба ?
> объект - экземпляр класса, класс - пользовательский тип данных, интерфейс - обёртка,
> компилятор вам не ИИ - ибо нах ваще создавать язык программирования
> если всё будет делать компилятор ?Наверное сильно удивитесь, но большинство ОО-языков способствуют объявлению не типов, а интерфейсов. Типы вообще редко используются.
Да и GoF постулируют именно использование интерфейсов, а не типов.
>[оверквотинг удален]
> 3) в объектной модели при создании объектов использовать интерфейс (а не непосредственно
> класс) с указанием компилятору требований необходимой реализации чтоб сам компилятор выбрал
> из наличествующих реализаций конкретный класс под требования ?
> b) отдельно - есть ли языки программирования с "алгоритмическим" (типо блоксхемно-описательным)
> стилем ?
> c) существуют ли языки (не программирования а описательные скорее) с удобной или
> автоматической валидацией теорем-утверждений, с удобной работой с самими утверждениями
> ?
> типо есть аксиомы и по ним проверять теоремы, раскладывать теоремы на составляющие
> теоремы и аксиомыПо всем этим вопросам можно смело стереотипно ответить - да ))
>[оверквотинг удален]
>> класс) с указанием компилятору требований необходимой реализации чтоб сам компилятор выбрал
>> из наличествующих реализаций конкретный класс под требования ?
>> b) отдельно - есть ли языки программирования с "алгоритмическим" (типо блоксхемно-описательным)
>> стилем ?
>> c) существуют ли языки (не программирования а описательные скорее) с удобной или
>> автоматической валидацией теорем-утверждений, с удобной работой с самими утверждениями
>> ?
>> типо есть аксиомы и по ним проверять теоремы, раскладывать теоремы на составляющие
>> теоремы и аксиомы
> По всем этим вопросам можно смело стереотипно ответить - да ))"имя!! назови мне имя!!!!" (с)
Да имён - масса. Всё, что вызвало ваши вопросы, реализовано и существует. В работу большинство современных промышленных компиляторов вмешивать не имеет смысла. Можно, конечно, что-то покрутить в препроцессоре, но толку от этого, скорее всего, не будет. Лучшие компилятор сейчас довольно интеллектуальны. Уж точно, более интеллектуальны, чем средний прогер.Большинство ОО-языков имеют общий объектный тип, вроде id в obj-c. И динамическая типизация вполне успешно применяется на практике. У неё есть свои явные плюсы, но и свои явные минусы.
UML имеет развитые средства описания ограничений и трансляции диаграмм в целевой код.
>> типо есть аксиомы и по ним проверять теоремы, раскладывать теоремы на составляющие
>> теоремы и аксиомыФункциональные языки позволяют реализовать нечто подобное.
> В работу большинство современных промышленных компиляторов вмешивать не имеет смысла.
> Можно, конечно, что-то покрутить в препроцессоре, но толку от этого, скорее
> всего, не будет. Лучшие компилятор сейчас довольно интеллектуальны. Уж точно, более
> интеллектуальны, чем средний прогер.почему тогда до сих пор популярны ассемблерные вставки которые реально увеличивают производительность участков ?
> Большинство ОО-языков имеют общий объектный тип, вроде id в obj-c. И динамическая
> типизация вполне успешно применяется на практике. У неё есть свои явные
> плюсы, но и свои явные минусы.либо я вас не понял, либо вы меня
динамическая типизация позволяет мне сделать такое ?Интерфейс ИнтерфейсЕда {
function void сьесть()
}Класс Помидор реализует ИнтерфейсЕда {
@Красное //описание свойств класса или автовычислимое компилятором или заботливо созданное программистомfunction void сьесть() @вес 150 калорий //описание свойств метода класса --//--
}
Класс Огурец реализует ИнтерфейсЕда {
@Зелёное
@вес 350 калорий
}
Класс Яблоко реализует ИнтерфейсЕда {
@Красное
@вес 1350 калорий
}
Класс Морковь реализует ИнтерфейсЕда {
@Красное
@вес 50 калорий
}ИнтерфейсЕда a = new ИнтерфейсЕда()[пусть она красная; пусть в сьесть() калорий < 200]
и в результате у меня в a - Морковь или Помидор (что из них конкретно - выбирается по внутренним соображениям компилятора)
например я бы хотел использовать вместо цвета - вес класса, а вместо калорийности - время выполнения метода при входящих параметрах x, y и z
> UML имеет развитые средства описания ограничений и трансляции диаграмм в целевой код.многие жалуются на результаты такой трансляции и говорят что приходится полностью самостоятельно переписывать, а UML подходит только чтоб эти схемы на стену повесить и смотря на них кодить
>>> типо есть аксиомы и по ним проверять теоремы, раскладывать теоремы на составляющие
>>> теоремы и аксиомы
> Функциональные языки позволяют реализовать нечто подобное.не подскажите как это вобще называется по научному, я не оч понимаю как это можно реализовать в функциональных языках
> например я бы хотел использовать вместо цвета - вес класса, а вместо
> калорийности - время выполнения метода при входящих параметрах x, y и zКак только вы сможете дать математическиое определение таким понятиям как "вес класса" и "время выполнения метода при входящих параметрах x, y и z". Даю подсказку, следущие параметры в общем случае никак не связаны между собой: количество строк исходного кода, время компиляции, объем байткода, результирующее количество инструкций процессора, потребляемая память различных видов, процессорное время, реальное время, нагрузка на IO. Также стоит помнить, что кроме воображаемого мира адептов функциональщины существует еще реальный мир, в котором время выполнения и результат функций/методов зависит от состояния внешних объектов.
> многие жалуются на результаты такой трансляции и говорят что приходится полностью самостоятельно
> переписывать, а UML подходит только чтоб эти схемы на стену повесить
> и смотря на них кодитьА многие жалуются на отсутствие кнопки "сделать все за меня" и что дальше? UML это инструмент, применять нужно с умом и в подходящих условиях. Ожидать что он сделает за вас всю работу просто глупо, а вот сократить рутину и улучшить читабельность вполне может.
>> например я бы хотел использовать вместо цвета - вес класса, а вместо
>> калорийности - время выполнения метода при входящих параметрах x, y и z
> Как только вы сможете дать математическиое определение таким понятиям как "вес класса"
> и "время выполнения метода при входящих параметрах x, y и z".
> Даю подсказку, следущие параметры в общем случае никак не связаны между
> собой: количество строк исходного кода, время компиляции, объем байткода, результирующее
> количество инструкций процессора, потребляемая память различных видов, процессорное
> время, реальное время, нагрузка на IO. Также стоит помнить, что кроме
> воображаемого мира адептов функциональщины существует еще реальный мир, в котором время
> выполнения и результат функций/методов зависит от состояния внешних объектов.алгоритмы часто имеют известную сложность от входящих и потребление памяти в логических единицах от входящих (а ещё их можно множить на размер логических единиц в байтах)
а f(g(n)) при работе с внешним объектом с характеристикой g(n) вполне считать можно
зы: ни кто не мешает в "условиях вызова" указывать диапазоны значений, а в условиях функций - диапазоны и характерные функции к ним
> UML это инструмент, применять нужно с умом и в подходящих
> условиях. Ожидать что он сделает за вас всю работу просто глупоа почему собсно бы и не всю работу ? UML я правда лично ещё не смотрел толком но не понимаю что мешает из блоксхемы с нормально расписанными условиями, циклами и прочим делать нормальный код, разбитый по модулям/классам в соответствии с разбивкой в блоксхеме
по крайней мере для жавы я представляю себе и преобразование кода в блоксхему и обратное преобразованиезы: и я таки хочу всё вместе:
и возможность описания требуемых мне автоматических оптимизаций
и возможность описывать код характеризующими функциями с возможностью выбора оптимального варианта для данных входных значений компилятором (фактически сейчас это можно реализовывать через фабрику-обёртку-дао где делать ифы и по результатам возвращать оптимум - НО это приходится делать руками... работу с объектами можно тоже сделать через функциональщину - но ручками то писать неохото когда за человека способна поработать железяка - прописать таблицы вызовов и выбор, попутно ещё и оптимизировав... что-то в этом духе http://rainman-rocks.livejournal.com/122876.html ==> повышаем декларативность так сказать..)
и возможность переходить в блоксхемный вид (куда более наглядный и раскрывающий связи) и обратно с возможностью "писать код" в обоих по своему выбору где мне удобнее (тоесть преобразование язык-блоксхема должно быть достаточно однозначным)
> a) существуют ли языки позволяющие:
> 1) для класса/функции/участка нити алгоритма указывать какая требуется оптимизация ?Можно костылями - для каждого .o свои ключи оптимизации указывать. На уровне языка - это не совсем его задача, тут разве что кейворды типа inline.
> 2) для функции указать компилятору при каких ограничениях входных значений функция быстра
> или указать что работает как o(f(n)) или сам компилятор способен ли
> это определить ?Сам определить? Такие требования скорее для ИИ, а его нет. А учет в алгоритме, при каких параметрах функция быстра - собственно, и есть работа программиста. Чем-то отдаленно напоминающее есть в функциональных языков (задание функций по входным значениям), например, в Haskell
> 3) в объектной модели при создании объектов использовать интерфейс (а не непосредственно
> класс) с указанием компилятору требований необходимой реализации чтоб сам компилятор выбрал
> из наличествующих реализаций конкретный класс под требования ?Это как? Сам пошел в аналог CPAN и скачал нужные модули? =) Вообще всё сообщение по требованиям смахивает на кнопку "сделайте мне хорошо" (т.е. работу за меня).
> b) отдельно - есть ли языки программирования с "алгоритмическим" (типо блоксхемно-описательным)
> стилем ?Лого или черепашка =)
Вообще-то все попытки создать такое провалились. Известный пример - UML. Ну и правильно - мышление должно быть текстовым.
Еще можно на http://c2.com/cgi/wiki?FlowBasedProgramming посмотреть, хотя это не то.
> c) существуют ли языки (не программирования а описательные скорее) с удобной или
> автоматической валидацией теорем-утверждений, с удобной работой с самими утверждениями
> ?
> типо есть аксиомы и по ним проверять теоремы, раскладывать теоремы на составляющие
> теоремы и аксиомыНу да, их так и называют - декларативные/логические (третья парадигма, кроме императивной и функциональной). Пример - Prolog.
>> a) существуют ли языки позволяющие:
>> 1) для класса/функции/участка нити алгоритма указывать какая требуется оптимизация ?
> Можно костылями - для каждого .o свои ключи оптимизации указывать. На уровне
> языка - это не совсем его задача, тут разве что кейворды
> типа inline..o это слишком глобально, у моего вопроса уши растут из "почему ассемблерные вставки до сих пор повышают производительность?" ибо по факту асм-вставка и есть прямое указание компилятору "как оптимизировать этот кусок" в виде "ничего не трогай, просто перепиши как тут буква в букву"
>> 2) для функции указать компилятору при каких ограничениях входных значений функция быстра
>> или указать что работает как o(f(n)) или сам компилятор способен ли
>> это определить ?
> Сам определить? Такие требования скорее для ИИ, а его нет. А учет
> в алгоритме, при каких параметрах функция быстра - собственно, и есть
> работа программиста. Чем-то отдаленно напоминающее есть в функциональных языков (задание
> функций по входным значениям), например, в Haskellв математике теория алгоритмов весьма же развита, из программы часто можно построить её граф выполнения, можно оценить трудозатраты на выполнение участка графа (это к вопросу об ИИ компилятора)
работа программиста - перевод ТЗ заказчика с русского на язык понятный компьютору, чтоб он по этому ТЗ мог выдать результат в понимаемом заказчиком виде
выбор же варианта алгоритма под конкретную задачу не сложнее тупого перебора всех возможных вариантов алгоритмов решающих конкретную задачу с учётом нужных условий
а вот на сколько хорош алгоритм и в каких условиях - этим занимается математика (а не программист, если говорить по серьёзному)
но не существует в математике готовых алгоритмов на все случаи жизни, только поэтому программист не является совсем ремесленником а таки и творцом нового - учёным-математиком, создаёт новый алгоритм по "переводу тыканья мышкой клавиш в годовой отчёт с графиками"
однако алгоритмы сортировки массива созданы и детально разобраны математиками и по факту программисту остаётся только выбрать лучший для его задачи - а это работа "ремесленника" которую способен осуществить компьютор (хотяб методом тупого перебора всех возможных вариантов алгоритма сортировки), но компьютор не в состоянии выбрать "предпочтения" которые может иметь программист в своём глобальном алгоритме "годового отчёта">> 3) в объектной модели при создании объектов использовать интерфейс (а не непосредственно
>> класс) с указанием компилятору требований необходимой реализации чтоб сам компилятор выбрал
>> из наличествующих реализаций конкретный класс под требования ?
> Это как? Сам пошел в аналог CPAN и скачал нужные модули? =)
> Вообще всё сообщение по требованиям смахивает на кнопку "сделайте мне хорошо"
> (т.е. работу за меня).почти - посмотрел все инклуды (инклуды модулей, неймспейсов, аль ещё какие) - нашёл все реализации требуемого интерфейса и выбрал нужный основываясь на пожеланиях указаных программистом
это вполне рабочая кнопка "сделать мне хорошо" - такая же как современное автодополнение в ИДЕ>> b) отдельно - есть ли языки программирования с "алгоритмическим" (типо блоксхемно-описательным)
>> стилем ?
> Вообще-то все попытки создать такое провалились. Известный пример - UML. Ну и
> правильно - мышление должно быть текстовым.на сколько я понял UML по факту не предназначен именно для программирования
я вобще тут подумал-прикинул - для любого языка можно сделать прямое отображение код-блоксхема и блоксхема-код, всё упирается в наличие готового инструмента и качество кодогенератора из блоксхемного описания
тут уже встал вопрос - почему компиляторы не переводят программы в алгоритмическое описание (точнее почему это описание не является каноническим "исходным кодом" для последующей оптимизации и кодогенерации для всяких llvm)и с какого перепуга мышление должно быть текстовым ? графическую информацию об общем виде гораздо проще воспринимать и передавать чем в текстовом
потому же кстати и существуют графические конфигурялки что в них можно "окинуть взглядом" сразу большую часть картины и при этом не обязательно вникать и переводить символьную информацию в понимание
текстовой формат удобен для формального описания формальных признаков - конкретики
кстати если требуется описать конкретный стол - фотография куда лучше подойдёт для этих целей, но если требуется указать "просто стол" или "класс столов" то тут текстовой путь куда короче - "письменный стол" или "парта со скошеной столешницей"
>>> a) существуют ли языки позволяющие:
>>> 1) для класса/функции/участка нити алгоритма указывать какая требуется оптимизация ?
>> Можно костылями - для каждого .o свои ключи оптимизации указывать. На уровне
>> языка - это не совсем его задача, тут разве что кейворды
>> типа inline.
> .o это слишком глобально,Никто не мешает реорганизовать проект так, чтобы соответствующие функции попадали в нужные .o - в конце концов, в былые времена иные .o вообще могли генерироваться из другого языка (того же ассмблера, например).
> у моего вопроса уши растут из "почему ассемблерные
> вставки до сих пор повышают производительность?" ибо по факту асм-вставка и
> есть прямое указание компилятору "как оптимизировать этот кусок" в виде "ничего
> не трогай, просто перепиши как тут буква в букву"Хе. Повышают где/у кого/на каком языке/в каких условиях? В ряде случаев современные компиляторы уже оптимизируют код гораздо эффективнее, чем ручные ассемблерные вставки. Потому что процессоры нынче такие - удержать в голове все их конвееры и прочие особенности уже весьма сложно.
>[оверквотинг удален]
> в математике теория алгоритмов весьма же развита, из программы часто можно построить
> её граф выполнения, можно оценить трудозатраты на выполнение участка графа (это
> к вопросу об ИИ компилятора)
> работа программиста - перевод ТЗ заказчика с русского на язык понятный компьютору,
> чтоб он по этому ТЗ мог выдать результат в понимаемом заказчиком
> виде
> выбор же варианта алгоритма под конкретную задачу не сложнее тупого перебора всех
> возможных вариантов алгоритмов решающих конкретную задачу с учётом нужных условий
> а вот на сколько хорош алгоритм и в каких условиях - этим
> занимается математикаРжал. Если уж речь о графах, математике и переборе зашла, может, про NP-полные задачи и их вычислительной сложности пора вспомнить, а?
> занимается математика (а не программист, если говорить по серьёзному)
> но не существует в математике готовых алгоритмов на все случаи жизни, только
> поэтому программист не является совсем ремесленником а таки и творцом нового
> - учёным-математиком, создаёт новый алгоритм по "переводу тыканья мышкой клавиш в
> годовой отчёт с графиками""Ученый-математик" занимается годовым отчетом, опеннет нынче вместо цирка читать можно.
> однако алгоритмы сортировки массива созданы и детально разобраны математиками и по факту
> программисту остаётся только выбрать лучший для его задачи - а это
> работа "ремесленника" которую способен осуществить компьютор (хотяб методом тупого перебора
> всех возможных вариантов алгоритма сортировки), но компьютор не в состоянии выбрать
> "предпочтения" которые может иметь программист в своём глобальном алгоритме "годового
> отчёта"Не способен, потому что ему задача неизвестна. Компьютер - он думать не умеет.
>[оверквотинг удален]
>>> класс) с указанием компилятору требований необходимой реализации чтоб сам компилятор выбрал
>>> из наличествующих реализаций конкретный класс под требования ?
>> Это как? Сам пошел в аналог CPAN и скачал нужные модули? =)
>> Вообще всё сообщение по требованиям смахивает на кнопку "сделайте мне хорошо"
>> (т.е. работу за меня).
> почти - посмотрел все инклуды (инклуды модулей, неймспейсов, аль ещё какие) -
> нашёл все реализации требуемого интерфейса и выбрал нужный основываясь на пожеланиях
> указаных программистом
> это вполне рабочая кнопка "сделать мне хорошо" - такая же как современное
> автодополнение в ИДЕИз всея Интернета-то? Или в таком IDE предполагается держать скачанными десятки гигабайт всех имеющихся библиотек для языка?
Если "такая же" и "вполне рабочая" - так пойдите и сделайте, в чем проблема-то.
>>> b) отдельно - есть ли языки программирования с "алгоритмическим" (типо блоксхемно-описательным)
>>> стилем ?
>> Вообще-то все попытки создать такое провалились. Известный пример - UML. Ну и
>> правильно - мышление должно быть текстовым.
> на сколько я понял UML по факту не предназначен именно для программированияОн таким задумывался, кодогенераторы же есть. А по факту да, провалился.
> я вобще тут подумал-прикинул - для любого языка можно сделать прямое отображение
> код-блоксхема и блоксхема-код, всё упирается в наличие готового инструмента и качество
> кодогенератора из блоксхемного описанияНа каком уровне, обернув каждую лексему в свой блок? =) Да, можно, AST и получится, вот только толку от такого уровня детализации немного. А попытки в более общем виде создать "для любого" таки провалились (для разнообразных DSL успешные попытки бывали, да).
Кстати, насчет восторженности по поводу блок-схем, Брукс еще в 75 году проехался, рекомендую перечитать соответствующую главу.
> тут уже встал вопрос - почему компиляторы не переводят программы в алгоритмическое
> описание (точнее почему это описание не является каноническим "исходным кодом" для
> последующей оптимизации и кодогенерации для всяких llvm)Это в школу, читать Dragon book (Ахо и Ульман по компиляторам) и много думать.
> и с какого перепуга мышление должно быть текстовым ? графическую информацию об
> общем виде гораздо проще воспринимать и передавать чем в текстовом
> потому же кстати и существуют графические конфигурялки что в них можно "окинуть
> взглядом" сразу большую часть картины и при этом не обязательно вникать
> и переводить символьную информацию в понимание
> текстовой формат удобен для формального описания формальных признаков - конкретики
> кстати если требуется описать конкретный стол - фотография куда лучше подойдёт для
> этих целей, но если требуется указать "просто стол" или "класс столов"
> то тут текстовой путь куда короче - "письменный стол" или "парта
> со скошеной столешницей"Я развеиванием наивностей заниматься не буду, просто дам ссылки, где это давно уже умными людьми всё пережевано, подробно:
http://c2.com/cgi/wiki?VisualProgrammingLanguage
http://c2.com/cgi/wiki?GraphicalProgramming
http://c2.com/cgi/wiki?GraphicalProgrammingLanguage
http://c2.com/cgi/wiki?FlowChartТам достаточно, здесь эту дискуссию можно не продолжать.
Basic true по ходу. Не ожидал его увидеть в рейтинге.
Ещё бы, на нём СТОЛЬКО студентов пишут...
Плюс те, кто автоматизирует MS Office.
> Ещё бы, на нём СТОЛЬКО студентов пишут...
> Плюс те, кто автоматизирует MS Office.Если бы студенты. На Бейсике понаписано полно всякого убожества в промышленных системах. Подобным писакам надо б руки вырывать, прям из их задницы.
>На Бейсике понаписано полно всякого убожества в промышленных системах.Дык Хьюлетт его например для работы со своими приборами давал
The Agilent E2060B, HP BASIC for Windows, brings the power and ease of use of the popular HP BASIC (also known as Rocky Mountain Basic®) to the PC and the Microsoft Windows operating system.
> Если бы студенты. На Бейсике понаписано полно всякого убожества в промышленных системах.
> Подобным писакам надо б руки вырывать, прям из их задницы.Простите убожественность в данном случае это проблема писак, языка или его реализаций? На бейсике как и на любом другом скриптовом языке вполне можно грамотно писать.
Проблема в том, что язык порождает среду. И чем проще язык, тем менее строгой получается эта среда. Создаётся порочная цепочка, когда упрощение на одном уровне порождает каскад проблем на всех прочих. Строгая же среда дисциплинирует работающего с ней, заставляет думать и понимать, что он делает.
радует попадание асма в список О_о
извините а как насчёт популярности сред разработки языков программирования таких как например Qt? где можно бы узнать