LINUX.ORG.RU

Vim или Emacs? А LISP в 2021?

 , ,


1

3

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 тоже. И делает он не то же. Моя задача была привести пример ридер-макроса не обращая никакого внимания на его осмысленность. Твоя задача была сделать кодом на 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)
Ответ на: комментарий от MOPKOBKA

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

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

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

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

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

apt_install_lrzsz ()
Ответ на: комментарий от 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 ★★★★ ()
Ответ на: комментарий от 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

Просто реклама, причем я их совсем не осуждаю, нормальная законная деятельность компании. Ты все ещё вывариваешь? Тогда 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 ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)