Quelle langue pour démarrer sur Linux? [fermé]

19

Je suis sur le point de commencer un diplôme de sécurité informatique de 4 ans à Purdue. Le diplôme ne nécessite aucun cours de programmation. Donc, la seule fois où je pourrai en prendre un, c'est un stage facultatif. Donc, la plupart de mon apprentissage se fera par moi-même. Au début de ma dernière année de lycée, j'ai décidé de passer complètement à Linux. Jusqu'à présent, j'ai appris quelques trucs sur Linux et la sécurité. Cependant, je pense également qu'il sera important pour moi d'apprendre également quelques langages de programmation.

Fondamentalement, je prévois d'apprendre à programmer côte à côte avec l'apprentissage de l'utilisation de Vim. Ce sera donc très probablement un processus lent. En fin de compte, je pense que cela en vaudra la peine. Comme je l'ai dit, j'entre dans la sécurité, donc je vais surtout créer des applications liées à la sécurité, dont la plupart seront liées au réseau. Je voudrais également commencer à développer des applications Android, mais ce sera plus tard.

Cela dit, j'ai quelques idées. Je pensais commencer par JavaScript, car il est multiplateforme, et je l'ai déjà vu suggéré. J'ai également beaucoup entendu parler de Ruby ou je pourrais suivre la voie Linux naturelle avec C. Quelle direction dois-je prendre?

JD Davis
la source

Réponses:

53

Tout d'abord: bashainsi que les utilitaires de ligne de commande courants. Bashest l'interface utilisateur par défaut du système d'exploitation, et de nombreux programmes sur un système Linux seront enveloppés dans un script shell à un certain niveau. Il peut être excentrique, a quelques particularités et semble souvent carrément stupide, mais c'est quelque chose que vous devrez gérer, alors soyez à l'aise avec cela. Les outils standard comme grep, diff, head, tail, sort, uniq, etc., seront très utiles non seulement avec les scripts shell, mais avec votre productivité sur la ligne de commande.

Apprenez au moins certains c. C'est ce que les niveaux les plus bas du système sont écrits, et cela vous donnera une meilleure compréhension du système dans son ensemble.

Choisissez n'importe quelle langue de niveau supérieur que vous aimez. Python, ruby, perl, java, Quel que soit - aussi longtemps que vous l' apprécierez. C'est là que vous commencez vraiment à apprendre à "programmer", et à partir de là, il sera plus facile de choisir plus de langues et de continuer à apprendre .

JimB
la source
2
Je suis d'accord avec tous les points énumérés ici.
Joe
6
Si vous allez apprendre bash, vous devez inclure des informations sur awk, sed, head, tail, cut, tr, diff, grep, find, ps, netstat, tcpdump, sort, uniq, etc., etc., etc., etc.
jftuga
2
@jftuga Accepté. Un énorme pourcentage de ma boîte à outils est constitué par les compétences nécessaires pour effectuer «l'extraction et l'intégration de données» - une façon élégante de dire «manipuler des fichiers texte formatés». Une fois que vous comprenez le pipeline et apprenez à connaître les outils courants, vous n'êtes plus libre du flux de travail de tout logiciel pré-lancé. Je suis également un grand fan de MS Powershell, qui se tient sur les épaules de Bash à bien des égards.
AndyN
@jftuga - noté. Bien que je pense que cela soit important, je ne pense pas qu'une personne nouvelle à Linux doive s'inquiéter d'apprendre les gros pistolets comme sed / awk en profondeur, mais ils devraient avoir suffisamment de compréhension pour pouvoir déchiffrer le code existant s'ils le rencontrent. .
JimB
8
D'accord avec tous, mais je recommanderais Python par rapport aux autres en tant que langage de haut niveau, car il est devenu le langage de plus haut niveau le plus courant pour les outils de gestion de serveur. Vous y rencontrerez beaucoup plus souvent que le rubis ou le java. Perl est également commun parce que c'est tellement vieux, donc je choisirais celui-là ensuite.
tylerl
10

Vous constaterez que tout le monde recommandera à peu près sa langue préférée. Ma langue préférée est Perl, c'est ce que je recommande. :) Cependant, au-delà de mes préférences personnelles, il existe de bonnes raisons pour lesquelles vous devriez envisager d'utiliser perl:

Tout d'abord, perl est un merveilleux langage à usage général. Il est facile de démarrer en perl en écrivant des scripts simples pour faire le même genre de choses que vous faites dans les scripts shell, comme manipuler des fichiers et prendre des décisions en fonction des entrées de l'utilisateur. Cela fournit une introduction très facile et progressive aux idées générales de programmation. Perl existe depuis un certain temps, il existe donc de nombreuses ressources (livres et sites Web) pour commencer.

Deuxièmement, perl est un langage incroyablement puissant et expressif qui prend en charge toutes les fonctionnalités de programmation modernes. Je l'utilise depuis plus de quinze ans et j'apprends toujours de nouvelles façons de faire les choses plus efficacement. Par exemple, si vous souhaitez explorer la programmation orientée objet, perl a cela (en particulier via Moose ).

Troisièmement, perl est livré avec la puissance et la flexibilité presque infinies de son référentiel de modules complémentaires officiel, CPAN . Par exemple, pour suivre l'idée d'écrire un logiciel de sécurité, supposons que vous souhaitiez développer une sorte de scanner de sécurité réseau personnalisé. Au lieu d'écrire tout cela vous-même, vous pouvez commencer par utiliser NMAP :: Scanner comme moteur de numérisation, puis écrire vos propres ajustements et améliorations en plus de cela.

Enfin, si vous voulez explorer la programmation Web, Perl l'a aussi. Catalyst est un moyen moderne et populaire d'écrire des logiciels Web en Perl , qui fournit un cadre Web MVC moderne pour développer rapidement n'importe quel type d'application Web.

En combinant tout cela, l'avantage de perl est qu'il vous permet de commencer à écrire de petits scripts et programmes en ligne de commande et de devenir progressivement des applications modernes complètes. Bien sûr, le prix de cette flexibilité est la complexité. C'est à vous d'étudier et d'apprendre à faire les choses correctement, perl n'applique pas les bonnes pratiques comme le font les autres langages. Personnellement, j'aime cette liberté, particulièrement associée à toutes les excellentes ressources disponibles sur le Web pour apprendre à utiliser Perl.

Phil Hollenback
la source
Perl est un langage de script (principalement); et la plupart des OS sont programmés en C.
Chris S
Bien sûr, mais je ne pense pas que cela compte beaucoup dans le contexte de cette question. Cela ne ressemble pas à ce que l'OP veut ou doit vraiment apprendre sur la programmation au niveau du système d'exploitation.
Phil Hollenback
Je suggère que Perl soit un bon moyen d'écrire du code pour une application de sécurité qui cible quelque chose écrit dans une autre langue (souvent C) que vous comprenez déjà. Par conséquent, si cette distinction est logique, je classerais Perl comme un outil que vous devriez apprendre à utiliser plutôt que comme un langage que vous devriez apprendre à comprendre (complètement).
BMDan
6

Trois langues vous tiendront en bonne place. Par ordre décroissant d'importance (c'est-à-dire que le premier est le plus important):

  1. Pseudocode . Souvent, l'implémentation avec laquelle vous travaillez sera un amalgame d'une demi-douzaine de langues et d'outils, dont vous ne connaîtrez que quelques-uns directement. Cependant, si vous savez quel modèle est implémenté, vous pouvez déterminer quelle entrée est transmise à un morceau et quelle sortie il doit donner, le tester en exclusion et déterminer si c'est le morceau qui casse.
  2. C . Pour le meilleur ou pour le pire, c'est ce qui gère l'univers (Linux), et il vous donne une vue assez proche du sol des choses que vous pouvez comprendre ce que font réellement les langages de niveau supérieur (par exemple PHP passe-par-référence, ou modèle de thread Java).
  3. À peu près tout, sauf C ++ . Un langage fonctionnel comme SQL ou, mieux encore, Haskell, ou quelque chose de pas tout à fait comme C-ey - si tout le reste échoue, Java peut fonctionner pour cela, mais c'est toujours très procédural - obtenir des notes élevées ici; L'idée est d'envelopper votre cerveau autour de quelque chose de complètement différent de ce que vous avez fait avant que vous ne pouvez pas vous empêcher de réaliser les limites de ce que vous avez fait auparavant. En termes d'utilité, bash appartient probablement également à cette liste, mais si vous n'avez pas de base dans autre chose, vous finirez par écrire C avec la syntaxe bash au lieu d'explorer vraiment sa puissance.
BMDan
la source
1
+1 pour le pseudocode. J'aime pseudo-coder dans les commentaires puis coder autour des commentaires
sreimer
2
+1 pour le pseudocode et "Tout autre chose que C ++". Dans le monde Linux, vous devez en apprendre au moins un script language, comme pythonou PHP.
yegle
2
Je ne sais pas si le pseudocode est une bonne recommandation pour un débutant. Le pseudocode sera compréhensible après avoir appris la plupart des langages de style c, alors devrait-on vraiment faire l'effort d'apprendre un pseudocode lui-même? Sans oublier qu'il n'y a pas de syntaxe de pseudocode unique, ce qui risque de dérouter un débutant.
JimB
@JimB: Le point est d'apprendre à penser de façon logique, quelle que soit la langue. ERD, UML et similaires sont les outils de la tour d'ivoire pour ce faire, mais vous n'avez rien à apprendre de si formel. L'idée est d'apprendre à tracer vos pensées et de les comparer au résultat attendu. Lorsque vous réalisez que, par exemple, la base de données n'a aucun moyen (inhérent) de savoir quels en-têtes HTTP ont été envoyés dans le cadre de la demande au serveur Web, vous pouvez éliminer une variable de la considération. De même, lorsque vous écrivez un pseudocode pour une fonction, vous repérez souvent des cas de bord et d'angle que vous n'auriez pas autrement.
BMDan
Je suis tout à fait d'accord, je pense juste que diriger un débutant vers le "pseudocode" va semer la confusion, car ce n'est pas une chose formelle. Le pseudocode de la plupart des gens va être une fusion des langages de style c dans lesquels ils sont le plus à l'aise, plus une syntaxe ad hoc.
JimB
4

Vous devez apprendre plusieurs langues. Je suggérerais de commencer par Python. Il est largement recommandé d'être facile à apprendre et d'être très utile, de nombreux excellents documents d'autoformation sont disponibles gratuitement, et je suppose qu'il est largement utilisé par les professionnels de la sécurité informatique. Presque chaque fois que je vois du code de démonstration pour les professionnels de la sécurité, c'est Python.

bgvaughan
la source
+1 pour python, et Python n'est pas seulement populaire dans le monde Linux.
xiao
4

Je suis sur le point de commencer un diplôme de sécurité informatique de 4 ans à Purdue. Le diplôme ne nécessite aucun cours de programmation.

Suis-je le seul à penser OMG !!!! À ce point?

Je crois également qu'il sera important pour moi d'apprendre également quelques langages de programmation

Je dirais que oui. Bien que vous ne vous attendiez pas vraiment à devenir un programmeur compétent, vous avez probablement besoin des compétences requises pour simuler / recréer des attaques et comprendre le fonctionnement du processus de programmation. Vous aurez également besoin des compétences nécessaires pour analyser les données et extraire des informations à partir de sources en vrac (comme les journaux). JimB a mentionné bash - et même si vous l'utiliserez sans aucun doute - cela ne prend que quelques heures pour apprendre les éléments essentiels. En fait, le seul endroit où vous verrez probablement bash est sur les systèmes Linux - mais les autres shells sont très similaires.

Je recommanderais d'apprendre awk et / ou Perl pour le crunching de données. Ne vous souciez pas de l'obligation de cocher une case orientée objet - mais je recommanderais également de regarder les langages non procéduraux.

L'apprentissage C vous exposera également à beaucoup d'informations sur la façon dont le code se transforme en programme exécutable (la compilation n'est qu'une étape dans un processus très complexe).

Le choix évident pour quelqu'un intéressé par le développement Android / mobile serait java - mais java essaie très fort d'empêcher le développeur d'avoir à faire face aux réalités du fonctionnement et des protocoles - d'après mon expérience, c'est là que vous rencontrez des problèmes de sécurité avec Java applications. c'est-à-dire que cela pourrait vous aider à atteindre votre objectif ultime, et il sera joli sur votre CV, mais ne vous attendez pas à apprendre Java pour compléter vos connaissances en sécurité.

symcbean
la source
1
Tu n'es pas le seul. : -o
Keith
2

Mon conseil:

  • bash(et ses semblables) ne sont pas des langages de programmation à usage général. Bien qu'il soit possible d'accomplir des scripts sophistiqués, bashce n'est pas la meilleure façon d'apprendre la programmation en général. C'est le moyen le plus naturel d'accomplir des tâches d'administration de systèmes qui tournent principalement autour de l'exécution d'autres programmes, de la gestion de leurs fichiers et répertoires de données et du marshaling des entrées et sorties vers et depuis ces derniers. Si bashc'est un marteau, réservez-le aux problèmes qui ressemblent vraiment à des clous. Apprendre à faire quelque chose de non trivial dans bashsera beaucoup plus facile si vous apprenez de très petits sous-ensembles de sedet awk(puisque la manipulation de chaîne dans bashest largement inspirée par la syntaxe d'opérations similaires dans ces "petits" langages).
  • Pour la programmation à usage général sous Linux, vous entendrez de nombreux arguments passionnés. Les deux meilleurs prétendants sont Perl et Python . Ce sont deux langages de script de très haut niveau à usage général, qui exposent suffisamment de fonctionnalités de bas niveau pour effectuer presque toutes les opérations accessibles à n'importe quel processus de l'espace utilisateur sur votre système, et avec d'énormes collections de modules et de bibliothèques pré-écrits disponibles.

Je vous recommande de lire un texte d'introduction sur C et de passer un peu de temps à exécuter les commandes straceet ltracesur certaines commandes utilitaires simples comme lset mkdiret /bin/echoetc. (En fait, ces jours-ci, je suggère ltrace -Sau lieu de stracemais incite à la sortie des deux commandes et dans la ltracesortie augmentée par l' -Soption sera extrêmement éducative).

C est le langage de programmation principal dans lequel le noyau Linux et la libc GNU sont écrits. (Les petites pièces sont en montage). Presque tous les programmes sur un système Linux (ou autre système UNIX) sont liés aux bibliothèques C (libc). Les principaux interprètes Perl et Python (et la plupart des autres langages de script) sont également écrits en C. Ces programmes (le noyau, les bibliothèques système communes et les divers interprètes de langage de script) sont tous écrits par des programmeurs C dont la conception et les fonctionnalités sont fortement influencées. par leurs implémentations sous-jacentes. Ainsi, une compréhension plus approfondie de l'un de ces éléments implique éventuellement de comprendre C. Vous n'avez pas besoin de connaître quoi que ce soit sur C ++ ou Java pour comprendre la programmation à ce niveau. (Ceux-ci peuvent chacun être intéressants et nécessaires en fonction de votre carrière,

Donc, si vous êtes d'accord avec mes prémisses jusqu'à présent, nous l'avons réduit à un choix entre Perl et Python.

Voici où les véritables guerres de flammes commencent.

Mon conseil est de se concentrer d'abord sur Python (2.x). Python a une syntaxe relativement simple et cohérente. Vous pouvez apprendre les bases de la syntaxe Python en quelques heures et c'est la grande majorité de la syntaxe que vous rencontrerez jamais. Il n'y a que quelques fonctionnalités (listes de compréhension, expressions de générateur, décorateurs) qui sont des rides de la syntaxe de base. Ainsi, la plupart de vos efforts dans l'apprentissage de Python seront consacrés à l'apprentissage des bibliothèques standard étendues et à essayer de trouver la "meilleure" façon de les utiliser (et de déterminer quels sont les ensembles spécifiques d'exceptions qui méritent d'être manipulés pour rendre vos programmes robustes) et, surtout, dans l'apprentissage des concepts sous-jacents.

Je pense que les bibliothèques étendues de Python et sa syntaxe relativement simple ont deux inconvénients distincts.

Tout d'abord, lorsque vous apprenez à faire quelque chose à un niveau très élevé en Python, vous pourriez trouver fastidieux l'idée de devoir travailler à un niveau inférieur. Où je travaille Perl est la norme. Je prototype mon travail en Python, où je sais que je peux le faire fonctionner beaucoup plus rapidement et de manière fiable qu'en Perl; puis je redoute de devoir passer et de le porter à Perl pour mes collègues. (J'étais raisonnablement bon en Perl des années avant d'utiliser Python --- ce n'est donc pas une simple question de familiarité).

L'autre inconvénient est qu'il est parfois difficile de trouver le moyen le plus élevé d'accomplir une tâche donnée en Python. Par exemple, pour récupérer une page Web, vous pouvez d'abord essayer de le faire avec des sockets de bas niveau ... ce qui fonctionnera. Cependant, vous dupliqueriez pas mal de code que vous pouvez déjà trouver, y compris dans les modules urllibet / ou urllib2. Le fait même que les bibliothèques standard, à partir de la version 2.7.1, incluent les deux fait mon point. Dans la mesure du possible, les responsables de Python ont étendu les anciens modules et API de manière transparente; cependant, il existe des dizaines de cas où Python conserve deux ou trois modules où l'extension transparente n'était pas possible pour une raison quelconque. (Pour un autre exemple , vous pouvez regarder les options pour l' analyse des options de ligne de commande: argparse, optparseetgetopt. Il n'y a pas de mal à écrire vos programmes en utilisant getopt(le plus ancien d'entre eux). Pour les utilitaires très simples avec peu d'options et une convention d'appel rigide (utilisée uniquement par un petit groupe de personnes, par exemple), alors il n'y a rien de mal à marcher avec sys.argvsoi-même. Cependant, il vaut généralement la peine de lire attentivement les documents et de suivre les liens au bas des modules de niveau plus ancien ou inférieur qui décrivent les fonctionnalités plus récentes ou de niveau supérieur disponibles.

Mon conseil est basé sur mon opinion que vous voulez vous concentrer sur des concepts plus profonds et ne pas avoir à consacrer beaucoup de temps et d'efforts à des problèmes syntaxiques et linguistiques spécifiques. Comprendre quand utiliser un sous-processus, par rapport à un thread, ou les fonctionnalités de multi-traitement incluses avec Python a relativement peu à voir avec le langage et tout à voir avec la maîtrise de la programmation, quel que soit le langage. (Au moment où vous pouvez comprendre les arguments concernant le modèle piloté par événements de Twisted par rapport au threading et au multitraitement, vous aurez probablement maîtrisé Python et serez prêt à programmer dans n'importe quel langage).

Le contre-argument, pour Perl, est simple et pratique. Il y a pas mal d'autres emplois qui demanderont spécifiquement des compétences avec Perl. Perl est un langage puissant et possède des bibliothèques extrêmement étendues. (Le noyau de Perl distribué avec la plupart des systèmes Linux couvre une gamme de fonctionnalités plus petite que les bibliothèques Python standard; il est supposé que vous aurez installé un nombre important de packages supplémentaires à partir de votre distribution ou via CPAN --- Comprehensive Perl Archive Réseau). (En revanche, il y a moins de modules et de packages Python que je dois récupérer séparément ... ceux-ci sont disponibles auprès de PyPI --- l'index des packages Python).

Donc, si vous apprenez Perl, vous aurez une longueur d'avance pour trouver des emplois, en particulier des administrateurs système, à court terme. Cependant, la syntaxe de Perl est ... eh bien ... selon les mots de certains de ses propres passionnés ... "pathologiquement éclectique!" Perl peut être extrêmement concis et son code est rempli de ponctuation. Ceux qui l'aiment argueront sans cesse que c'est "facile" et est parfaitement logique --- et auront des possibilités infinies de le faire dans des forums qui sont remplis de confusion sur la façon dont un extrait de code donné a été interprété. La syntaxe et le langage utilisés dans la documentation et par ceux qui la prennent en charge dans les forums publics sont nuancés au point où vous pouvez consacrer des efforts considérables à les apprendre.

Maintenant, veuillez vous rendre compte que ce commentaire précédent est subjectif et biaisé. Il est possible que vous essayiez Perl et que sa syntaxe soit intuitive et agréable. Si oui, plus de pouvoir pour vous. Cependant, je trouve personnellement que ma compréhension des particularités de Perl se détériore très rapidement. Les principes fondamentaux que je retiens, mais je trouve que c'est difficile chaque fois que je dois y revenir pour plus de quelques lignes de code.

Il y a beaucoup d'autres langages que vous étudieriez, Java, Lisp et Scheme, TCL, Scala, etc. Cependant, je suggère de commencer par celui qui offre le meilleur équilibre entre utilité et simplicité.

Jim Dennis
la source
1

Dans le monde Linux, vous devez connaître deux choses fondamentales:

  1. Regular Expression. C'est un must. RegExest un "langage" universel, une fois que vous savez utiliser l'expression régulière, votre vie sera beaucoup plus facile :-)
  2. " quick & dirty" est très courant dans le monde Linux. Si vous pouvez faire faire votre travail, quelle que soit la laideur de votre solution, vous avez fait votre travail.

Donc, si vous voulez apprendre une langue sous Linux, vous devriez choisir un script language, comme python, PHPou même bash scripting.

Et, ma recommandation est PHP. C'est simple et moche. Il a un manuel en ligne détaillé . Il a un bon RegExsupport. C'est tout.

yegle
la source
2
Cela doit être la meilleure description de PHP que j'aie jamais entendue ... Quand vous enlevez la popularité, il n'y a pas grand-chose derrière cela: P
Gordon Gustafson
Un peu hors sujet, mais je pense que la principale raison de la popularité des PHP est que de nombreuses fonctions qui seraient dispersées dans de nombreux linker-library / packages dans d'autres langues sont standard en PHP (un peu comme regrouper la plupart des choses dont vous aurez besoin dans libc)
Phil Lello
1

Vous pouvez effectuer presque toutes les tâches dans presque toutes les langues, donc le bon choix est largement dicté par le problème que vous résolvez.

Il vaut vraiment la peine de connaître les langues des catégories suivantes:

  • Langages compilés (comme C / C ++ / Java). C / C ++ est un bon endroit pour explorer les problèmes de sécurité avec les dépassements de tampon, la corruption de pile, etc.
  • Langages interprétés (comme PHP). Un bon endroit pour explorer les problèmes avec les variables de type lâche et ne pas détecter les fonctions non définies jusqu'à ce que vous les appeliez
  • Langages de script (sh / bash / csh / ksh). Vraiment utile pour coller les nombreux utilitaires shell utiles (voir / bin & / usr / bin) ensemble

Je ferais un effort pour apprendre le C / C ++, car cela permet une corruption de pile et un accès direct à la mémoire. Ceci est important si vous souhaitez tester des problèmes de sécurité. De nombreux langages ont une syntaxe de type C (y compris JavaScript), c'est donc un bon tremplin.

Si vous travaillez beaucoup dans un shell, ce que je suppose que vous êtes en train d'apprendre Vim, vous finirez par apprendre des scripts de base du shell comme effet secondaire. UNIX Power Tools était un bon livre pour apprendre des choses plus avancées; Je ne sais pas si c'est encore publié.

PHP peut également être un bon langage à apprendre; le principal avantage qu'il offre aux nouveaux programmeurs est que de nombreuses fonctionnalités sont intégrées, plutôt que dans une bibliothèque à laquelle vous devez vous connecter (ce qui n'est pas une tâche complexe). Pour cette raison, la navigation dans les principaux documents vous apprendra beaucoup de choses.

Phil Lello
la source
1

Tout d'abord, quelques conseils négatifs:

Fondamentalement, ce que je prévois de faire, c'est d'apprendre à programmer côte à côte avec apprendre à utiliser Vim.

Ne faites pas cela. Trouvez un éditeur vraiment confortable. Apprendre à la fois la langue et l'éditeur est trois fois plus difficile que de les apprendre dans l'ordre (évidemment, l'éditeur devrait commencer par :-))

Comme je l'ai dit, j'entre dans la sécurité, donc je vais créer principalement des applications liées à la sécurité. La plupart seront liés au réseautage.

Applications de sécurité liées au réseau? C est un choix évident ici. Vous devrez accéder au réseau au niveau de l'API système, ce qui signifie que C est la voie à suivre. Bien sûr, cela ne signifie pas que tout doit être en C - une bibliothèque C + un $favorite-high-level-languagewrapper peut vous éviter les tracas liés au C dans les parties qui n'ont pas besoin de C.

Cela dit, j'ai quelques idées. Je pensais commencer par JavaScript, car il est multiplateforme, et je l'ai déjà vu suggéré.

Je parie que cela a été suggéré dans un contexte différent du vôtre. JavaScript a ses points forts mais ce n'est pas encore un bon langage généraliste. JS n'a pas de bibliothèques standard comparables à celles disponibles pour C, Python, Perl, Ruby, Java et compagnie.

En parlant de $favorite-high-level-language- mon conseil est d'aller avec Python. Il s'interface bien avec C, il est livré avec beaucoup de bibliothèques utiles et a beaucoup plus de bibliothèques disponibles en tant que modules complémentaires.

Rafał Dowgird
la source
0

Rien de mal à apprendre Javascript, mais il ne fonctionne que sous un navigateur, donc votre programmation sera limitée aux applications liées aux pages Web.

Il existe probablement autant de réponses au «qu'est-ce qu'un bon langage de programmation pour commencer» qu'il y a de langages. Ma valeur de tuppence est que vous pourriez faire pire que de commencer avec des scripts shell de base, juste voir ce que vous pouvez faire pour automatiser les tâches sans utiliser quoi que ce soit au-delà du shell, puis étendre cela en utilisant Perl, ou un langage similaire qui est né de la nécessité de le faire des tâches plus complexes que le shell n'est capable, après cela, et si vous êtes vraiment intéressé, cela ne prendra que quelques semaines, commencez à utiliser C ou un dérivé.

à propos
la source
3
Uniquement sur les navigateurs? Pas plus .
EEAA
Merci, je suis corrigé, mais je ne recommanderais toujours pas Javascript comme environnement d'apprentissage, pour un débutant, obtenir un support pour les versions non-navigateur serait un cauchemar.
blankabout
2
J'ai toujours pensé que ECMAScript est le langage de programmation et Javascipt se trouve au-dessus d'ECMAScript pour fournir des fonctions utiles pour manipuler le DOM. Javascript est pour le navigateur.
Jonathan Mayhak
0

Mes recommandations? Hmmm. Eh bien, vous devrez peut-être décider au fur et à mesure. Pour la plage saine et bien arrondie, vous pouvez suivre la voie habituelle du degré CS, peut-être pas dans cet ordre.

(1) C / C ++ - Vous pouvez obtenir le contenu orienté objet, et au moins vous aurez essayé. C ++ est la norme «professionnelle». (2) Assemblage (juste pour un peu - cela vous aidera à comprendre le fonctionnement réel du processeur, de la mémoire, etc. - vous n'avez pas à vous marier.) (3) Python / Perl / Bash - Obtenez ces les langages de script vers le bas, ils seront plus utiles pour votre niveau de Linux (4) PHP / Ruby, MySQL et HTML - Obtenez simplement votre programmation Web! Vous comprendrez l'ensemble du processus d'interaction serveur-client, un autre niveau informatique.

Besoin de concepts utiles? AI, réseaux de neurones. Ceux-ci devraient vous compléter.

Vous pouvez choisir l'une d'entre elles ou les toucher toutes. Ma langue? Tous, au besoin, mais je programme depuis 1984 et j'ai un diplôme CS, des jeux écrits et toutes sortes d'applications de systèmes embarqués. C'est ce que je fais. Vous devez découvrir qui vous êtes et ce que VOUS faites. Assurez-vous simplement que vous vous amusez.

Prendre plaisir!

Scott Foulk
la source
0

oups, mauvaise lecture de la sécurité des informations pour les systèmes d'information ... eh bien la plupart de cela s'applique toujours

Java

  1. Il doit y avoir un cours de programmation de niveau d'entrée basé sur Java qui comptera pour votre diplôme. C'est toujours agréable d'obtenir des crédits pour ce que vous apprenez.
  2. Cela vous donnera une certaine croissance de carrière si vous en avez marre d'être strictement un gars des systèmes ... ou si l'entreprise que vous travaillez plus tard décide que les systèmes sont comme des grille-pain, tout comme les personnes qui les exécutent.
  3. Orienté objet
  4. Vous avez dit que vous vouliez faire du développement Android. Cela va signifier Java.

Honnêtement, si vous travaillez sous Linux et que vous suivez un cours de programmation débutant en Java, puis que vous poursuivez avec quelques autres cours de programmation, les autres outils comme Bash sed / awk, etc ... devraient en quelque sorte se mettre en place. Si vous vous lancez vraiment dans les systèmes, vous pourriez ramasser du C plus tard, mais je ne dirais pas qu'il est très demandé et je ne dirais même pas que c'est une exigence d'être un gars des systèmes - à moins que vous ne soyez vraiment dans les internes.

YMMV

MLH
la source