LINUX.ORG.RU
ФорумTalks

[C] Чем плохи lisp-style отступы?

 


0

3

Почему никто не использует в си отступы в стиле lisp?

void foo (int x) {
    if (x > 42)
        do_something_with(x);
    else {
        do_something_else_with(x);
        do_something_else_with_again(x); }}

По-моему, весьма удобно. Ср. также со стилем python:

def foo (x):
    if (x > 42):
        do_something_with(x);
    else:
        do_something_else_with(x);
        do_something_else_with_again(x);


Ответ на: комментарий от Eddy_Em

emacs - это вообще чуть ли не операционная система :)

Не видел, но осуждаю? Изначально там есть только текстовый редактор, org-mode и урезанный вариант cedet.

vim презираю (через одно место много чего сделано).

Примеры «черезодноместности»? Я помню только «лишнее слово» let в vimscript и не всем удобную систему режимов.

Deleted
()
Ответ на: комментарий от Eddy_Em

Да, «жуткие», зато после настройки работать в них очень удобно. Расскажи, например, как во всяких geany сделать восстановление сессии после перезапуска редактора, в том числе чтобы открылись все файлы, открытые удаленно.

Reset ★★★★★
()
Ответ на: комментарий от Deleted

Почему это? Легче охватить взглядом код не шаря при этом бешено глазами по монитору из угла в угол. А значит облегчает восприятие и интерпретацию кода. Книги альбомного варианта не пробовал читать? Видимо нет.

toon
()
Ответ на: комментарий от Eddy_Em

Во-первых, эти ваши «нормальные редакторы» уж больно жуткие, во-вторых, чтобы с ними работать для начала надо здоровенный талмуд прочесть.

Извиняюсь за оффтоп, но не могу не попытаться поставить на путь истинный. Я тоже — жуткий виндузнятник был когда-то. Пытался ради прикола перейти на линукс, но несколько первых попыток были неудачны. в конце концов перешёл. не жалею. Но и линукс сначала был windows-like: сначала kde неделя, потом xfce месяц, потом (с трудом) перешёл на fluxbox и проработал 2 года, потом (с трётьеё, наверное, попытки) перешёл на тайловый менеджер dwm: пока стаж 2 месяца, но чую, что это навсегда. Не жалею о смена kde на dwm. Плеер. Сначала был какой-то клон winampa (не помню названию). Прошло время и сейчас у меня музукальный демон mocp, с управлением через хоткеи dwm (изредка захожу в примитивный интерфейс для выбора альбома для слухания). ... тут много ещё ... Редактор (хотя фактически его надо было вначало, ибо с ним я определился в течении первого месяца пользования линуксом). Сначала был какой-то дефолтный из xfce (типа блокнота виндового). Потом nano. Потом vim попробывал. Вернулся на nano. Потом vim попробывал. Вернулся на nano. Потом vim попробывал. Вернулся на nano. Потом собрался. Потом vim попробывал. Остался. Не жалею абсолютно! Не надо его долго учить, для пользования достаточно ликбеза из серии «vim for ten minutes», а затем только :h <чё эта>. У него просто очень крутая learning curve, особенно для бывших виндузнятников. Ведь ежу понятно, что когда пишу, тогда пишу, а когда нужен «поиск и замена», тогда ctrl-<хоткей поиска и замены>, а тут нет: у вима несколько режимов и не надо никаких meta-клавиш. И действительно не надо, они только пал(ец|ьцы) занимают, которым(и) можно в носу поковыряться или комара(ов) придавить. (С емаксом у меня не сложилось. Я не говорю, что он плохой, но просто я не люблю емакс, также как не люблю омлет.) Вобщем, резюме: вы попробуйте vim/emacs. Кривая обучения крутая, но надо перебороть эту первую ступень, дальше кривая становится почти пологой. Функция Хевисайда :) Но когда выйдете на пологий участок, вас обратно уже никто не вернёт. Гарантирую.

toady2
() автор топика
Ответ на: комментарий от toon

Пробовал. Если держать этот самый альбомный лист на большом расстоянии от глаз (не менее, чем метр), чтобы не приходилось двигать глазами, читается нормально :)

Deleted
()
Ответ на: комментарий от Reset

Расскажи, например, как во всяких geany сделать восстановление сессии после перезапуска редактора, в том числе чтобы открылись все файлы, открытые удаленно.

Черт его знает. У geany версия от версии восстановление сессии ломают.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от stevejobs

Это ясно. Одно дело — синтаксис, а другое — стиль.

toady2
() автор топика
Ответ на: комментарий от Reset

Хз как в geany, но во всех остальных с сессиями все нормально. Не это главное преимущество вимоемаксов (тем более, что ни тот, ни другой сессий из коробки не умеет).

Deleted
()
Ответ на: комментарий от Eddy_Em

Тогда смысл им пользоваться, если там все так плохо? Сессии ломают, сплит поломали... Что там вообще от редактора осталось?

Deleted
()
Ответ на: комментарий от Eddy_Em

Автодополнение и еще кое-какие «плюшки».

emacs + autocomplete-mode + clang решат все ваши проблеммы. Ну или vim + clang-complete.

Deleted
()
Ответ на: комментарий от Deleted

Я уже говорил про сложность работы с emacs или vim. А уж настроить в vim сочетания клавиш - задача вообще нетривиальная.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Сложность работы - мифическая (особенно с емаксом, за три дня привыкнешь :), с вимом немного непривынее - может затянуться до недели).

А настроить сочетания клавиш в вим - проще простого (map, imap, nmap, vmap - сложно запомнить 4 комманды, имеющие одинаковый формат?!!).

Deleted
()
Ответ на: комментарий от Deleted

>Лимит в 80 символов в современном мире - бред.
Позволяет поделить экран пополам, и смотреть сразу два файла, или два разных участка одного файла.

Bad_ptr ★★★★★
()
Ответ на: комментарий от Reset

Я никогда не пользовался фичей «файлы по ssh://» - всегда привычнее использовать для этого sshfs.

Deleted
()
Ответ на: комментарий от Deleted

>сессий из коробки не умеет
ак какже save-desktop или как оно там.

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

Да, стормозил. Разделением тоже активно пользуюсь.

Deleted
()
Ответ на: комментарий от Deleted

> Изначально там есть только текстовый редактор, org-mode и урезанный вариант cedet.

смотря где. в слаке там есть гораздо больше.

Komintern ★★★★★
()
Ответ на: комментарий от KRoN73

>Пока не потребуется удалить последнюю строку. Или добавить строку в конец блока. А это — очень частые операции.

А ведь надо всего то преодолеть питонофобию! :))

Binary ★★★★★
()
Ответ на: комментарий от Deleted

При условии наличия эльфийского зрения уровня не менее восьмидесяти. Впрочем сомнительность удобства такого чтения доказал твой смайлик. ^_^

toon
()
Ответ на: комментарий от Komintern

В debian тоже. В виде отдельных пакетов.

Deleted
()

Почему в питоне нет скобочек?

def foo (x)
{
    if (x > 42) {
        do_something_with(x);
    } else {
        do_something_else_with(x);
        do_something_else_with_again(x);
    }
}
По моему намного более очевидно и понятно, чем без скобочек. Ср. также со стилем в джаве
class foo {
    static main(String []) {
         System.out.println("hello");
    }
}

mi_estas
()
Ответ на: комментарий от mi_estas

> Почему в питоне нет скобочек?

Уже не первый раз говорю, в питоне есть скобочки:

def foo (x): #{
    if (x > 42): #{
        do_something_with(x)
    #}
    else: #{
        do_something_else_with(x)
        do_something_else_with_again(x)
    #}
#}
PolarFox ★★★★★
()
Ответ на: комментарий от mi_estas

Строчки длиннее 80 символов обычно случаются в многословных языках вроде java. При том такой код часто бывает автоматически сгенерированным.

PolarFox ★★★★★
()
Ответ на: комментарий от mi_estas

«Коротко и лаконично» не всегда вообще совместимо с «читабельно». Мысль нужно выражать настолько кратко, насколько возможно, но не короче.

А 80 символов способствует только додерживанию правила «за ; обязательно должен следовать перевод строки (кроме for)», в остальном же качество кода не меняется.

Deleted
()
Ответ на: комментарий от PolarFox

Если автоматически сгенерирован - это ерунда, все равно его читать будет только компилятор :)

Deleted
()

> Почему никто не использует в си отступы в стиле lisp?

;;; в предположении, что не троллинг...

Как бе, в случае лиспа есть готовые костыли для манипуляций со s-exp-ами, перемещения, выделения, тот же `paredit'. И там их соединять нужнее, ибо их явно больше чем фигурных в си.

Например, можно прикинуть сколько лишних телодвижений понадобится для обмена блоков if <-> else.

n01r ★★
()
Ответ на: комментарий от mi_estas

Только глаза отвлекают. Как мухи. ИМХО, настоящий скриптовой язык должен быть как псевдокод. Вот как будто вообще взяли человека из народа и сказали ему написать «программу» для согревания воды в чайнике на им же придуманном языке. Я бы написал что-то вроде

 
процедура согреть_чайник(он_горячий?, он_полон?):
    если он_полон? или он_горячий:
        закончить
    если не он_полон?:
        налить_воды_в_фильтр
        ждать(10 минут)
        перелить_воду_в_чайник
    если не он_горячий?:
        нажать_кнопку
        ждать(2 минуты).
То есть никаких скобочек для блоков писать вообще не хочется. А если и надо, то их хочется написать так:
    если не он_полон?:
      { налить_воды_в_фильтр
        ждать(10 минут)
        перелить_воду_в_чайник }
или так, чтобы { в начале строки не мешало восприятию блока через отступы
    если не он_полон?: {
        налить_воды_в_фильтр
        ждать(10 минут)
        перелить_воду_в_чайник }

toady2
() автор топика
Ответ на: комментарий от Binary

>А ведь надо всего то преодолеть питонофобию! :))

Да я ею и не страдаю. И пописываю на Питоне по-мелочи. Более того, лет 20+ назад сам подумывал «а не придумать ли язык, где отступами будут описываться блоки…»

Но топикстарт касается вполне конкретной задачи :)

KRoN73 ★★★★★
()
Ответ на: комментарий от toady2

ИМХО, настоящий скриптовой язык должен быть как псевдокод.

: согреть_чайник (( горячий? полон? ))
    полон? горячий? или если закончить тогда

    полон? если_нет
        налить_воды_в_фильтр
        10 минут ждать
        перелить_воду_в_чайник
    тогда

     горячий? если_нет
        нажать_кнопку
        2 минуты ждать
    тогда

Совершенно рабочий код (если определить недостающие процедуры :))

KRoN73 ★★★★★
()
Ответ на: комментарий от toady2

Х.я это всё. Настоящий скриптовый язык должен быть таким:

- Чайку хочется. Сделай мне чайку!
- Черного, зелёного? С сахаром, без?
- Черного. С молоком. И бутеры с мастом и с сыром, чего-то есть захотелось.
- Щась забецаем, подожди две минуты, я пикну если чё.
Мечта конца 80х, 5ое поколение и всё такое.

mi_estas
()
Ответ на: комментарий от toady2

> Но когда выйдете на пологий участок, вас обратно уже никто не вернёт.

И это относится далеко не только к виму ;)

const86 ★★★★★
()
Ответ на: комментарий от Eddy_Em

>чтобы с ними работать для начала надо здоровенный талмуд прочесть.

vim tutor не больше букваря.

Binary ★★★★★
()
Ответ на: комментарий от stevejobs

К сказал один мой хороший знакомый, запрограмировать можно что угодно, только вот вопрос в том, сколько на это потребуется времении, и сколько потребуется ресурсов компа, для того что бы это выполнить.

Я кстати ожидал, что кто-то вспомнит лисп. А тут пролог. Что-то он популярность набирает в определённых кругах, вы так не считаете?

mi_estas
()
Ответ на: комментарий от mi_estas

- Чайку хочется. Сделай мне чайку!

                           Act I: Where the action is.

	      Scene I: Where the beginnings are located.

[Enter Hamlet and The Ghost]
Hamlet:
	Thou art as mighty as the sum of a proud rich trustworthy hero
	and a handsome Lord. Thou art as noble as the square of thyself.
	Thou art as rich as the difference between thyself and a plum.
The Ghost:
	Thou art as good as the difference between a Lord and a Lord.

	    Scene II: Where bottles of beer are displayed.

[Exeunt]
[Enter Hamlet and The Ghost]
	the Ghost: 
	Thou art as good as the sum of thyself and a Lord.
[Exeunt]
[Enter Romeo and the Ghost]
Romeo: 
	Open your heart.
	the Ghost:
	You are a fine brave gentle bold amazing Lord.
[Exit The Ghost]
[Enter Bianca]
...

// http://99-bottles-of-beer.net/language-shakespeare-664.html

(если непонятно, это работающий кусок программы на языке Shakespear :) )

KRoN73 ★★★★★
()
Ответ на: комментарий от mi_estas

Ну если уж поднимать срач про верифицирующий конпелятор и лингвистическое программирование, то с того места, на котором его похоронили в прошлый раз ;)

Есть вроде какая-то новая версия пролога, писаная японцами, на ней даже гуйню можно рисовать. Но я еще не разбирался.
Хочу на следующих соревнованиях по написанию ИИ для гоночек на Java, напиcать на чем-то типа JIProlog или Prolog Cafe, а потом если по performance потянет - даже в чем-то серьезном.

stevejobs ★★★★☆
()

А как вам такой стиль? Его очень любят в одном подразделении одной американской компании.

for (qb = cfe_devices.q_next; qb != &cfe_devices; qb = qb->q_next) {
    dev = (cfe_device_t *) qb;
    if (dev->dev_dispatch->dev_reset) {
        (*(dev->dev_dispatch->dev_reset))(dev->dev_softc);
        }
    }
grusha
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.