🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #217757

Re: Jak Wam się pracuje z samodzielnie zaprojektowanymi i zakodowanymi programami?

#217757
From: Maciek Godek
Date: Sun, 27 Mar 2022 20:35
96 lines
6086 bytes
niedziela, 20 marca 2022 o 20:36:06 UTC+1 jawors...@adres.pl napisał(a):
> Dzień dobry! 
> 
> Mam takie pytania do programistów: 
> 1. Jak wam się pracuje z własnymi programami? 
> Chodzi mi o programy zaprojektowane i zakodowane samodzielnie do użytku w pracy lub w domu. 
> Może są to jakieś specjalizowane edytory? Albo programy testujące? Albo monitory? Albo może nawet jakieś narzędzia do projektowania. Albo do nauki. 
> 2. Czy zaszła jakaś istotna różnica w waszej wydajności? 
> 
> 3. Albo może macie jakieś inne uczucia gdy ich używacie? Np. uczucie dumy lub radości. 
> 
> 4. Jak teraz wspominacie używanie wcześniejszych programów które zastąpiliście własnymi?

Od jakiegoś czasu pracuję nad swoim strukturalnym edytorem do programowania wizualnego.
Kiedyś dawałem tutaj link z prezentacji:
https://www.youtube.com/watch?v=nGba4J-ThEk

Ten program ciągle jest jeszcze "nieużyteczny", ale wchodzenie z nim w interakcję sprawia mi dużo przyjemności.
Aktualnie pracuję nad tym, żeby można było z nim pracować przy użyciu normalnej klawiatury
(i nie piszę tego na telefonie, tylko na laptopie z normalną klawiaturą)

W każdym razie mam wrażenie, że to podejście ma bardzo duży potencjał względem "tekstowego" podejścia do programowania.

Z rzeczy, które napisałem i których używam, są moje rozszerzenia językowe dla Guile'a:

https://github.com/plande/grand-scheme

Za każdym razem, kiedy wykonuję w swoim Emacsie/Geiserze linię

(use-modules (grand scheme))

odczuwam dużą przyjemność.

Ostatnio używałem tego do napisania parsera dla pewnego podzbioru standardu Wireless MBus. Ten kod co prawda był bardziej "wykonywalną notatką", niż częścią produktu -- bo sam produkt to aplikacja mobilna pisana we frameworku Flutter, i języku programowania Dart.

O języku Dart mam dość dobre zdanie; jednak jak przepisałem na to parser, to był prawie dwukrotnie dłuższy, niż ten w Schemie, i zamiast przyjemności sprawiał swoistą bolesność.

Nie wiem też, czy to się liczy, ale mam napisanych kilka funkcji do Emacsa.

Moja ulubiona jest ta:

(defun kill-whitespace-or-sexp ()
  "Kill the whitespace between two non-whitespace characters"
  (interactive "*")
  (save-excursion
    (save-restriction
      (save-match-data
	(if (string-match "[ \t\r\n]" (string (char-after)))
	    (progn
	      (re-search-forward "[ \t\r\n]+" nil t)
	      (replace-match "" nil nil))
	  (kill-sexp))))))

(global-set-key (kbd "M-<delete>") 'kill-whitespace-or-sexp)

Działa to w taki sposób, że jak naciskam Alt+Delete,
to jeżeli kursor jest na jakimś białym znaku, 
to kasuje całą sekwencję białych znaków od kursora 
do najbliższego nie-białego znaku. Natomiast w przeciwnym razie
 wycina mi do schowka wyrażenie zaczynające się na kursorze
 (przy czym wyrażenie to albo jakiś symbol/identyfikator/literał, 
albo coś pomiędzy nawiasem otwierającym i odpowiadającym mu 
nawiasem zamykającym).

Pewnie łatwiej to "odczuć", niz opisać.

Na co dzień pracuję w Emacsie działającym w Uniksowym terminalu,
i mam sporo różnych sktyptów i małych narzędzi do generowania kodu.

Jeżeli idzie o wydajność, to trochę ciężko to zmierzyć.
Na pewno demoralizujące są długie czasy budowania.
Mam w pracy jeden projekt w C, którego zbudowanie zajmuje
kilka minut, i te kilka minut trochę odbiera skupienie.

Ze Flutterem jest podobnie, przy czym tutaj jest więcej irytacji:
czasem wyjdzie jakaś nowa wersja jakiegoś komponentu,
i projekt, który w piątek jeszcze się budował, w poniedziałek
już nie chce, bo trzeba gdzieś podbić jakąś wersję. No i irytuje
to, że nie wiem, co tam się dzieje.

(Jak piszę we Flutterze, używam Android Studio. Robię to trochę
z ciekawości, żeby poznać, jak "mainstream" wyobraża sobie to,
jak powinna wyglądać praca programisty - i szczerze mówiąc
nie mam o tym wyobrażeniu najlepszego zdania. W Emacsie
i terminalu mogę spokojnie programować nawet na małym telefonie, 
natomiast pracy w IntelliJ bez dwóch dużych monitorów nie
jestem w stanie sobie wyobrazić).

W przypadku programowania w Emacsie w Lispie (z wtyczkami
w rodzaju Geiser) niesamowite dla produktywności jest też to,
że wszystkie kawałki programu mogę wykonywać na bieżąco
- że nie ma tego durnego cyklu "edycja-kompilacja-uruchomienie",
tylko na bieżąco "gadam" z interpreterem.

Taki sposób pracy był dla mnie wielkim odkryciem, 
ale oczywiście w tej możliwości nie ma żadnej mojej zasługi.
Technical Details
Message-ID: <02c765f0-a8c4-4a74-ba60-ceee6304b9acn@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
References: <2fbb2c1e-a497-42dc-82aa-1d87e7861527n@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 2002:ad4:5a11:0:b0:441:1485:33ff with SMTP id ei17-20020ad45a11000000b00441148533ffmr17813530qvb.127.1648413327502;        Sun, 27 Mar 2022 13:35:27 -0700 (PDT)
X-Received: by 2002:a05:622a:5cc:b0:2e1:ecc9:5a2a with SMTP id d12-20020a05622a05cc00b002e1ecc95a2amr18635835qtb.554.1648413327231; Sun, 27 Mar 2022 13:35:27 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Sun, 27 Mar 2022 13:35:27 -0700 (PDT)
In-Reply-To: <2fbb2c1e-a497-42dc-82aa-1d87e7861527n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2a01:113f:400f:7f00:a710:607e:23f9:a3b0; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 2a01:113f:400f:7f00:a710:607e:23f9:a3b0
References: <2fbb2c1e-a497-42dc-82aa-1d87e7861527n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <02c765f0-a8c4-4a74-ba60-ceee6304b9acn@googlegroups.com>
Subject: Re: Jak Wam się pracuje z samodzielnie
 zaprojektowanymi i zakodowanymi programami?
From: Maciek Godek <godek.maciek@gmail.com>
Injection-Date: Sun, 27 Mar 2022 20:35:27 +0000
Lines: 134
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit