LINUX.ORG.RU

Vim или Emacs? А LISP в 2021?

 , ,


1

4

https://www.youtube.com/watch?v=8Q9YjXgK38I&t=42s

Парень в определённых кругах, личность известная.
посмотрел я его ролик, стал ковыряться по истории:

А ведь Crashbandicoot была годной игрой…

Что выбрать? Vim или Emacs?
Изучать в 2021 году Lisp? Если изучать, какой? Практика?
А не засмеют сотрудики?

Времени в сутках маловато, на всё не хватает.


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

Gentooshnik, а в принципе и в С можно, я сейчас описание твоей функции symbol прочел.

$ cat main.c
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

const char *a = "gento", *b = "slackware";

int main() {
	struct BINDVAR *i;
	char buf[128];

	for(;;) {
		printf("Input name: ");
		if(scanf("%s", buf) <= 0) return 0;
		printf("Hello, ");
		if(i = find_sym(buf)) {
			if(!strcmp(i->type, "pointer to char")) {
				puts(*(const char**)i->p);
			}
		} else {
			puts(buf);
		}
		
	}
}
$ bash build.sh
$ ./a.out 
Input name: a
Hello, gento

Input name: b
Hello, slackware

Input name: f
Hello, f

Input name: 3
Hello, 3

Input name: -123
Hello, -123

Input name: $ 
$ 
$ wc -l build.sh buildscr/*
   7 build.sh
  20 buildscr/begin.txt
   9 buildscr/end.c
  13 buildscr/end.sh
  49 итого
$ 

Символы вытягиваются автоматически.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 4)
Ответ на: комментарий от BceM_IIpuBeT

однопользовательскую ОС

Сказал нищеброд с одним коммунальным компьютером на весь дом.

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

Что значит считаю, это не IDE а редактор. Без всяких сторонних мнений.

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

кстати, qt qreator может читать конфу из ~/.vimrc и настраивать редактор в соответствии с ним, так что даже современные редакторы считаются с традициями

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

Нет, он пишет в microemacs, у которого от emacs одно название, редактор не поддерживает utf-8, имеет несколько смешных для 2к21 года ограничений итд... Он просто привык. Это не значит что его редактор удобный.

Сейчас он вроде уже перешел на nano, не слежу.

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

read and maintain вообще от читателя зависит и в лиспе можно макросами сделать очень высокий уровень читабельности даже для того, кто язык вообще не знает

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

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

Бред - это безапелляционная уверенность в своей правоте, тем более по каким-то субъективным вопросам вроде IDE. Потому я бы задумался на твоём месте про галоперидол

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

Пользуясь случаем люто-бешено рекомендую org-roam для ведения базы знаний.

До org-roam не дошел, все хотел посмотреть. Пользовался org-mode для дневника и пытался как-то сделать из него базу знаний. Довольно неудачный опыт. Язык разметки org-mode устарел и выглядит как атавизм из 70х. Совершенно неудобное поделие, не вижу смысла на такой базе пытаться что-то построить. Извините, но паскалевысеры в стиле

#+begin_src

#+end_src

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

Недавно открыл для себя Obsidian и в имакс больше не заглядываю. Его и рекомендую. Для синхронизации Syncthing. Очень неприятно советовать проприетарщину, но лучше него пока ничего не нашел. Благо, никакого вендорлока – все оффлайн в плейн маркдаунах.

Im_not_a_robot ★★★★★
()
Последнее исправление: Im_not_a_robot (всего исправлений: 1)
Ответ на: комментарий от byko3y

они с минимальными изменениями скаргокультили Zettelkasten, не пытаясь понять принципа этой организации и дать ему ту форму, которая соответствует современным комплюктерным системам

Что вы все так носитесь с этим Зеттелкастеном? Люди услышали модное слово и думают, что это что-то невероятное, которое откроет возможности мозга на 100%. Ведь какой-то ученый «благодаря» этому методу высрал миллион книг (ну как ученый.. в говне моченый социолог).

ЗК – это попытка организовать базу знаний на бумажных карточках и суть в ссылках на другие карточки, чтобы связать их воедино. И.. это было реализовано 15 January 2001 года.. когда появился первый (?) викидвижок.

Если подумать, то викидвижки и реализуют этот метод, только более удобно, используя возможности компьютеров. Ну люди не могут сложить два+два, чтобы увидеть полное сходство и нонстопом продолжают кукарекать о невероятном ЗЕТТЕЛКАСТЕНЕ.

Вопрос лишь в программном обеспечении, которое сделает викидвижок удобным для личного использования на десктопе и мобиле. Для меня им стал Obsidian+Syncthing.

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

Ну если я всегда прав то зачем мне сомневаться, не думал о таком, да? Не удивительно.

тем более по каким-то субъективным вопросам вроде IDE

Все объективно, VSCode не дотягивает до IDE, за подробностями к отчету JetBrains, конкретную статью не помню.

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

Без проблем, бери C++ и clang+python в рантайме. Я не против.

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

Понимаю. Ещё понимаю что препроцессора у тебя нет. Заявленного C++ и clang+Python тоже. И делает он не то же. Моя задача была привести пример ридер-макроса не обращая никакого внимания на его осмысленность. Твоя задача была сделать кодом на C++ и препроцессором clang+python то же самое. Кстати, код с Eval даже делает не то же самое. Вывод будет, насколько я могу судить,

Please, introduce yourself: A
Hello, Gentoshnik
Please, introduce yourself: B
Hello, MOPKOBKA
Please, introduce yourself: ,A
Hello, ,A
Please, introduce yourself: ,B
Hello, ,B
Please, introduce yourself: .
Hello, .
Please, introduce yourself:

Удобно когда ты устанавливаешь правила, правда?

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

Чтобы упаковать препроцессор в библиотеку Морковке не хватило нескольких часов. Засчитываю автоматическую победу.

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

Да все тоже самое и PHP код делает, хз в чем твои претензии. Запятая не важна? ну добавить проверку на нее, и никаких проблем, в С коде тоже.

Vim или Emacs? А LISP в 2021? (комментарий)

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)
Ответ на: комментарий от Im_not_a_robot

Довольно неудачный опыт

Спички детям не игрушка!

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

ими уже нельзя пользоваться нормально

А в чём проблема? Они не в полной мере позволяют изменять текст?

через лет 5-10 нельзя будет пользоваться совсем.

А что случится за это время? Все перейдут на новую версию libc, под которую майнтейнеры этих редакторов не станут делать сборку?

Или под «нельзя» ты понимаешь, что кто-то запретит?

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

Исследования Jetbrains доказывающие раз и навсегда что пользователи просто обязаны нести им свои деньги?

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

Ну вот тебе полнейшее соответствие:

<?php
$A = "Gentoshnik";
$B = "MOPKOBKA";

while(true) {
  if(empty($sym = readline("Please, introduce yourself: ")) || $sym === ".") break;
  if($sym[0] == ",") {
    $sym = substr($sym, 1);
    $sym = $$sym;
  }
  echo "Hello, " . $sym . PHP_EOL;
}
$ php main.php
Please, introduce yourself: a
Hello, a
Please, introduce yourself: b
Hello, b
Please, introduce yourself: c
Hello, c
Please, introduce yourself: d
Hello, d
Please, introduce yourself: ,A
Hello, Gentoshnik
Please, introduce yourself: .
$ 

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от Gentooshnik

Ах, да. Сам забыл. >_<

;;;;; silly-test.asd
(defsystem silly-test
  :depends-on (named-readtables)
  :components ((:file "silly-test")))

;;;;; silly-test.lisp
(defpackage silly-test
  (:use :cl)
  (:export :syntax))
(in-package silly-test)

(named-readtables:defreadtable syntax
  (:merge :standard)
  (:macro-char #\, (lambda (s c)
                     ;; код макроса
                     ))
  (:macro-char #\. (lambda (s c)
                     ;; код макроса
                     )))

;;;; В .asd другого проекта
(defsystem ...
  :depends-on (silly-test))

;;;; В сорцах другого проекта
(in-readtable silly-test:syntax)
Gentooshnik ★★★★★
()
Ответ на: комментарий от MOPKOBKA

Насколько сложные? Код бывает разный. Модули ядра редактировать/писать с нуля вполне удобно в виме с ctags.

Для проектов на сотни тысяч строк на c++ или java, понятное дело, лучше IDE.

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

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

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

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

Я тебе выше код кинул, ты его типа не видишь? Психологическая защита?

clang для того что бы парсить AST, для того что ты кинул он вообще не нужен.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от apt_install_lrzsz

ctags, ctrlp…

Ах, да. Вспомнил ещё один адекватный эмулятор вима кроме evil-mode в emacs. FakeVim для QtCreator. QtCreator как IDE сам очень хорош (для любого кода на C или C++, Qt не обязателен), так ещё и эмулятор вима адекватный есть.

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

Насколько сложные?

Ну ты сам ответил)

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

1. Код выше полностью эмулирует поведение твоих макросов из 50х (в рамках примера). Код из первого примера делает тоже самое но с другим синтаксисом, придираться к этому хз кем надо быть.
2. Там нету eval (в примере с Си тем более)

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 5)
Ответ на: комментарий от byko3y

вижу кучу недостатков в Org-roam

А как же, полно их. Нет ничего идеального. Кому-то поиск недостаточно удобный, кому-то визуализации не хватает.

Главное, что он

  • предлагает реализацию очень полезной идеи — создания своей личной базы знаний, которая содержит факты, нужные именно тебе и связывает их между собой так, как нужно именно тебе. Голова для этого не очень надежный инструмент, постоянно что-то забывает;
  • использует для хранения этой базы знаний простые текстовые файлы;
  • использует широко известный и имеющий тьму возможностей формат для этих текстовых файлов и свободный инструментарий для работы с ним (org-mode).
Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Gentooshnik

FakeVim

Да, было дело, тыкал. Вообще, подобные эмуляции вима нередко встречаются. Я, например, для vscode такой плагин использую.

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

Все объективно, VSCode не дотягивает до IDE, за подробностями к отчету JetBrains, конкретную статью не помню.

JB - какаха, патчат ОооооЧень медленно. Плюс очень запереживали после LSP. Просто сейчас качество драйверов между сервером и редактором слабое. А так JB - прошлый век.

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

Заговоры пошли, понятненько.

Всегда были!

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

Просто реклама, причем я их совсем не осуждаю, нормальная законная деятельность компании. Ты все ещё вывариваешь? Тогда Jetbrains идёт к тебе, взяв с собой деревни Вилариба и Вилабаджо

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

Код выше полностью эмулирует поведение твоих макросов из 50

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

Скобочным синтаксисом (обычными макросами) можно написать:

(loop for i from 1 to 100 collect i)

А макрос чтения позволяет сделать в тексте что-то вроде:

#J{ 'foo': 1, 'bar': 2 }

То, что строка после #J не является корректным скобочным выражением, не мешает ей нормально работать.

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

Но мне больше нравится подход Racket с определением синтаксиса в заголовке файла, а не в произвольном месте кода.

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

Но почему-то все видят только нечитаемые смайлики.

Мне проще прочитать смайлики, чем винегрет из {(<[]>)} в Си++, например. И синтаксис как раз можно сделать почти любой. Если аллергия на смайлики, то просто используй https://sourceforge.net/p/readable/wiki/Common-lisp-tutorial/

(ql:quickload "readable")
(readable:enable-sweet)

defun fibfast (n)
  if {n < 2}
    n
    fibup n 2 1 0

defun fibup (max count n1 n2)
  if {max = count}
    {n1 + n2}
    fibup max {count + 1} {n1 + n2} n1

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

Лисп определяет семантику. С одной стороны, есть нормальные замыкания и CLOS, с другой стороны, типизированные коллекции или продолжения к Common Lisp не прикрутить.

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от B0B

Попробуйте освоить, хотя бы поверхностно, оба варианта, скажем так: найдите хорошие книги по сабжам и прочитайте обе, по виму могу подсказать, но она на английском, такую «спец» Литературу не переводят

IvanR ★★★
()

Что выбрать? Vim или Emacs?

На мой взгляд, лучше не «или», а «и».

Emacs хорош когда проектируешь что-то относительно глобальное, а Vim хорош, когда надо в конкретном файл быстро подправить десяток строк.

Я и тем и другим пользуюсь. Конфиги правлю в Vim’е, программирую в основном в Emacs (на Racket пишу в DrRacket).

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

Спасибочки. Vim попробовал, он тяжело поддаётся напильнику.
Emacs попробовал, надо разбираться. Есть книги по Emacs?

B0B
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.