Quale linguaggio di programmazione per l'editing del testo? [chiuso]

3

Ho bisogno di un linguaggio di programmazione per la modifica e l'elaborazione del testo (sostituzione, formattazione, espressioni regolari, confronto di stringhe, elaborazione di testi, analisi del testo, ecc.). Quale linguaggio di programmazione è più potente e ha più funzioni per questo scopo?

Poiché lavoro PHP per i miei progetti web, attualmente utilizzo PHP, ma il fatto è che PHP è uno script linguaggio per le applicazioni web; il mio progetto attuale è offline.

Sono curioso di sapere se altri linguaggi di programmazione come Perl , Python , C , C ++ , Java , ecc. hanno più funzionalità per questo scopo e vale la pena di spostare il progetto?

    
posta Googlebot 27.03.2012 - 09:56
fonte

6 risposte

20

Ogni lingua popolare ha funzionalità per la modifica e l'elaborazione del testo; è principalmente una questione di preferenze personali. Dato che hai già familiarità con PHP, suggerirei Perl, poiché la sintassi è simile, e le funzionalità di espressioni regolari di PHP sono strongmente basate su Perl. Inoltre, Perl è stato originariamente progettato come un linguaggio di elaborazione del testo, e sebbene abbia ampiamente superato le sue origini, potrebbe essere un po 'più facile trovare risorse correlate.

Consiglierei contro una lingua con un grande stack, come Java o .NET , a meno che tu non sia interessato anche ad imparare lo stack.

La linea di fondo è: questo è meno sulla lingua e più su di te. Anche PHP farebbe una buona scelta, a seconda delle tue esigenze. Certo, ci sono alcuni ritocchi necessari, ma se il tempo necessario per imparare una nuova lingua è molto più che imparare a usare PHP in modo offline, allora PHP potrebbe essere la scelta migliore.

    
risposta data 27.03.2012 - 10:07
fonte
12

Dato che sei su Linux, ti suggerisco di guardare Tcl , Perl e Python. A seconda di ciò che effettivamente si vuole fare, questi tre dovrebbero essere in grado di gestirlo. Informati anche su sed , AWK e grep , ecc ... e utilizzano Bash , sh , e o tcsh script anche a tuo vantaggio. (Non c'è ragione per cui non si possa usare uno sh script per dividere il lavoro in tre bit e usare Tcl, Perl e Python per ogni bit in base alle loro attitudini!)

Non sono sicuro che linguaggi compilati come C / C ++, Java, ecc. offrano molto a meno che non siano necessarie prestazioni e / o messaggi di errore dettagliati.

    
risposta data 27.03.2012 - 10:52
fonte
10

Perl e Ruby sono buone scelte.

Tuttavia, ciò che desideri veramente potrebbe essere AWK , che è piuttosto vecchio, ma farà ciò che desideri. Ci sono alcuni buoni libri su AWK, ma tutti hanno più di 10 anni. Tuttavia, non lasciare che questa fase; è ancora uno strumento potente.

    
risposta data 27.03.2012 - 11:28
fonte
5

Impara le espressioni regolari (regex)

Regex è una piccola tecnologia che puoi padroneggiare in una settimana o due (1-2 ore al giorno), ma è così utile che ripagherà quell'investimento di tempo sul primo progetto su cui lo usi. La maggior parte dei linguaggi di programmazione li supporta, tra cui PHP . C'è un libro meraviglioso su regex, Padroneggiare le espressioni regolari di Jeff Friedl . Inizia lento, ma accelera rapidamente e ha davvero tutto ciò che serve sapere su Regex. È uno dei miei libri tecnici preferiti.

AWK

Una volta conosciuto Regex, puoi fare cose incredibili con awk (gawk), sed, e grep o con qualsiasi linguaggio di programmazione moderno. Le espressioni regolari non sono un linguaggio di programmazione, quindi suppongo che tecnicamente non sia una risposta alla tua domanda, ma Awk è un linguaggio completo e rappresenta un'elaborazione del testo unica.

emacs

Un'altra cosa che sento costretto a menzionare è emacs. Per scricchiolare i dati da un formato all'altro, scrivo piccole combinazioni di espressioni regolari e elisp direttamente nello stesso buffer dei dati che sto trasformando. Ctrl-x Ctrl-e valuta il codice Lisp precedente. Ctrl-x r d cancella un rettangolo evidenziato in quel momento. Tra queste funzioni, puoi sperimentare con la trasformazione del testo in un buffer finché non hai esattamente ciò che desideri. È veramente interattivo e meraviglioso. Senza contare che è scritto da Richard Stallman , che ha anche creato la GNU Public License (copyleft) e ha iniziato il movimento che molte persone chiamano Open Source Software.

The Dark Side of emacs

La curva di apprendimento per emacs è molto ripida. Mi ci sono voluti 6 mesi per poter usare emacs e 6 anni per non pensarci più. I caratteri regex comuni richiedono tre barre di sicurezza per scapparle correttamente per emacs, il che può portare a ciò che Friedl chiama "inclinazione della sindrome degli stuzzicadenti".

Emacs è un editor non modale, quindi ci sono lunghe sequenze di tasti per tutto ciò che può davvero logorare i tuoi piccoli e anulari su ciascuna mano tenendo premuti Alt, Ctrl e Shift tutto il giorno. La gente lo chiama scherzosamente Escape-Meta-Alt-Ctrl-Shift, ma è un po 'vero. La cattiva modalità per Emacs lo rende molto più facile sui tendini.

Poiché alcuni clown hanno deciso di aggiungere "Tasti di Windows" tra i tasti Alt e Ctrl sulle tastiere dei computer, l'uso di Emacs è diventato più difficile. Uso una vecchia tastiera ThinkPad da prima dei giorni di Windows Keys e ho un extra nell'armadio nel caso si rompa. Sulle tastiere più recenti, mi piace far scattare le chiavi offensive. Hmm ... Probabilmente sono troppe informazioni ...

Conclusione

Impara Regex: migliora ogni lingua!

    
risposta data 09.02.2013 - 16:05
fonte
3

In realtà puoi usare PHP sulla riga di comando , così l'affermazione che non può essere usata offline è falso. Se hai già familiarità con PHP e le sue funzioni di gestione delle stringhe, dovresti esaminarlo.

Lavoravo con PHP e c'erano alcune cose dietro le quinte fatte con script PHP che potevano essere eseguiti sulla riga di comando (con cron lavori anche). È stato un po 'strano fare offline gli script PHP, perché hai ancora bisogno dei tag del preprocessore (cioè <?php ... ?> ), ma era fattibile.

In alternativa, utilizziamo gli script Python anche per le cose dietro le quinte, ma era più una questione di preferenze personali che altro.

    
risposta data 04.06.2012 - 07:29
fonte
3

Dipende VERAMENTE da cosa devi fare. Se vuoi principalmente riconoscere le cose e il tuo input sono le linee, ogni riga composta da campi delimitati da spazi, AWK è facile per imparare, facile da usare e abbastanza efficace per quello che fa.

Non ho mai veramente studiato Perl, quindi non posso davvero commentarlo. Idem per Ruby e Python.

Non penso che ci sia qualcosa che lo gira oggi, ma TECO sul < a href="http://en.wikipedia.org/wiki/PDP-10"> PDP-10 era in effetti un linguaggio di programmazione per il montaggio, fornito con un interprete. Ho scritto un file processor completo #include in TECO, alla fine degli anni '70. (Era tutto quello che avevo su quella macchina che era adatto.)

GNU Emacs è in realtà un Lisp sistema che ha risolto alcune decisioni di progettazione fondamentali in modi che rendevano più facile la scrittura di editor ed estensioni di editor. Ha anche un sacco di contenuti di editing di basso livello compilati nel "kernel".

SNOBOL , mentre antico, è stato specificamente progettato per quel genere di cose. Mi è stato dato di capire che è ancora disponibile, anche oggi.

    
risposta data 04.06.2012 - 05:30
fonte

Leggi altre domande sui tag