Quinque quaestiones de consilio programmandi linguae

Quinque quaestiones de consilio programmandi linguae

Philosophia regens

1. Programming linguas pro populo

Programmatio linguae sunt quomodo homines cum computatoribus loquuntur. Computatorium laetus erit ut aliqua lingua loquatur quae non ambigua est. Causa linguae summus gradus nobis est, quia homines machinam linguam tractare non possunt. Punctum programmandi linguarum est ne mens nostra pauperes, fragilia, ne nimis multis obruantur.

Architecti sciunt problemata quaedam consilio mundana esse quam alii. Quaedam problemata ex consilio clarissimo et abstractissimo pontium designantur. Hoc in casu, officium tuum est ut quam minimum materiae debitam distantiam operias. In altero spectri fine sella designatur. Cathedra designandi tempus terere debet de cavea hominum cogitando.

Progressio Software similem differentiam habet. Algorithms meditans ad datas meatus per retis, est lepida et abstracta quaestio, sicut pontes designantes. Cum programmatio linguarum designans est quasi sellae designans: cum infirmitatibus humanis agere debes.

Hoc durum est plerisque in rebus cognoscere. Cogitans elegantissimas mathematicos sonos multo gratius apud nos quam ad humanas infirmitates lenocinio. Elegantiae mathematicae munus est quod aliquas elegantiae gradus facilius ad intellegendum facit. Sed non omnes verterem elegantiam.

Cum dico linguas designari debere ad infirmitates humanas accommodandas, non intelligo linguas designari debere programmatibus malis. Reapse programmatores optimos designare debes, sed etiam optimi programmatores suos limites habent. Non puto aliquem in lingua programmandi frui ubi omnes variabiles litterae "x" cum integris subscriptis denotabantur.

2. Design pro te et amicis tuis

Si historiam programmandi linguas spectes, pleraeque optimae linguae a suis auctoribus adhibendae sunt, et pessime ad alios homines utendos destinatae sunt.

Cum linguae aliis hominibus destinantur, semper est specifica coetus hominum: homines non tam captiosi sunt quam creatores linguae. Hoc est quomodo accipias linguam, quae tecum loquitur. Exemplum principalissimum est Cobol, sed maxime linguae hoc spiritu imbutae sunt.

Nihil ad rem habet quam altam linguam. C satis humilis est, sed ab auctoribus adhibita est, quam ob rem eam amant.

Argumentum ad programmatores malas linguas excogitandas est plures programmatores mali quam boni. Fortasse ita est. Sed hic paucitas bonorum programmatorum plus proportionaliter scribit programmatibus.

Mea quaestio est, quomodo linguam creas, quae optimos piratas appellans? Mihi videtur hanc quaestionem idem esse cum quaestione quomodo bonam linguam programmandi creare ?, sed etsi non sit, interrogatio saltem interesting.

3. Da programmator quantum potest imperium

Multae linguae (praesertim aliis hominibus destinatae) quasi nannies agunt: monere te conantur a rebus quas tibi prodesse non putant. Oppositum accipio: da programmatorem quantum potes.

Cum primum comperi Lispam, quod maxime amabam, erat ut pares colloqueremur. In aliis linguis, quas eo loco didiceram, lingua erat, et institutum meum fuit in lingua illa, et erant admodum separatim. Sed in Lisp, functiones et macros quas scripsi, iidem erant in quibus lingua ipsa scripta erat. Linguam ipsam rescribere possem, si vellem. Eadem appellatio ac programmata aperta fontem habuit.

4. Brevitas est soror ingenii

Brevitas postponenda est atque etiam contemnitur. Sed si cordium inspicias hackers , videbis eos vere brevitati similes esse. Quotiens audivisti gratis loqui quomodo amasium, in, inquam, APL, mirabilia facere possunt cum duobus lineis in codice tantum? Suspicor vere callidi homines actu ut attendere ad hoc.

Fere credo aliquid, quod breviora programmata facit bonum esse. Multum functiones bibliothecae habeantur, omnia quae implicita esse possunt; syntaxis brevius esse debet; nomina etiam entitatis brevis sit.

Neque solum programmata brevia esse debent. Manuale etiam breve esse debet. Bona pars manualis impletur explicationibus, declamationibus, admonitionibus et casibus specialibus. Si manuali minuere debes, optima optio corrigendi linguam quae tanta explicatione requirit.

5. Agnosce quid caesim est

Multi volunt esse mathematicam caesim, vel saltem aliquid scientiae affinem. Puto caesim architectura similior est. Architectura est de physicis in eo quod architectus opus est ad designandum aedificium quod non cadit, sed verus finis architecti est magnum aedificium creare, non invenire in agro statico.

Quod amor hackers est magnas progressiones creare. Puto autem, nostris quidem cogitationibus, meminisse debere libellos magnos libellos rem mirabilem esse, etiam cum id opus non facile in notas scientiarum scientiarum consuetas transferat. Ex ratione intellectuali, tam magni momenti est linguam quam programmatores amabunt, quam terribilem designare qui ideam involvit quam de charta divulgare potes.

Open Exitus

1. Quomodo magnas bibliothecas ordinare?

Bibliothecae magna pars programmandi linguarum fiunt. Tam magnum est ut periculosum esse possit. Si diutius accipit munus in bibliotheca invenire quod facit quod opus est quam ut ipsum munus scribas, tunc totum codicem nihil agit nisi manualem tuum crassiorem. (De symbolicis manualibus hoc exemplum fuit.) Itaque problema organizationem bibliothecae solvere debebimus. Specimen, excogitandum est ut programmator coniecturare possit quam munus bibliothecae idoneum sit.

2. An revera syntaxin praepositionis terrent?

Haec quaestio aperta est eo sensu, quod aliquot annis cogitaverim, et responsum adhuc non scio. Syntaxis praepositio omnino mihi naturalis videtur, nisi forte in mathematicis. Sed fortasse multum est invidiae Lisp inusitata syntax.

3. Quid opus est servo software?

Maxime applicationes puto quae in proximo viginti annis scribentur applicationes interreti erunt, eo sensu quod programmata in servo residebunt et tecum per navigatrum communicabunt. Atque ad haec scribenda novis rebus opus est.

Una earum rerum favet novo modo ut servo applicationes emittat. Pro uno vel duobus magnis emissionibus per annum, sicut in programmatibus desktop, programmata server in serie parvarum mutationum solvetur. Haberes quinque vel decem dies solvo. Quisque semper aliquam lacinia.

Scisne quomodo programmata designent servandas? Servo software designari debet ut mutabilis sit. Facile mutare possis, vel saltem scire quid sit minor mutatio et quid momenti.

Alia res quae in servo programmatis utilis esse potest, subito, continuitas traditionis est. In applicatione interretialem uti potes aliquid simile CPSut effectum consuetudines in mundo interretialium interretialium obtineat. Continuitas rei frumentariae habere potest, si res non nimis cara est.

4. Quae novae abstractiones inveniendae restant?

Non certus sum quam rationabilis illa spes sit, sed ego vere amo ut novam abstractionem detegam - id quod tam significativum esse potest quam functiones primae classis vel recursionis vel saltem ambitus defectus. Forsitan hoc impossibile est somnium. Talia saepe non sunt inventa. Sed non diffido.

Parva secreta nota

1. Linguam aliquam uti potes quod voles

Antea applicationes creatio significabat creationem programmatis desktop. Et in programmate escritorio magnum studium est ad applicationes scribendas in eadem lingua ac ratio operativa. Itaque abhinc decem annos scribens programmatum generatim significatum in C. Tandem in programmate scripto, traditio evolvit: applicationes in linguis insolitis conscribi debent. Et haec traditio tamdiu evolvit ut homines non-technici sicut administratores et capitalistae audeant id quoque didicerint.

Software Servo exemplar hoc omnino destruit. Cum programmate servitore uti potes qualibet lingua quam vis. Fere nemo hoc adhuc intelligit (praesertim curatores et capitalistas audent). Sed hoc quidam scelestores intelligunt, unde audimus de linguis indytis sicut Perl et Python. De Perl et Pythone non audimus quia homines iis utuntur ad applicationes Fenestra scribendas.

Quid hoc sibi vult, homines, qui in programmandi consilio linguarum student, exsistere audientiam potentialem pro opere nostro.

2. Celeritas ex profilers

Linguae tincidunt, vel saltem instrumentorum linguae, scribendae sunt compilatores qui codicem celeriter generant. Sed hoc non puto esse quod linguas usoribus tenet. Knuth olim notavit celeritatem in paucis bottlenecks consistere. Et qui programma accelerare tentaverit, scit se divinare non posse ubi est bottleneck. Profiler responsum est.

Linguam tincidunt solvendo problema malum. Users benchmarks non opus est ut celeriter currendum sit. Lingua egent quae ostendere potest quibus partibus programmatis opus sit renovetur. Hoc loco celeritas in usu est. Ita fortasse melius esset si linguam instrumenti dimidium temporis consumpsissent optimizing compilator et in scribendo bonum profileris impendere.

3. vos postulo an app quod facit evolve lingua tua

Hoc non potest esse ultima veritas, sed videtur optimae linguae evolutae cum applicationibus in quibus adhibebantur. C scriptum est ab hominibus qui programmandi ratio egebant. Lisp partim differentiae symbolicae destinata est, et McCarthy tam cupidus est ut incipiat ut etiam in programmatis differentiationibus scribere coepisset in charta prima Lisp anno 1960.

Hoc maxime bonum est si aliqua applicatio novas difficultates solvit. Hoc linguam tuam impellit ut novas notas habere velis programmatores. Personaliter, Im 'interested in scribendo linguam quae in applicationibus servo bonum erit'.

[Per disceptationem hoc etiam punctum Guido Steele fecit, addens applicationem non debere scribere compilator pro lingua tua, nisi lingua tua ad compilatores scribere destinata sit.]

4. Lingua scribenda unum tempus aptum esse debet.

Scis quid programmatis iactus significat: cum opus est ut cito solvendo aliquam quaestionem terminatam. Credo si circumspicias, multa gravia invenies programmata quae quasi unum peracti sunt. Non mirum si plures programmata exierunt quasi unum peracti. Ita, si linguam creare vis quae in communi programmate scribendo apta erit, tum etiam unum-off programmatum scribendo idoneum esse debet, quia hic est rudimentum plurium programmatum.

5. Syntaxis ad semantics

Syntax et semantics valde diversa sunt quae traditum est credendum. Hoc horrendum sonare potest, sed non est. Cogito quid vis efficere in programmatis tuis, quomodo id exprimas.

Nuper locutus sum cum Robert Morris, et notavit operator oneris plus esse magnum ob victoriam linguarum cum syntaxi infixo. In linguis cum praepositione syntaxis, quodlibet munus quam definis actu est operator. Si vis addere novum genus numeri quem constituisti, simpliciter definire potes novam functionem ei addere. Si hoc in lingua cum syntaxi infixione feceris, multum interesse inter operantem onustum et functionem utens videbis.

Ideas quae revertuntur in tempore

1. Nova programmatio linguarum

Respiciens ad annos 1970, similis fuit novas programmandi linguas evolvere. Hoc nunc non est. Sed credo quod programmator serviens morem iterum reduceret ad novas linguas creandas. Cum programmate servitore uti potes qualibet lingua quae vis, ergo si quis linguam creet quae potior ceteris videtur, populus erit qui ea uti iudicet.

2. Tempus sharing

Ricardus Kelsey cum hac opinione accessit cuius tempus iterum venit et plene confirmo. Coniicio (and Microsoft nimis) est quod multum computandi movebitur a desktop ad remotis servientibus. Id est, tempus communicans est retro. Puto hoc in gradu linguae favere. Exempli gratia, Richard et Jonathan Reeves multum operae egerunt ad processum deducendi scheduling in Scheme 48 .

3. Efficientia

Nuper satis visum est computatores iam satis esse. De bytecode plura ac plura audimus, quod quidem mihi significat vim aliquam in subsidiis habere. Sed puto cum programmate server eam non habemus. Procuratoribus qui programmationem currunt solvere debebit aliquis, et numerus utentium servo per machinam sustentare poterit, capitalis costarum divisor erit.

Efficaciam puto materiam, saltem in ampullas computando. Hoc maxime momenti erit ad operationes I/O, quia ministrae applicationes multum talium operationum praestant.

In fine, eveniat ut bytecode responsum non sit. Sol et Microsoft videntur caput ad caput ire in campo bytecode ad momentum. Sed hoc faciunt, quia bytecode locus opportunus est in processu immerso, non quia ipsum bytecode utilem notionem. Forte eveniat quod tota haec pugna lateat. Praesent ut mauris.

Laquei et insidiae

1. Clientes

Haec coniectura est iusta, sed ea sola applicationes quae tibi prosunt sunt ea quae omnino ministrant parte. Programma designans quod operatur in assumptione quod quisque mos habere est sicut societas cogitans ex suppositione quod omnes honesti erunt. Reprehenderit commodo, sed id numquam eveniet id assumenda.

Puto celeri incrementa in machinis interretialibus fore, et supponere possumus eos fundamentales html et formas sustinere. Habesne pasco in phone? Tua PalmPilot habere telephonum? Tuus rubus maius screen habent? Poterisne accedere ad Interreti ex tuo gameboy? Ex custodia tua? Nescio. Et non invenio si ego omnia in servo futura esse spondeo. Multo certius est omnia cerebra habere in calculonis servi. .

2. Object-orientatur programming

Intellego hanc propositionem esse controversiam, sed non puto magni momenti esse OOP. Hoc aptum puto paradigma ad applicationes specificas quae structuris notitiis certis indigent, sicut systemata fenestrae, simulationes, systemata CAD. Sed non intelligo cur omnibus programmatibus idoneus sit.

Puto homines in magnis societatibus OOP ex parte amant, quia multum operae simile facit. Quae naturaliter repraesentari possunt, inquam, numerorum integrorum nunc repraesentari potest schola cum omnibus machinis, agitando et strepitu.

Alia notatio amabilis OOP est quod methodi tibi dant aliquas effectus functionum primae classis. Sed hoc nuntium non est programmatores Lisp. Cum functiones primae classis veras habeas, simpliciter quoquo modo iis uti potes quae ad munus opportunum spectant, sed omnia in boilerplam classium ac modorum impellendo.

Puto quid hoc sit instrumenti linguae latinae, ut ne OOP nimis alte haereat. Forsitan respondetur offerre res magis generales, fundamentarias, et homines rem quamlibet systemata in bibliothecas designare.

3. Design by committee

Si lingua tua per commissionem designatur, tunc capti es, et non solum ob causas quas quisque novit. Quisque scit quod commissiones glebosos, inconstans linguarum designationes creare solent. Sed magnum periculum puto esse periculum non accipere. Cum unus homo est in mandatis, periculum accipit ne consilium inire conveniant.

Visne periculum accipere ad bonam linguam creandam? Multi homines suspicari possent linguam illam designandam esse ubi satis prope ab instituto sapientiae manere debeas. Non ita bet. In omnibus aliis, praemium pro periculo habet. Cur igitur lingua quid aliud consilium?

Source: www.habr.com