Triant el teu primer llenguatge de programació

Certament aquesta és una de les preguntes que més arriba a la meva safata d'entrada a l'hora de parlar de programació. Si anem a començar una sèrie d'articles que els permetin aprendre a programar i tornar el coneixement gratuït en forma de contribucions a comunitats de programari lliure / codi obert al món, cal respondre a aquesta bàsica encara que una mica difícil pregunta. Quin llenguatge de programació he d'aprendre?

Una mica d'història

Per poder començar a comprendre i triar un llenguatge de programació, primer hem de conèixer una mica sobre la història dels mateixos, els seus usos i funcions, i com resolen diferents necessitats al llarg de el temps.

Llenguatges de màquina (baix nivell)

Coneguts comunament com Muntatge, Són llenguatges de programació que podríem definir com a dialectes d'una llengua més general ... Això sona una mica complicat però ho vaig a exemplificar ... Sabem que el llenguatge universal de la computació és la electricitat, Això vol dir que en última instància el que un ordinador llegeix són 0es i 1s, anem a anomenar això com español d'ordinador. En aquest exemple, l'espanyol és la regla bàsica, però com bé sabem, no és el mateix l'espanyol que parlen els llatins a l'parlat a Espanya, i fins i tot així, no és el mateix l'espanyol del Perú amb l'espanyol d'Argentina. Evidentment tots tenim gairebé les mateixes paraules (0es i 1s), mes l'ús i significat poden variar d'acord a l'context.

Això succeeix a nivell de processador. Quan parlem de arquitectures de computació, (Amd64, intel, arm, ...) ens referim a el dialecte d'aquest espanyol d'ordinador. Això es deu al fet que diverses empreses entenen l'ordre i significat a la seva manera, de manera que alguns varien en detalls com el flux del corrent, o l'ordre amb el qual es van a guardar els 0es i 1s.

Aquests llenguatges de programació són summament veloços, ja que treballen a el nivell més baix possible de programació, però són summament dependents de l'arquitectura i certament són una mica més complicats d'aprendre que la resta. Aquests solen requerir d'una base més àmplia de conceptes per poder transformar la data i poder executar coses útils en elles. Per als amants dels videojocs, un exemple serien les consoles SEGA, les quals utilitzaven Assembly per programar els seus jocs. Evidentment en aquesta època la quantitat de memòria era mínima comparada amb avui, i era necessari dominar un llenguatge que pogués ser veloç i produir programes lleugers.

Llenguatges d'alt nivell

Aquest gran grup contempla aquells llenguatges que van venir després de Muntatge. La necessitat d'obtenir codi portable va fer que sorgís un grup de llenguatges anomenats compilats. Entre aquests el primer a prendre avantatge va ser C, el qual ha tingut predominança en la programació a nivell de sistema operatiu des dels 70s.

llenguatges compilats

Anem a veure un exemple pràctic del que comento. Vegem un programa molt simple en llenguatge C que imprimeix una línia de codi.

Disseny propi. Christopher Díaz Riveros

Després compilar tenim el següent:

Disseny propio.Christopher Díaz Riveros

Però ara vegem el que hauríem d'escriure per replicar el mateix resultat en codi Assembly:

Disseny propi. Christopher Díaz Riveros

Aquesta és la traducció de les nostres 3 línies de codi de simple.c, L'arxiu simple.s és creat mitjançant la comanda gcc -S simple.c i és el que entendria el nostre processador en un dialecte Muntatge. Evidentment per poder crear un executable que consti de 0es i 1s és necessari processar l'arxiu simple.s i connectar-lo amb les biblioteques compartides del nostre sistema. Això es fa mitjançant un assemblador (as) i un connector (ld).

Els llenguatges compilats brinden un gran avantatge sobre els de baix nivell, són portables. La portabilitat lliurament codi que pot ser executat en diferents processadors sense la necessitat de generar codi específic per a cada arquitectura. Un altre avantatge evident és la simplicitat que dóna feina a l'hora de llegir i escriure codi. Dins dels seus principals desavantatges tenim una elevada complexitat, ja que comparat amb el següent tipus de llenguatges que veurem, la llibertat que brinda C pot ser perjudicial si no se sap controlar, certament és com lliurar una pistola, podria succeir que en la manca de experiència una persona acabi disparant al seu propi peu en l'intent de netejar l'arma.

llenguatges interpretats

Dins d'aquest grup tenim una gran varietat de llenguatges, entre els més importants comptem Python, Ruby, Javascript, PHP, etc ... La idea bàsica d'aquests llenguatges és brindar una forma ràpida de creació i execució de programes, això es deu al fet que molts dels processos difícils són portats a terme en l'intèrpret, i la programació de la lògica és la que s'implementa en el codi. Vegem el mateix exemple anterior però aquesta vegada escrit en Python:

Disseny propi. Christopher Díaz Riveros

Dins de les coses més resaltantes podem veure que la primera línia s'encarrega de cridar a l'intèrpret (el programa que va a executar la nostra aplicació) i el subsegüent codi és més «simple» que la seva versió en C, ja que tota la feina pesat es realitza en l'intèrpret.

Disseny propi. Christopher Díaz Riveros

Els llenguatges interpretats brinden a l'desenvolupador una capa de seguretat addicional, ja compten amb controls de seguretat més rigorosos (ULL que no són perfectes, ja que fins als millors poden cometre errors) i ja no patim el risc de disparar una arma sense adonar-nos, ja que a el primer intent, l'intèrpret deixaria anar un avís i es cancel·laria l'execució. El principal desavantatge es fa evident a l'hora d'executar el programa, ja que aquest és més lent que el seu contrapart binària, això precisament a causa de la major quantitat de processament per poder assegurar que el codi funciona. Si el programa no requereix de terminis extremadament curts, la diferència pot passar desapercebuda, però si parlem de milers o milions de dades per segon, la diferència es fa exponencialment notable en els llenguatges compilats.

tipatge

Aquesta és una caracteríscia dels llenguatges de programació, aquests poden ser fortament dèbilment tipats. Aquest tema el deixaré per a un altre post, ja que és necessari i curiós entendre com s'emmagatzema la memòria en un programa, però per ara només ens cal fer la distinció: Els llenguatges fortament tipats són aquells que requereixen conèixer el tipus de dada que va a treballar-se en una variable o constant, mentre que els dèbilment tipats poden realitzar conversions de manera implícita i tot dependrà d'una jerarquia de conversió seguida pel llenguatge. (Si no s'entén ara, cap problema, ho deixarem per després)

paradigmes

A l'igual que tot en el món GNU / Linux, els llenguatges de programació es basen d'acord a paradigmes, i es generen comunitats al voltant d'aquests. Per exemple tenim la Fundació Python o Ruby o PHP o Bash (en aquest cas és la comunitat GNU). Al que vull arribar amb això és que no puc expressar la gran quantitat de pros i contres que té cada un, però si puc dir-los que on hi ha un llenguatge de programació lliure, hi ha una comunitat on aprendre i participar. Val la pena esmentar que molts si és que no són tots els intèrprets de llenguatges estan escrits en C, o algun derivat proper, i el desenvolupament dels mateixos sol dur a terme per un grup més reduït de la comunitat, que s'encarreguen de prendre decisions que afectaran a tots els usuaris de l'llenguatge. Poden fins i tot formar-se institucions que vetllin pel desenvolupament correcte de el llenguatge, com és el cas de C.

Quina triar?

Ja hem parlat bastant sobre els llenguatges i encara no responc al més important 😛. Però espero que després d'haver revisat aquest petit article no sigui necessari que sigui jo mateix qui et digui quin llenguatge triar, ja que amb aquesta informació estàs en tota la capacitat de buscar un que et generi curiositat. Evidentment si desitges aprendre a programar en un llenguatge Muntatge requerirás de força temps abans de poder tenir alguna cosa funcional, el temps es reduirà bastant si optes per un llenguatge compilat, on a més de comptar amb la portabilitat en sistemes * NIX, podràs aprendre informació referent a l'funcionament de el mateix sistema, ja que estar en contacte amb C o derivats et fa d'una manera o altra aprendre com funciona de manera general un sistema operatiu. Finalment, si el que vols és aprendre alguna cosa lleugera i que et permeti fer molt sense la necessitat de comprendre molt, els llenguatges interpretats són una manera entretinguda d'aprendre i desenvolupar habilitats de programació.

Aprèn amb alguna cosa emocionant

Aquest és el millor consell que puc donar-los, si volen aprendre alguna cosa, cal trobar alguna cosa apassionant primer, sinó serà bastant difícil sobrepassar la corba d'aprenentatge típica de tot llenguatge de programació. Suposem que administren sistemes, en aquest cas potser és necessari aprendre un llenguatge ideal per scripting (Interpretat), dins d'aquests comptem amb Perl, Python, Bash, etc etc ... Potser el teu són els jocs, hi ha molts projectes en llenguatges com Javascript, Lua, C ++, depenent de el tipus de joc que vulguis fer. Potser t'agradaria crear una eina a nivell de sistema, ja que comptem C, Python, Perl, com veuràs alguns es repeteixen, i això és degut al fet que molts llenguatges poden ser utilitzats per a moltes tasques, per això la definició de llenguatges multipropósitos en la majoria d'aquests.

Comença un projecte

Amb això no em refereixo al fet que creus el següent compilador, o fins i tot el següent llenguatge de programació, un projecte pot ser arreglar un petit error en el teu programa favorit, potser fins i tot ajudar a millorar la documentació. Per què la documentació? perquè no hi ha millor manera d'aprendre com funciona el programari que llegint i ajudant a escriure la seva documentació, perquè després de el codi font, és la major font d'informació que es va a trobar sobre el programa. En un altre moment veurem com llegir el codi d'un projecte i entendre les funcions i valors que adquireixen.

Moltes gràcies per haver arribat fins aquí i com sempre, els seus comentaris m'ajuden a generar millor contingut i saber on enfocar l'atenció, Salutacions.


El contingut d'l'article s'adhereix als nostres principis de ètica editorial. Per notificar un error punxa http://secbcaixabank.info/SECB-COVIDXNUMX-DENUNCIA-INSPECCION-PROTOCOLO-.pdf.

37 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   anònim va dir

    Com sempre octubre 10 !!!!!! Gràcies pels teus articles. Salutacions i que vinguin mes !!!!

    1.    ChrisADR va dir

      Moltes gràcies 🙂 m'anima bastant a seguir escrivint. Salutacions

  2.   Rubén va dir

    Crec que és un error fer-se la pregunta «quin llenguatge triar?». Jo sóc dels que pensen que el llenguatge és el de menys, l'important és aprendre els fonaments de la programació ja «pensar computacionalment». Decantar-se per una sintaxi, la seva tipat, si suporta OOP, la seva utilitat, etc. crec que és una cosa que vindrà de forma natural en l'estudi i a la fi i al el cap, tot programador coneix més d'1, 2 i 3 llenguatges ... i gràcies als conceptes de programació (i no de sintaxi) que té és capaç de programar en un llenguatge en el qual encara no té experiència.
    No obstant això, per als iniciats, crec que un bon llenguatge pot ser Python per la senzillesa, però sobretot, anar una mica més enllà, estudiar algoritmes i saber com funcionen les coses «per dins».

    Una salutació ChrisADR

    1.    ChrisADR va dir

      Hola Rubén, gràcies per compartir
      Hi ha alguna cosa que he après amb el pas el temps en el món de la programació, i és que «el que molt abasta poc estreny» i amb aquesta coneguda frase em refereixo al fet que moltes vegades, i sobretot els més entusiastes, decideixen provar d' tot una mica, i tenir girs molt ràpids pel que fa a la seva forma d'aprendre a programar. Jo considero, i és opinió personal, que un bon desenvolupador hauria de conèixer i dominar un llenguatge de compilador i un llenguatge d'intèrpret, a més de tenir nocions d'algun dialecte de Assembly.
      El motiu és el següent, el prototipat sempre ha de ser una cosa senzilla i ràpid, fàcil de generar i que mostri de manera general un resultat, però en cas de no ser suficient, ha d'haver un «pla B» per a recórrer quan l'intèrpret ha arribat al seu límit.
      Conèixer un dialecte de Assembly no només et dóna confiança sinó que t'ensenya a pensar «computacionalment», però evidentment aquesta part és la més complicada de totes, i certament és una cosa a la que no tots els programadors arriben.
      Però tornant al tema, ja que la idea central crec que és, «escull un llenguatge i practica MOLT», perquè en realitat l'única forma de fer-bo programant és llegint i escrivint codi, i això és una cosa que he après de la comunitat de l'nucli , quan un manté la mateixa sintaxi per molt temps, deixa de veure la forma i es comença a preocupar pel FONS. La idea d'escollir un llenguatge o sintaxi des del principi és que un sigui capaç d'acostumar la seva lectura i escriptura de tal manera que pugui començar a llegir el SIGNIFICAT de el programa en lloc de la sintaxi de la mateixa.
      Aquest és el motiu central d'aquest post, que cadascú triï el seu llenguatge perquè en els següents puguem explicar els conceptes, potser amb això s'aclareixen els dubtes 🙂
      Saudos i gràcies per compartir.

  3.   deibis contreres va dir

    gràcies pel POSR va estar bo.

    Salutacions

    1.    ChrisADR va dir

      Hola Deibis, gràcies a tu per compartir 🙂 Salutacions

  4.   JorgeFS va dir

    El meu consell: qualsevol cosa que no sigui PHP. Fa 20 anys PHP tenia desert sentit en la seva existència a causa de l'alt nivell de complicació que era programar la web en un altre llenguatge utilitzant CGI. Però avui en dia hi ha una gran varietat de Frameworks per fer el desenvolupament web molt més amè en potents llenguatges, com Django per Python, Spring per Java o Rails per Ruby. Tot i que actualment PHP apareix en totes les llistes de popularitat de llenguatges, al meu entendre PHP perdrà la seva rellevància amb el temps.
    Aconsello fortament començar amb C \ C ++ per entendre la realitat de la programació, tot i que la corba d'aprenentatge és altíssima.
    Salutacions.

    1.    ChrisADR va dir

      Hola Jorge gràcies per compartir, només recordar Laravel, el qual és un Framework bastant sòlid 🙂 a mi personalment mai em va agradar Spring ni Java per al desenvolupament web, ho trobo bastant molest, però suposo que és part de la quantitat de temps que porten a el mercat, en el seu moment van ser pioners i certament ara per ara les alternatives modernes (Js, Python i Ruby) han sabut millorar la manera de presentar codi que sigui llegible i modificable sense molta feina.
      Jo també m'inclino a que la gent aprengui C / C ++ en algun punt de les seves vides, jo vaig començar amb Java, però suposo que aquesta és la bellesa de la programació, pots començar amb el que vulguis, sempre que siguis consistent serà profitós 🙂 Salutacions

    2.    Rubén va dir

      No puc estar més en desacord amb tu. Jo vaig començar fa molts anys amb C i VB, per després centrar-me en PHP i JS (ja que em vaig enfocar a el desenvolupament web) i posteriorment mentre estudiava vaig aprendre C / C ++ i Java principalment.
      PHP té una quantitat d'avantatges que no podria enumerar en aquest missatge. PHP7 és ràpid (més que Python ... sense fer servir hhvm, diferents caches, frameworks com Phalcon o bytecode en el cas de Python), té una quantitat de llibreries i frameworks enorme, té una quantitat enorme de funcions directament implementades per usar-les en qualsevol moment, la seva sintaxi tan semblant a C fa que sigui molt fàcil migrar a altres llenguatges.
      El 30% dels llocs webs a nivell mundial estan fets amb WordPress (PHP) i això sembla que no canviarà, Wikipedia el fa servir, Facebook (amb hhvm) i una gran quantitat de llocs, en total, un 80%.

      Et recordo que Ruby on Rails a l'igual que Django tenen 12 anys! Quina quota han aconseguit en aquest temps? I per descomptat, parlem de 2 frameworks que pràcticament tenen el monopoli i no hi ha cap tipus de fragmentació. Quines altres alternatives serioses tinc? Dir que PHP va a perdre rellevància té molt poc sentit.

      Que ara Python estigui de moda perquè té una corba d'aprenentatge ràpida, sigui un llenguatge senzill i t'ho venguin com el «fes-te programador en 20 hores amb Python i treballa d'això», amb el suport d'empreses com Google i que ara hi hagi la moda de buscar nous llenguatges (Go, Dart ....) per diferenciar-te en un CV (o com el naixement diari de 50 frameworks per Javascript!), no vol dir que les coses canviïn.

      Ruby és un llenguatge molt interessant, però trenca tant amb els patrons establerts que em costa creure que es fes més popular que PHP. Per descomptat, Ruby crec que és el pitjor llenguatge per començar a programar de tots.
      Entenc que em diguis que Python pot ser amè per programar, fins i tot Ruby amb la seva infinitat de peculiaritats ... però Spring amb Java? Really? Java pot ser moltes coses ... però més amè que Python i PHP?

      Està molt bé començar amb Python, però com et quedis només en Python, corres el risc que moltes empreses creen que el teu nivell de programació no és «profund» (encara que siguis molt bo en Python). Això es deu al fet que competeixes amb altres llenguatges «multiproposito» com C ++ o Java. Es pot programar en Python sense saber la diferència què carajos és un punter, operacions bitwise, com funciona un garbage collector i un llarg etcètera.
      Python és potser el menys semblant a la «programació clàssica» que existeix i es pot veure com un «llenguatge per a nens» (entengui la metàfora), i això al seu torn és un avantatge i un desavantatge.

      1.    JorgeFS va dir

        «Python és potser el menys semblant a la" programació clàssica "que existeix i es pot veure com un" llenguatge per a nens "(entengui la metàfora), i això al seu torn és un avantatge i un desavantatge.» LOL, aquesta és una de les coses més còmiques que vaig veure dir sobre Python. Alguna vegada vostè va aprendre Python de debò?
        Fa quant de temps no es dóna una volta pel món fora de PHP?
        Amic PHP néixer mort. PHP (\ d +) té moltíssim llast amb si a causa d'un molt mal disseny inicial i per tal de mantenir la comunitat d'usuaris segueix arrossegant tots aquests errors de disseny inicials molt a fons. PHP néixer sense modularitat, amb moltíssimes funcionalitats a l'estil C (que de passada, no sé d'on vostè va treure que com el seu sintaxi és similar a C pot ser fàcilment portat a altres llenguatges). Un llenguatge d'alt nivell, com hauria de comportar-PHP, té coses tan lletges com aquest reguitzell de funcions llistades en el seu lloc oficial http://php.net/manual/en/indexes.functions.php, Això és a causa de que va néixer sense modularitat, per tant tot està cochinamente barrejat i sense espais de noms.
        Això és un Pedaso de codi PHP:
        «Stream_notification_callback»);
        stream_context_set_params ($ CTX, $ params);
        var_dump (stream_context_get_params ($ CTX));
        ?>
        en algun punt es pot determinar d'on es van importar totes aquestes funcionalitats 'stream'? NO, es pogués dir llavors que són Buildin functions, però llavors tot l'ecosistema és Buildin functions ?. I així, hi ha moltíssima escombraries al codi PHP, que si vostè no és capaç d'entendre la complexitat i inutilitat tan malament disseny, perdoneu però té moltíssim món a veure encara.
        Wordpress és una excel·lent solució de programari, però això no vol dir que tingui una bona base tecnològica. Vostè pot martellejar amb una pedra i treure claus amb les dents, i tot i així pot fer excel·lents treballs de fusteria, però és clar, amb moltíssim més feina que un altre fuster que utilitza un bon martell.

        D'altra banda: "fes-te programador en 20 hores amb Python i treballa d'això", núnca he vist semblant estupidesa. Potser en PHP facis un lloc web en 20 hores i sense tenir cap coneixement de com funciona la programació web, o la programació en si. De fet aquest és el perquè PHP és tan popular, perquè els novells a l'entrar a aquest món veuen en PHP un punt de creixement (per això tant codi PHP sucks so hard).
        Referent a mancances de Python, l'única en la que va encertar va ser a la feina amb punters, però a el cas, Python és un llenguatge d'alt nivell (com ho és Java) i no fa ús a nivell de sintaxi d'aquests; però operacions bitwise, seriós ?, es refereix vostè a això x << i, x >> i: https://wiki.python.org/moin/BitwiseOperators. El de l'garbage collector de debò ho vaig entendre molt menys: https://docs.python.org/3/library/gc.html.
        Mancances de PHP:
        -PHP té un molt pobre disseny de programació orientada a objectes (OOP).
        -Encara no es pot fer sobrecàrrega d'operadors.
        -Sorpresa, function overloading en PHP no és el que esperes naturalment d'aquest concepte.
        ... .. i m'acabo d'avorrir jeje.
        Salutacions.

        1.    Rubén va dir

          Vaig posar entre parèntesis «entengui la metàfora» (per la comparació de Python amb C ++ / Java en un mateix entorn de treball), està clar que tu no la vas entendre. Podria dir-te que un programador C ++ pot aprendre Python d'una manera molt més ràpida, que un programador Python aprendre C ++, a l'igual que no és sorpresa que la mitjana de salari d'un programador C / C ++ sigui més alta que un Python.
          T'ho podria explicar amb altres exemples, fins i tot amb algun dibuix! però sembla que tu sol et centres en descontextualitzar i ridiculitzar el que poso.

          Jo en cap moment he dit que PHP sigui el millor llenguatge de el món ni que tingui un disseny exemplar, no sé d'on treus això. Crec que abans de jutjar el coneixement dels altres hauries de millorar la teva comprensió lectora. El que si és cert (i vaig dir en el meu missatge) és que desenvolupar amb el és molt àgil, a més de tot l'ecosistema de frameworks, llibreries i utilitats que pots trobar-te.
          A més, quin tipus de comparació fem? Python com a llenguatge multipropòsit o per a web? En aquest cas, per què ho comparem amb PHP? PHP té un camp concret, i és en aquest camp on Python (amb una quota de l'0.2%, que no ha arribat a canviar en tot aquest any) empal·lideix a la banda de PHP.
          Ara anem a veure els trends de PHP; de el 82,4% al gener de 2017 a 83.1% al gener de 2018: https://w3techs.com/technologies/history_overview/programming_language

          És Python el qual va a destronar PHP? En quin any? en què lustre? dècada?
          Python podrà usar-se en moltes altres tasques, i fins i tot arribar a ser més usat que PHP, però Python com a llenguatge de desenvolupament web està a anys llum de ser si més no rellevant, 0.2% estancant davant 83.1% (amb pujada en aquest any).

          També dónes coses per fet dient que no em dono una volta fora de PHP, fent al·lusió que només conec PHP, quan precisament fa molt que no programo en PHP jaja. Actualment per qüestions laborals programar sobretot en Java.
          Tampoc he dit que per programar en Python no es tingui el coneixement sobre bitwise, XNUMX garbage collector o un punter. Sinó que es pot programar en Python sense tan sols saber que és això. No obstant això, dubto molt que aquest sigui el cas d'un programador C ++. I òbviament faig la comparació quan Python entra en aquest camp de l' «llenguatge multipropòsit», no per a la programació web.

          Això de fes-te programador en 20 hores és simplement un acudit, una exageració. No obstant això, et podria posar aquí diversos enllaços sobre plataformes d'educació en línia i cursos que prometen coses semblants. No em culpis a mi, culpa a un mercat laboral que pensa que fer-se «expert programador» és qüestió de fer un curset de 20 hores. I sent Python un dels llenguatges de moda ia més, amb la corba d'aprenentatge més ràpida ... blanc i en ampolla.

          Insisteixo, bases el teu missatge a dir el dolent que és PHP (que en certa part, estic d'acord). Em sembla correcte, excepte perquè el meu missatge no tracta sobre això, sinó per què PHP es seguirà utilitzant i no va desaparèixer demà com tu creus.

          una salutació

  5.   ningú va dir

    C -> Go -> (Lisp | Haskell | Java | el-que-sigui)

    1.    ChrisADR va dir

      Fa poc un lector em va enviar al meu correu una recomanació d'un llibre de Go, certament un llenguatge per tenir en compte en el futur i de l'quin potser hi haurà algun post aquí 🙂 Moltes graicas per compartir

  6.   mvr1981 va dir

    Bé ... ¿i que programe? ¿Perquè aprendre un llenguatge de programació avui en dia amb tan bons i experimentats programadors que ja existeixen? Quins problemes puc resoldre jo que altres no hagin resolt ja d'una manera molt més eficient? ... a definittiva: Què tan original és ser programador avui en dia? ¿Com puc col·laborar amb altres sense que em pateen o em s'autoexclogui per la meva falta de coneixements i experiència ?.

    1.    ChrisADR va dir

      Hola mvr1981, preguntes interessants realment 🙂 anem a desgranar-de l'última cap a la primera.

      ¿Com puc col·laborar amb altres sense que em pateen o em s'autoexclogui per la meva falta de coneixements i experiència ?.

      Si no vols que et pateen, el primer pas és aprendre el procés, no t'imagines la quantitat de gent que arriba a projectes volent fer les coses exclusivament a la seva manera, volent que la comunitat s'adapti als seus desitjos. Certament és com que jo arribi a casa teva i em posi a fer un desordre i faltar el respecte a la teva família (així és com se sent moltes vegades). Si vols evitar que passi això, presta molta atenció a les pautes per contribuir, els mitjans pels quals fer-ho, i no manis alguna cosa incomplet, si necessites ajuda sempre hi ha mitjans per comunicar-se, però un treball mal fet probablement crearà males primeres impressions. Si no vols autoexcloure't, això ja depèn de tu, pots veure-ho com el programador inútil que no sap el que fa o el que està en camí a convertir-se en un excel·lent programador, i això només passa amb pràctica i certament amb errors en el camí. Jo m'he equivocat moltes vegades abans d'adquirir el meu estat de developer en Gentoo, i això no em va aturar a seguir intentant tot i el «mal moment» 🙂.

      Què tan original és ser programador avui en dia?

      -No es tracta d'originalitat, és una necessitat ara per ara, només pensa el següent, fa 20 o 30 anys, escriure a màquina era una necessitat, molts treballs inferien que sabies o almenys ho podies fer. Avui saber Ofimàtica és una necessitat, pràcticament no existeix treball que no et posi davant documents d'ofimàtica. Demà, dins de molt poc, programar serà una necessitat. I això també s'aplica des d'un punt de vista personal, saber què passa en els programes als quals confies coses tan importants com els teus diners, salut, família, és una cosa lògica per a mi, perquè només pots conèixer les seves limitacions si saps com funcionen i per a saber-ho, cal saber programar.

      Quins problemes puc resoldre jo que altres no hagin resolt ja d'una manera molt més eficient?

      -Et sorprendria la quantitat de característiques que es requereixen avui per avui, i francament, no importa que hi hagi els millors programadors de el món en la comunitat, el treball sempre serà més gran que la capacitat de treball dels desenvolupadors, això ho puc comprovar en Gentoo, hi ha gent que desenvolupa el nucli, gent treballant per a Google, Sony, etc etc ... l'única cosa que tots tenim en comú és que ningú té tant de temps com voldria per poder realitzar tota la feina pendent.

      ¿Perquè aprendre un llenguatge de programació avui en dia amb tan bons i experimentats programadors que ja existeixen?

      -Això es respon a la segona pregunta 😉 Però ara afegeixo que les generacions han de poder suportar la feina que ja s'ha desenvolupat, amb això vull dir que aquells «experimentats» desenvolupadors a poc a poc aniran desapareixent i caldrà que els més «joves »desenvolupadors prenguin les responsabilitats i ajudin a mantenir li cicle viu, una comunitat que no compta amb gent jove i inexperta és propensa a desaparèixer al llarg de el temps, precisament perquè no hi haurà oportunitat per transmetre el coneixement.

      ¿I que programe?

      -Això potser és el més difícil de respondre, però intentaré donar-te un exemple 🙂 Fa poc vaig començar a patir els problemes del GNOME 24 i la seva connexió a Wayland que impedeixen a programes com Shutter prendre captures de pantalla. Aquest és un problema per a mi perquè quan escric els meus articles, necessito mostrar el que dic 🙂 buscant una mica vaig arribar a l'aplicació de captura de pantalla del GNOME, alguna cosa «minimalista» per dir el menys. Dins de les seves funcions, hi ha una de prendre una regió de pantalla, però què passa si no vaig prendre bé la foto? Doncs he de sortir i tornar a entrar a el programa, alguna cosa tediós certament, a mi em serviria molt un botó que digui «Tornar a prendre» o alguna cosa per l'estil que em permeti prendre una nova captura sense haver de sortir i entrar de nou ... Aquest és un petit projecte de programació, jo mai he programat alguna cosa en el framework del GNOME així que evidentment tinc molt a aprendre abans d'enviar el meu «pegat» amb el botó nou, però en el camí aprenc a programar i amb una mica de sort aquesta característica serà d'ajuda per a més d'un quan estigui a disposició de tots.

      Aquest és un exemple, és una cosa senzilla i que segur qualsevol altre programador «expert» podria haver-ho fet ja, però per evident falta de temps, no ha estat així, ara sóc jo qui tinc la possibilitat de fer-ho, sense ser en realitat un super programador.

      Ara només et toca a tu trobar alguna cosa que faria la teva vida més «simple» en aquest programari que fas servir tan seguit, la bellesa d'això és que si seguim els consells que els donaré en els següents articles, no importarà el llenguatge, perquè sabran el bàsic per poder començar a comprendre el codi que llegeixen i modificar-lo per fer el que vostès vulguin, aquesta és una sensació molt especial 🙂

      Salutacions i gràcies de nou

      1.    ningú va dir

        crec que només una veus he obert el programa de captures de gnome, el mes senzill és anar a les dreceres de teclat i assignar-XNUMX combinacions print per capturar tot alt-print per capturar la finestra activa i super-print per fer una selecció de la regió de captura, ja ve les dreceres disponibles, simplement és cosa de assignar-

        1.    ChrisADR va dir

          Això per això que li diem exemple 🙂 perquè coses petites com aquest botó, són programació, poden ajudar a alguns com poden passar desapercebuts per a altres, però certament compleixen amb l'objectiu principal, ajudar a aprendre a programar, i donar pas a noves features, després d'aquest botó es poden iniciar moltes coses, com un maneig de sessió, o una pantalla de vista prèvia de totes les fotos preses, o en fi, un munt de coses que podrien fer-se. La idea és que el teu trobis alguna cosa que et faci saltar la curiositat, qualsevol programari que corri en el teu sistema és possible que s'hagi millores o nous features que per falta de temps o personal no han estat implementats encara 🙂

      2.    mvr1981 va dir

        Gràcies a tu. són molt bones respostes.

    2.    Guillermo va dir

      Doncs per a algú que no vagi a ser professional en la matèria, caldria veure en quin entorn treballa, tant per a tasques administratives com directives pot ser interessant conèixer per exemple Python / Basic i saber programar macros en paquets ofimàtics com LibreOffice o MS Office. Hi ha ocasions en que això pot salvar-te moltes hores de treball a tu oa altres treballadors que et envoltin i els demanin realitzar qualsevol tasca repetitiva, et pots crear un quadre de comandament per calcularte ràpidament els principals ràtios de l'empresa després de connectar amb la base de dades de la mateixa i realitzar alguna consulta SQL.
      Com tot, si coneixes les eines al teu abast podràs pensar en com treure-li suc. No tot està inventat.

  7.   Marcelo va dir

    Guillem, totalment d'acord amb tu, «No tot està inventat" i el que està inventat és modificable. Cal treure-li suc a les eines i usar la que més s'adapta a les nostres necessitats.

  8.   Ricardo va dir

    Per programació el primer llenguatge que s'ha d'aprendre és el Ingles, després el que més els apacione i els sembli més bell

    1.    ChrisADR va dir

      No ho havia escrit, però cert 🙂 saber anglès ajuda bastant ja que la majoria de llenguatges estan escrits en el mateix, però també perquè la major quantitat d'informació de primera mà també 🙂 Moltes gràcies per compartir

  9.   Ruben Salgado va dir

    Excel·lent article, a més de motivador.

    1.    ChrisADR va dir

      Molt amable, moltes gràcies 🙂 Salutacions

  10.   Gonzalo Martínez va dir

    Programar és saber raonar i traduir aquest raonament a instruccions.

    Dos aclariments sobre l'article:

    1) Basat en la meva experiència com a docent de programació de gairebé 10 anys, no importa el llenguatge amb el que aprenguis, sinó com aprenguis i que tan complex és el mateix.

    Crec que és més fàcil un llenguatge que es pugui aprendre de forma estructurada, i després passar a altres coses mes complexes, de començar amb un llenguatge com Java des del principi.

    És més fàcil aprendre com a base alguna cosa com un Hello World en C o Pascal, que amb poques línies (PROGRAM en cas de Pascal, o #include en el cas de C) ja pot començar a desenvolupar-se l'algoritme ja codificar programa amb la seva lògica directament, que en Java, que de per si es necessita una classe, un mètode, i algunes coses mes que per a un principiant és una sobrecàrrega d'informació innecessària, i que pot bé ignorar i passar a altres coses, però són conceptes que estan ahi, i en el meu opinion, passar per alt les coses no és bona manera d'aprendre, però si el llenguatge t'obliga a utilitzar-les. És com començar una pràctica de tir la primera vegada amb una M-16, i disparar per mesos en mode semiautomatico prenent el mànec amb les dues mans com si fos una pistola.

    2) Si un llenguatge és interpretat o complilado depèn de la seva implementació, no d'el llenguatge en si mateix. Per posar un exemple, si s'utilitza Python, per a una app web que utilitzi WSGI (sigui mod_wsgi a apatxe, o uwsgi per Nginx), el codi python es compila a l'iniciar el mòdul corresponent, generant arxius .pyc

    També hi ha generadors d'arxius binaris per java (que generen binaris nadius en lloc de bytecode), o compiladors de scripts php en binaris purs.

    Respecte al que diuen sobre PHP, simplement és un llenguatge dissenyat en una altra època, amb altres coses en ment, i sense considerar aspectes que no existien en el seu moment. Clarament que sigui el mes usat no el converteix en millor per res de món, però hi ha una realitat: és el llenguatge amb el que més chance d'aconseguir treball existeix en tota la programació. Saber-ho no està de més, per mes que no agradi.

    Fins jo que treball ja fa diversos anys com a Administrador de Sistemes i abandoni la feina de desenvolupador, de tant en tant he de ficar codi PHP en alguna cosa.

    1.    ChrisADR va dir

      Hola Gonzalo, gràcies per compartir,

      Certament parlant de sobrecàrregues d'informació innecessària, saber que un mateix llenguatge pot ser interpretat o compilat és una cosa que no és necessari en aquesta etapa 🙂 Certament la implementació és important, però si diem això a aquest nivell, no generem més que confusió. De la mateixa manera no s'aborden temes de programació orientada a objectes, o altres conceptes que han de ser dosificats de manera gradual per no marejar a les persones.

      Ja que l'espai és reduït, l'objectiu principal de l'post és mostrar als lectors que vulguin programar, que hi ha dos grans mons de llenguatges, que els «tradicionalment» interpretats són més «senzills», que els «tradicionalment» compilats són una mica més «complexos» però que val la pena aquest nivell de complexitat per tenir un enteniment més sòlid i que és qüestió de cada persona el triar el llenguatge, ja que depenent de l'enfocament de programació, podran escollir els seus projectes favorits i a el mateix temps podran comprendre el que llegeixen i / o escriuen 🙂

      Moltes gràcies novament, salutacions.

      1.    Gonzalo Martínez va dir

        És que això és un error, no existeixen llenguatges compilats o interpretats, hi ha intèrprets i compiladors per a cada llenguatge, ambdós per a casos diferents.

        No és una sobrecàrrega d'informació esmentar-ara, sinó que és un error fer aquesta afirmació. En el meu opionion, hagués estat més productiu obviar els intèrprets si no es volia sobrecarregar d'informació.

        1.    ChrisADR va dir

          Gràcies per l'aclariment, ho tindré en consideració a l'hora de tornar a tocar el tema. Salutacions

  11.   Ares va dir

    Quin llenguatge em recomanen per costat servidor tenint en compte que php va caure en desgràcia ?.
    El mateix per a base de dades, no sé si ja hi haurà alguna cosa millor i més modern que mySQL.

    1.    ChrisADR va dir

      PHP no ha caigut en desgràcia ... Cada llenguatge té el seu cicle de vida, i php certament ja és un llenguatge que entra en l'escala de «madurs», el que el fa útil a nivell empresarial, on l'estabilitat està per sobre de tot ... com alguns bancs on encara es desenvolupa en java, el qual és més «madur» que php i certament té els seus seguidors i detractors ... i no cal dir de COBOL ...

      Si el que busques és uniformitat i modernitat, javascript s'està convertint en un dels preferits dels autodenominats «full stack developers», tot i que el paradigma de ruby ​​o la «simplicitat» de python són bons referents també .... Fins i tot perl podria ser l'opció depenent de les necessitats 🙂

      Avui dia el ORM (object relational mappers) està prenent força força pel que fa a l'ús de data relacional. Es passa de sintaxi de SQL a maneig de classes i atributs ... Gairebé tots els llenguatges (si no són tots) manegen algun ORM.

      Pg. Mongo DB és una alternativa a les bases de dades relacionals que ha pres força importància, cal però conèixer els seus pros i contres i validar si seria la millor solució depenent de la necessitat concreta.

      Espero t'ajudi, salutacions 🙂

      1.    Ares va dir

        Gràcies, revisaré això.

      2.    Ares va dir

        Se m'oblidava.

        Què em recomanes per treballar amb JAVA al Linux ?.
        Si pots diferenciar entre lliure i tancat millor.

        1.    ChrisADR va dir

          Eclipsi i NetBeans són de codi obert, no estic segur si hi ha algun que sigui netament programari lliure, jo tinc costum d'usar vim perquè de vegades la quantitat de codi fa que utilitzar tot un IDE sigui lent i propens a errors d'execució. Salutacions 🙂

        2.    PaulZeta va dir

          Per treballar amb java en Linux jo faig servir IntelliJ et recomano.

          1.    ChrisADR va dir

            PS, IntelliJ és programari privatiu 🙂

  12.   je va dir

    Nois també recordin que ... Treball en un banc i els explico que els llenguatges de programació prenen un segon pla per deixar passar a l'prinero a SQL i els Stored procedure.

    1.    Gonzalo Martínez va dir

      Cal tenir-los molt en compte els stored procedures, però al no fer servir un llenguatge portable entre motors, al menys en la meva experiència, sempre es tracta d'evitar a menys que no quedi més remei.