8
votes

Vous recherchez une langue de programmation utile pour la classe universitaire

Je suis un étudiant universitaire qui va prendre un cours de langue de programmation au prochain semestre. L'une des conditions de parcours est de spécialiser (pour le cours) dans une langue dans laquelle vous n'avez aucune expérience antérieure et n'est pas couvert dans le cours. J'ai commencé à regarder à travers des listes de langues, mais j'aimerais obtenir des commentaires et peut-être découvrir certaines langues que je ne suis peut-être pas au courant.

Les langues qui ont été rejetées / je sais:

  • Java (la favori de l'université)

  • (LISP (enseigné dans le cours, plus spécialement schéma) (et je l'apprends déjà)))

  • assemblage (enseigné dans COMP Org)

  • base (apparemment aussi ... de base ...)

    J'ai envisagé d'apprendre Haskell ou VB6, mais je me sens toujours comme des langues qui pourraient être plus utiles à mon processus de pensée que j'ai négligé. J'apprécie tous les commentaires et j'espère que ce n'est pas trop subjectif.

    Edit: Mes objectifs personnels du cours sont soit de faire l'expérience d'un paradigme qui seraient à la fois difficiles et utiles à mon processus de pensée dans le codage futur (par exemple, fonctionnel, etc.), ou pour étudier une langue qui me donnerait une plus grande Compréhension de la théorie de l'interprète / compilateur et de la transition entre l'assemblage et le code de niveau élevé (par exemple, c).

    Je considère fortement les études supérieures et la recherche en tant que choix de carrière, mais cela ne m'empêche pas de comprendre l'avantage des langages et des langues utilisées dans les contextes commerciaux. Toute information sur les langues utilisées dans les programmes d'AI serait particulièrement bienvenue, cependant.


2 commentaires

Golfscript est un must ;-) golfscript.com/golfscript


Juger de votre édition, ma suggestion est encore plus ferme de mon point de vue, et pour l'AI, vous pourriez regarder un prologue?


18 Réponses :


10
votes

Pourquoi ne pas aller pour erlang ?

intro de Wikipedia :

Erlang est une concurrence générale Langage de programmation et runtime système. Le sous-ensemble séquentiel de Erlang est une langue fonctionnelle, avec évaluation stricte, affectation unique, et dactylographie dynamique. Pour la concurrence suit le modèle de l'acteur. C'était conçu par Ericsson pour soutenir distribué, tolérant à la faute, applications sans arrêt en temps réel. La première version a été développée par Joe Armstrong en 1986. 1 Il prend en charge la chaude échanger ainsi le code peut être changé sans arrêter un système. 2 Erlang était à l'origine une langue exclusive dans Ericsson, mais a été libéré comme Open Source en 1998.

tandis que les threads sont considéré comme compliqué et Sujet PRONE ERREUR dans la plupart des langues, Erlang fournit un niveau de langue Caractéristiques pour la création et la gestion processus dans le but de simplifier programmation simultanée. Tout ce que tous La concurrence est explicite à Erlang, Les processus communiquent à l'aide du message passer au lieu de variables partagées, qui supprime le besoin de serrures.


2 commentaires

La chose que j'ai vraiment trouvée intéressée par Erlang est le fil. Je ne trouve pas l'article que j'ai lu récemment sur la vitesse de création de fil / destruction d'Erlang, mais voici une personne âgée qui avait des résultats similaires: sics.se/~joe/ericsson/du98024.html


Je suis d'accord. Je pense que lors de l'apprentissage d'une autre langue, l'un des critères les plus importants est (sans recourir à BF et autres) Comment Différents la langue de ce que vous savez. Compte tenu des trois modèles de programmation principale (procédure / tumulture, fonctionnelle, acteur), Erlang est probablement la langue d'acteur la plus mature disponible.



5
votes

C # sonne classique - vous ne le savez pas, et c'est à grande utilisation, il pourrait donc vous aider dans votre CV. Je voudrais également envisager de rubis, mais je vais exclure VB6 (obsolète).


2 commentaires

C # est presque identique à Java.


Je suis d'accord avec Brendan ici. Pas d'un point de vue des langues étant identiques, mais de la manière générale, les choses fonctionnent étant identiques.



0
votes

Je suppose que cela revient à ce que vous voulez apprendre et à quelle distance vous êtes prêt à y aller. J'ai toujours eu une tache molle pour Java, je pense probablement parce que c'est une langue amusante d'apprendre et si vous venez d'un arrière-plan dans lequel vous ne connaissez peut-être pas beaucoup sur OOP, il fournit également de grandes fondations de base aussi loin. comme une langue va.


1 commentaires

Sauf Java est d'abord dans la liste des langues qu'ils connaissent déjà ..



7
votes

Qu'en est-il de C? Il est assez similaire pour Java que vous ne passerez pas beaucoup de temps sur la syntaxe, mais suffisamment différent pour que ce soit difficile. En outre, il est toujours l'une des langages de programmation les plus couramment utilisés (lire: vous aurez besoin de l'apprendre un jour de toute façon).


0 commentaires

2
votes

Que diriez-vous de F # qui fonctionne sur le cadre .NET.


0 commentaires

3
votes

Chaque langue est utile (même GolfScript ... juste kidding)

Je vous recommande à tous (et toutes) de

  • C
  • C ++
  • C #

    parce que ces langues sont très polyvalents et profiter de l'utilisation à grande échelle.
    Notez que, tout en partageant la même lettre unique en leur nom et quelques similitudes syntaxiques chacune de ces langues exposer la sémantique très distinctes, caractéristiques et objectifs . Cela est vrai même de C et C ++ qui appartiennent à la même « famille » et sont souvent appelés comme C / C ++.

    Bien, les langues de cette série offrent individuellement tout à fait distincte une incomplète, mais perspicace « sommaire » de l ' « évolution » de la programmation impérative et une introduction à certains paradigmes et concepts clés .
    Le mot « Résumé » est utilisé ici vaguement, car beaucoup de ces concepts a même précédé le langage C, mais pas de façon traditionnelle. En outre, « Evolution » ne doit pas être compris dans son sens habituel du progrès linéaire vers le mieux et où les nouvelles remplace l'ancien.
    Quoi qu'il en soit l'instantané de cette évolution dans les langues dominantes peut être répertorié comme suit

    • avec C:
      pointeurs,
      une abstraction du langage d'assemblage,
      petite mais bibliothèque d'exécution utile au service des quelques types fondamentaux et les services publics des jours (principalement la manipulation de chaînes, FILE E / S, les fonctions mathématiques, gestion de la mémoire explicite)

    • avec C ++
      programmation orientée objet,
      modèles,
      « Intégré » soutien aux structures de données communes et conteneurs,
      la gestion des exceptions,
      une certaine sécurité de type (principalement appliquée au moment de la compilation)

    • avec C #
      la gestion automatique de la mémoire,
      vaste « standard » et « étendues » bibliothèques (reflétant l'extrême variété et l'étendue des systèmes et des technologies associées aux applications modernes: XML, protocoles Internet, des cadres Event driven, l'accès base de données, Design Patterns, pour ne citer que quelques-uns)
      accès de programmation fonctionnelle,
      typage fort, y compris lors de l'exécution,
      réflexion / introspection,
      distinction quelque peu floue entre le langage et les cadres.


      Modifier la note:
      Mon intention initiale dans l'édition de cette réponse était de clarifier le fait que C, C ++ et C #, sont effectivement des langues très distinctes. L'idée que la série constitue un résumé approximatif et un peu perspicace de la programmation grand public au cours des 35 dernières années se est imposée à moi pendant que je pensais à ces langues. Je présente mes excuses à Petr Peller pour étendre bien au-delà ce qui peut avoir eu l'intention de son poste d'origine; S'il vous plaît ne hésitez pas à revenir la modification et / ou modifier autrement, si cela ne correspond pas à votre goût!
      Cheers,
      -mjv -


2 commentaires

S'il vous plaît définir "C Family" ... Les trois CS que je pense sont des langues assez différentes, à mon avis et partager principalement des similitudes syntaxiques, mais sont des parents plutôt lointains.


C, C ++ et C # sont des langues différentes mais chacune a son utilisation. Apprendre tout (tous) d'entre eux vaut le temps. J'ai cherché wiki et je pense avoir mal utilisé le terme "C famille C". en.wikipedia.org/wiki/category:c_programming_language_family



16
votes

ruby. C'est pur OO et possède d'excellentes fonctionnalités que vous ne trouvez pas facilement dans d'autres langues telles que des blocs de code, des mixines et une grande API méta-programmation. C'est une classe informatique chic, vos professeurs aimeront votre choix.


1 commentaires

Sans parler de ce serait bien d'ajouter une langue de script à votre répertoire, et ce serait un grand plomb dans Ruby On Rails Si vous choisissez de choisir cela plus tard.



2
votes

Quand j'ai étudié à l'université, nous avons commencé avec Lisp, que je pensais était vraiment étrange (j'avais fait beaucoup de programmation avant de commencer l'université). Après quelques semaines, a commencé à voir l'élégance de Lisp - la syntaxe de la langue est extrêmement simple, laissant l'accent sur les algorithmes et les concepts. Cencalité Lisp est une langue fonctionnelle, comparée aux langues impératives principalement utilisées, ce qui oblige une autre mentalité lors de la programmation.

Pour moi personnellement, la compréhension des concepts de programmation que j'ai gagnées du cours LISP a été exterrie précieuse dans tous les travaux de développement dans diverses langues que j'ai faites depuis lors, alors mon vote est pour LISP.


1 commentaires

En fait, j'apprends déjà Lisp à ma propre période. Je pense à se spécialiser dans Ai et j'ai entendu dire que beaucoup de projets dans ce domaine utilisent Lisp sous une forme ou une certaine mode.



5
votes

Une autre langue intéressante pourrait être SmallTalk.


1 commentaires

+1 SmallTalk Totalement ajusté ma façon de penser en termes de ...



2
votes

Vous pouvez essayer de spécialiser dans COBOL pour le cours. Oui, je comprends que Cobol est vieille école, mais écoutez-moi.

Il présente une application réelle intéressante dans le fait que de nombreux systèmes anciens utilisés par les entreprises sont toujours écrits et les entreprises n'ont aucune raison de changer cela - le code fonctionne toujours. Cependant, les personnes qui ont écrit le code dans les années 1970-80 sont retirées de l'industrie. Cela crée de grands volumes de code non pris en charge, le code que vous pourriez vous trouver simplement de devoir maintenir un jour dans un cadre de l'industrie.

Vous pouvez utiliser OpenCobol comme compilateur. Il est disponible ici: http://www.opencobol.org/


2 commentaires

Cobol a très peu d'enseigner à partir du point de vue conceptuel. La seule raison d'apprendre que c'est si vous allez l'utiliser et que quelqu'un souhaite entrer dans la recherche est peu susceptible de l'utiliser.


+1 pour suggérer quelque chose que personne d'autre n'oserait jamais suggérer!



0
votes

Je vois que vous n'avez pas mentionné Python - mais si Haskell est trop conventionnel pour vous, vous voudrez peut-être regarder ailleurs ... En fait, je vous recommande d'essayer HASKELL pour le système de type, ce qui fait tout ce qui est 'T Un langage fonctionnel moderne a l'air malade par comparaison.

Vous pouvez envisager une langue basée sur une pile comme Forth ou PostScript. C'est un peu différent de tout mentionné ci-dessus.


0 commentaires

0
votes

Si vous avez accès à un Mac, essayez peut-être l'objectif-C? Les outils DEV sont tous gratuits et il s'agit également d'une compétence utile pour le futur travail iPhone.


2 commentaires

On peut apprendre facilement l'objectif - C sans accès à un Mac. GCC comprend un compilateur de l'objectif-C depuis pour toujours (et si je me souviens bien, alors même Apple utilisait celui-ci). Il est cependant plus utile dans un mac-environnement.


@ Joachim Sauer: assez vrai, mais je dirais que sans accès à un Mac, l'apprentissage Obj-C est frivileux / inutile.



0
votes

ne peut pas être faux en utilisant JavaScript / Ecmascript!

aller au développeur.yahoo.com/yui/theater /

et regarder les vidéos JS de Douglas Crockford


0 commentaires

1
votes

considère Scala.

C'est probablement la langue «la plus multi-paradigme», dans un sens qu'il comprend des concepts plus non liés que toute autre langue «réelle». Pas quelque chose que vous voudriez utiliser dans un emploi, mais cela devrait être idéal pour apprendre - parce que si vous le maîtrisez, peu de choses pourraient vous surprendre plus tard.


1 commentaires

A décidé d'apprendre Scala pour une utilisation personnelle au lieu de Java. On dirait une bonne langue, tout ce que je suis un peu nerveux sur le Hodge-Podge des fonctionnalités.



4
votes

Maintenant que vous avez expliqué vos objectifs, merci, je vais peser dans:

En savoir plus (ou plus si vous voulez) de HASKELLL, LISP ou ML, dans cet ordre de préférence. L'un de ces objectifs va frapper vos objectifs - vous défier de penser à la programmation de manière nouvelle, et tout ou partie d'entre eux est idéal pour la mise en œuvre de compilateurs (voir SICP, la mise en place d'un compilateur moderne en ML).

Les langues fonctionnelles sont (à juste titre à mon avis) très utilisées dans les universités pour leurs belles propriétés. Je pense que Haskell est la chaude en ce moment. Sautez sur le train, le trajet sera intéressant et une bonne préparation pour le travail des diplômés.


0 commentaires

2
votes

Quand j'ai pris des langues de programmation, je devais apprendre 6 nouvelles langues, afin d'être honnête que vous sortez assez facilement.

Je pense que vous devriez choisir quelque chose qui a une valeur marchande. Je pense que la plupart des cours de langage de programmation sont enseignés par une année junior, donc le fait que vous n'avez aucune expérience avec C est un peu troublant. Vous connaissez déjà Java, alors je ne me concentrerais vraiment pas sur c #. Vous ne connaissez probablement aucune langue logique comme prolog, mais ce n'est pas très commercialisable. Donc, ma liste par ordre d'importance serait

c

ml

erlang

prolog

python


3 commentaires

Facile pour le cours peut-être, mais cela ne m'empêche pas d'apprendre plus de langues à mon temps. Je suis d'accord avec vous en disant que le programme CS n'est pas aussi solide que j'aimerais que ce soit. Tout va mieux pour obtenir des conseils afin que je puisse développer mes connaissances seul.


Quelqu'un qui pense aller à Grad School et en recherche ne devrait pas s'inquiéter de quelles langues sont commercialisables maintenant. D'autre part, j'aime votre liste.


Je suppose que j'ai manqué la partie à propos de Grad School. Maintenant, je pense vraiment c, car ce sera une nécessité pour lui d'avoir une véritable compréhension de ce qui se passe ci-dessous. Mais C n'est pas une langue très difficile à apprendre ou à utiliser, juste un difficile à utiliser correctement. Je suis sûr que lorsque vous prenez votre classe OS ou votre deux, vous apprendrez c, de nombreuses écoles le font de cette façon. Bonne chance.



1
votes

C pour un langage de programmation d'agrafe. erlang ou Haskell pour quelque chose hors de l'ordinaire. J ou K pour Terminer WTF.

Vous pouvez également envisager comme, Python . Extraits: P>

#!usr/bin/python   uh from sys import exit
# Grab the user's name.    
ok so like name = raw_input("yo! what's your name?" ) right

# Make sure they entered something, then say hi.   
if name.strip() is actually like "":
     toootally just exit()   
else:
     um yeah
     print like "Hi %s, nice to meet you." % name


0 commentaires

0
votes

Pour une expérience d'apprentissage, vous ne pouvez pas battre CLU. C'est le travail que Barbara Liskov a obtenu le prix Turing pour. Son équipe a résolu un tas de problèmes toujours pertinents aujourd'hui et, comme on l'a dit à propos de Algol 60, CLU était une amélioration de la plupart de ses successeurs.

Un bon moyen de plonger votre orteil dans l'eau est de lire un Premier document de Liskov et Zilles , bien que gardez à l'esprit que le système de type statique n'avait pas encore été développé, et c'est l'une des pièces les plus intéressantes.


0 commentaires