vlkamov's Journal
 
[Most Recent Entries] [Calendar View] [Friends View]

Monday, December 24th, 2012

    Time Event
    12:35p
    О языках программирования
    Некоторое время назад состоялся вот такой диалог
    iamphet
    А вообще ждём, когда же появится на свете чудо-язык, который был бы мужественным и нежным мощным и удобным одновременно.

    vlkamov
    "Не дождетесь"
    Если серьезно, то ассемблер. В принципе почти любой язык можно сделать удобным, но мощный - он.

    iamphet
    Мощный в смысле залезть в I/O порты и при этом упихнуть программу в некоторое малое количество килобайт и миллисекунд? Согласен. Для остального он ничем не лучше, а зачастую и хуже любого другого языка программирования.

    vlkamov
    А что такое "остальное" ? Речь шла о мощности и удобстве. Мощность несомненна, а удобным его делает пользователь. Например, таким образом:
    http://vlkamov.livejournal.com/685130.html
    "Высокоуровневый" язык - это такая же надстройка над ассемблером, но с одним отличием, он прежде всего удобен своему автору. Максимально удобна будет сделанная самому себе надстройка над ассемблером.

    iamphet
    Я считаю довольно расточительным тратить несколько лет на то, чтобы написать язык программирования, полноценно отражающий именно мою индивидуальную разруху в голове. Большинство всё же предпочитает идти другим путём: заточить свою голову под существующие парадигмы или придумать свои парадигмы в рамках существующих языков.
    Кстати, а почему ассемблер? Если говорить про x86, то кому-нибудь может не понравиться ни интеловский синтаксис, ни AT&T и ему придётся писать свой компилятор своего ассемблера в машинных кодах.

    vlkamov
    Дело в том, что при таком подходе базовый ассемблер быстро уходит под фундамент и какой он там был - маловажно. Годы тоже не нужно тратить, т.к. необходимые кирпичики пишутся только по мере надобности.
    Более того. Я уверен, что существуют сотни C-библиотек для манипуляций с векторами, но написать такую как у меня быстрее и проще, чем разобраться в чужой. А использовать ее можно много раз - во всех векторных вычислениях - с нулевыми затратами времени.
    Просто существует предрассудок, что сделать дольше, чем воспользоватьсчя готовым.
    Но даже и для использования сторонних разработок можно с помощью define соорудить интуитивно понятный вызов.
    Ассемблер - потому что мощный. Даже прямое программирование в машинных кодах не даст улучшения.


    А вчера попался отчет о сравнении perl и python.
    Дальше меня спросили, как в python обстоят дела с регулярными выражениями, и в результате пришли мы к такой задаче:
    Есть строка, необходимо вывести все слова в ней, которые встречаются N раз.

    и я тот диалог вспомнил. Регулярные выражения очевидно в базовом питоне не предусмотрены, ну так и что ?! Для любителей регулярных выражений есть
    #!/usr/bin/env python
    import re

    То есть тот самый подход: если нравится/удобно/часто используешь что-то - сделай библиотеку. Время потратишь то же, что и на изучение чужих разработок, зато меньше нагрузка, меньше ошибок - ведь что-то удобно потому, что уже выучено. Да, это не совсем Unix way - использовать не уже готовые кирпичики, а сделать кирпичи самому под себя. Собственно высокоуровневые языки и являются такими библиотеками, и их авторы делали их по своему вкусу.

    Еще зацепило, что и питон и перл решают задачу вдвое быстрее C++. "Тут что-то не так".
    2:47p

    << Previous Day 2012/12/24
    [Calendar]
    Next Day >>

My Website   About LJ.Rossia.org