¿Por qué ha prevalecido C sobre Pascal? [cerrado]

68

Tengo entendido que en la década de 1980, y tal vez también en la década de 1990, Pascal y C se enfrentaron bastante como lenguajes de producción.

¿La desaparición definitiva de Pascal se debe únicamente al descuido de Delphi por parte de Borland ? ¿O hubo más, como mala suerte o tal vez algo inherentemente malo con Pascal (alguna esperanza para su reactivación?).

Me interesan los hechos históricos y las observaciones que uno puede respaldar, en lugar de lo que le gusta y lo que no le gusta.

Konrad Morawski
fuente
10
Si básicamente solo tiene una empresa en bancarrota que admite el idioma con el que está trabajando, definitivamente no ayuda (estoy hablando de la Borland previa a la red).
Let_Me_Be
48
Respuesta de una palabra: Unix.
SK-logic
44
Huh ¿Qué es C?
Lieven Keersmaekers
8
En última instancia, Pascal se pierde porque utiliza cadenas basadas en 1.
Pieter B
77
@jk: Sin mencionar que en ISO Pascal, las cadenas pueden tener cualquier longitud, pero las cadenas de diferentes longitudes tienen diferentes tipos. Para poner en mayúscula cualquier cadena, necesitaría 256 funciones. Para agregar dos cadenas al azar, ¡necesitarías miles!
MSalters

Respuestas:

43

Pascal ha perdido la batalla principalmente por:

  • Verbosidad ( if ... then begin ... end, var A: array[0..15] of Integer)
  • Dialectos mutuamente incomprensibles y el estándar oficial.
  • Extensiones menos que impresionantes orientadas a objetos
  • El dialecto más exitoso y práctico, Turbo Pascal, nunca ha sido portado a plataformas que no sean DOS / Windows. Además, Borland nunca abrió las fuentes del compilador.
  • La "última esperanza" de Pascal, Delphi, fue posicionada por Borland como una plataforma de desarrollo de bases de datos dirigida a entornos corporativos. Este fue un movimiento de marketing desafortunado (hecho por personas de marketing, supongo), porque los ingenieros creativos odian las bases de datos y los entornos corporativos. Luego el fracaso de Delphi para Linux, Kylix.
  • Apple cambió a C y luego a Objective-C y, por lo tanto, mató a Pascal como lenguaje del sistema operativo
mojuba
fuente
19
El cambio de Apple a Objective-C se produjo mucho, mucho después de que dejó de usar Pascal. El sistema operativo y las bibliotecas originales de Macintosh se escribieron usando Pascal, pero Apple ofreció un buen soporte para C poco después de la introducción de Mac, y se había cambiado a C a principios de los 90. Apple adoptó Objective-C cuando adquirió NeXT, que sucedió después del regreso de Steve Jobs a fines de los 90.
Caleb
36
No creo que la verbosidad sea un argumento relevante. Como el código se lee más que la verbosidad escrita tiene beneficios.
johannes
14
¿No es la verbosidad exactamente lo que se defiende en los idiomas hoy en día (python vs. perl)?
Torre
77
No creo que la verbosidad sea una causa, por el contrario, es una de las fortalezas de Pascal.
9
Esto es incorrecto. Turbo Pascal fue ampliamente exitoso. El principal problema era que solo podía usarlo en DOS / Windows.
44

C es la base de Unix. En los años 80 y 90, Unix recibió cada vez más atención. Hoy, el sabor de Unix está en su teléfono inteligente.

Mouviciel
fuente
16
No solo UNIX. Windows y sus núcleos se escribieron principalmente en C. Sin mencionar que C ++ se hizo fuerte, lo que también debe haber hecho que C al menos sea un poco más popular.
Yam Marcovic
2
@ SK-logic Salió en 1984. No diría que C se había apoderado del mundo para entonces. Tuviste Smalltalk, Pascal y otros usados ​​prácticamente en todas partes (sin mencionar COBOL).
Yam Marcovic
3
@Yam: Unix y C ya se difundieron ampliamente en los años 80. Cuando estudié en la Universidad (principios de los noventa), Unix y C era "la plataforma" en la que a todos los desarrolladores serios les hubiera gustado trabajar. Unix se implementó en C, por lo que no habría habido Unix sin C. Smalltalk, Pascal y COBOL no jugaron un papel tan importante.
Giorgio
2
@Giorgio De hecho, después de que Dennis Ritche y Brian Kernighan establecieran C, reescribieron UNIX en C, por lo que fue mucho más fácil portar a otros tipos de máquinas.
Yam Marcovic
2
@ Steve314 Buenos puntos. Sin embargo, por lo que pude ver, los núcleos de Windows anteriores también se desarrollaron con Assembler. En la Asamblea, una convención de llamada no se aplica por definición de ninguna manera (de ahí la palabra "convención"). Por lo tanto, parece que el hecho de que recibió el nombre de "convención de llamadas Pascal" no necesariamente significa que fue el pionero del inventor del lenguaje de programación Pascal, o que Windows se desarrolló en Pascal. EDITAR: Acabo de leer tu comentario reciente. Supongo que no tenemos nada inteligente para agregar aquí en este momento. :)
Yam Marcovic
35

El ensayo Por qué Pascal no es mi idioma favorito de Brian W. Kernighan cubre los puntos principales de la crítica.

C es mucho más versátil y extensible. ¡Algunas personas incluso descubrieron cómo hacer (una especie de) programación orientada a objetos con C ! Además, el ensamblador en línea y otras características de bajo nivel lo convirtieron en un lenguaje importante para la programación de sistemas.

Felix Dombek
fuente
9
Si mal no recuerdo, Turbo Pascal (mi primer lenguaje de programación, por cierto) era compatible con el ensamblador en línea. He visto el ensayo de Kernighan antes. ¿Pero su crítica no se anticipó pronto?
Konrad Morawski
2
@Morawski, TP es de los 80, C es de los 70. Llegó más de una década tarde.
SK-logic
9
@Morawski: Además, Turbo Pascal fue solo una implementación de Pascal. El estándar describía un lenguaje que no era particularmente útil, por lo que los implementadores tenían que poner sus propias pequeñas extensiones para que las personas pudieran escribir programas útiles. La fragmentación probablemente fue un problema aquí.
David Thornley
@ SK-logic, PASCAL se definió por primera vez en 1970, y los primeros compiladores estaban disponibles en ese momento. Turbo Pascal apareció ca. 1984, después de la quiebra de Jim Tyson cuando la demanda de JRT Pascal FAR superó su capacidad de entregar productos. Turbo Pascal fue visto inicialmente con considerable sospecha porque todos recordaban a JRT Pascal, y muchas personas se habían quemado.
John R. Strohm
@ JohnR.Strohm, he estado respondiendo el comentario de Konrad sobre el ensamblador en línea en TP.
SK-logic
23

Aunque no era de uso exclusivo, Pascal fue diseñado para enseñar programación, no para ser utilizado como idioma principal.

Delphi y Object Pascal cambiaron eso. Pero en ese momento, ya era demasiado tarde.

Déjame ser
fuente
44
Sin embargo, BASIC tampoco fue diseñado para fines profesionales, pero está vivo y coleando
Konrad Morawski
11
@ Morawski: ¿En serio? ¿Aparte de VB?
55
@ Let_Me_Be Recuerdo algunas aplicaciones de Windows escritas en Borland (Object) Pascal o Delphi. Fue mucho más fácil que escribirlos en C / C ++. Creo que C # y Java sirven este dominio ahora.
quant_dev
11
Pascal pronto se convirtió en un verdadero lenguaje de propósito general. Nadie tuvo que esperar a Delphi. No veo cómo enseñar (o ser capaz de enseñar) a muchas personas un lenguaje de programación cuando son jóvenes implica su desaparición final. Todo lo contrario.
Yam Marcovic
10
@Morawski La única razón por la que todavía se habla y se usa BASIC (bueno, VB) es que el primer producto de Microsoft fue un intérprete de BASIC (bastante seguro de que no era un compilador) y lo han estado empujando por la garganta. Si hubieran elegido a Pascal, estaríamos hablando de VP.Net. El mundo también apestaría menos.
MetalMikester
18

No creo que C prevaleciera sobre Pascal. Para la mayoría de los programadores, Java prevaleció sobre Pascal. La categoría de programadores que solía programar en Pascal ahora elegiría Java (o C #) para el mismo trabajo. Los que solían programar en C se quedaron con C (y C ++).

La desaparición de Pascal es en mi humilde opinión, principalmente porque Borland se adhiere a su forma de trabajo de GUI, mientras que sus clientes se trasladaron a la Web. Borland nunca tuvo una oferta realmente atractiva para el desarrollo del lado del servidor. Solo en los últimos años, con Delphi muerto para todos los fines prácticos, aquellos que se quedaron con Delphi pasaron a C #. C / C ++ siempre ha sido una multitud diferente a la multitud de Pascal / Java / C #, creo, con los muchachos de C (++) mucho más técnicos / de bajo nivel en su enfoque.

Jaap
fuente
19
La desaparición de Borland fue mucho antes de la necesidad del desarrollo web. Su error fue simple: se olvidaron de lo que los convirtió en líderes en primer lugar (compiladores baratos, rápidos y eficientes disponibles para las masas) y se lanzaron a herramientas corporativas costosas (donde Microsoft y otros ya tenían una buena ventaja). Borland's la multitud tradicional tuvo que mudarse a otra cosa.
MetalMikester
@MetalMikester, esa es una verdad de Grado A allí mismo. Descartaron a los desarrolladores pequeños e independientes mientras perseguían el 'gran dinero' en ventas corporativas. Y desafortunadamente, todavía queda algo de eso, incluso con nuevos propietarios.
GrandmasterB
Dicho esto, tuvieron que lidiar con su falta de una buena opción para el desarrollo de aplicaciones web al mismo tiempo (debido a la larga insistencia en el cliente / servidor de todo en su línea de productos).
Jwenting
2
Java y C # tienen sintaxis de C y son muy parecidos con C, en lugar de Pascal ... también Java fue dirigido a programadores de C ++.
m3th0dman
11

Para simplificarlo: C es un ensamblador portátil, PASCAL es un lenguaje educativo.

Esta sección en la wikipedia lo cubre bien, de hecho.

editar:
Parece que algunos aquí no entienden mi respuesta. O en realidad más bien la pregunta.
Esta pregunta es sobre popularidad. Y la razón por la cual C es en última instancia más popular que PASCAL es que uno fue diseñado y comercializado como un lenguaje portátil que se ejecuta cerca del metal, mientras que el otro fue diseñado y comercializado como un lenguaje educativo, imponiendo mucha seguridad y claridad.
En última instancia, ni siquiera importa si el lenguaje no cumplió con los objetivos establecidos o si realizó logros inesperados. Y cualquiera que intente deducir la diferencia en popularidad de la superioridad de C sobre PASCAL está simplemente equivocado.
La clave de esta pregunta radica en la historia y la histeria involucrada en ella.

back2dos
fuente
2
Pero incluso la entrada de Wiki a la que está vinculando admite quemany major development efforts in the 1980s, such as for the Apple Lisa and Macintosh, heavily depended on Pascal (to the point where the C interface for the Macintosh operating system API had to deal in Pascal data types).
Konrad Morawski el
@Morawski: A pesar del hecho de que Apple pudo haber realizado enormes esfuerzos de desarrollo en ese momento, y puede haber creado productos en gran medida por delante de las alternativas, su participación en el mercado fue de titularidad. Ni Apple ni PASCAL son malos (de hecho, PASCAL fue mi primer idioma y todavía me gusta). Pero ambos no lograron satisfacer las necesidades de la realidad de la industria.
back2dos
44
@ S.Lott Genial, por lo que es un ensamblador PDP-11 portátil. ¿Cuál es la relevancia ahora? ¿Por qué debería preocuparme por PDP-11 en 2011? C no es un ensamblador portátil x86 de ninguna manera.
quant_dev
1
Y Lisp es un lenguaje para la investigación de IA, ¿y qué?
mojuba
1
@mojuba: "el propósito original de un idioma puede o no ser relevante", eso es algo con lo que estoy totalmente de acuerdo. Mi punto era que en este caso era relevante . ;)
back2dos
5

Durante los años 70 y principios de los 80, los compiladores de C eran relativamente fáciles de encontrar para computadoras personales, aunque la mayoría solo tenía un subconjunto de C (por lo que verá tantos anuncios diferentes de compiladores "C pequeños" en las revistas más antiguas ) Pascal era un lenguaje más grande y engorroso en los días en que solo los aficionados a la informática más ricos tenían discos duros (y un disco duro de 5 meg costaba varios cientos de dólares). Para la Apple 2 (mi primera computadora, y ni siquiera era un "plus"), ejecutar Pascal requirió comprar una tarjeta de memoria adicional (¡necesitaba 64k de RAM!) Y tomó varios disquetes para cargar, mientras que "C minúscula" los compiladores caben en un solo disquete (y podrían funcionar con 16k de RAM).

Pascal fue enseñado en currículos de ciencias de la computación, mientras que C fue principalmente autodidacta (a veces enseñado en currículos de ingeniería eléctrica). Pascal obtuvo una reputación entre los codificadores de vaqueros por ser un "lenguaje de esclavitud y disciplina", lo cual pensé que no merecía ya que nunca conocieron a ADA .

Los principales impulsores de Pascal en los años 80 fueron Apple (porque las API usaban los estándares de llamadas de Pascal) y Borland. Los compiladores "Turbo" de Borland fueron probablemente los mejores disponibles en el mercado, y la licencia "como un libro" los hizo mucho más populares que las compañías con licencias más viciosas.

Borland perdió su liderazgo en el mercado de desarrollo cuando Microsoft contrató a sus principales desarrolladores y gerentes de proyecto (como Hejlsberg, Gross y más de 35 otros), y finalmente desarrolló .NET y Visual Studio. Borland y Microsoft resolvieron la demanda un par de años después, pero Borland nunca se recuperó de la pérdida. En mi opinión, Delphi comenzó a marchitarse en ese momento (ya que las personas que lo enfocaron y condujeron fueron contratadas), y el cambio en el CEO al mismo tiempo llevó a Borland de una compañía compiladora a una compañía ALM (gestión del ciclo de vida de la aplicación) , cambiando su nombre a Inprise un par de años después. Las cenizas de Borland ahora son propiedad de Micro Focus.

Tangurena
fuente
Micro Focus? ¿Cuando sucedió eso? Pensé que era propiedad de Embarcadero (sean quienes sean), al menos durante los últimos años. Si Delphi es propiedad de una compañía que es "famosa" por sus herramientas COBOL ...
Steve314
@ Steve314, la división "codegear" se vendió a Embarcadero en 2008, y Micro Focus compró el resto de Borland en 2009. en.wikipedia.org/wiki/Borland#Later_Borland_years
Tangurena
1
OK, pero Borland desarrolló compiladores, bibliotecas e IDEs (Delphi, the Builders) y desarrolló algunos bla, bla, bla, que a nadie le importaron. ¿Me estás diciendo que alguien se preocupó lo suficiente por el bla bla bla para incinerarlo?
Steve314
5

Santo cielo, esta es una carga unilateral de hooey, ¿dónde están todas las personas que comenzaron en este sitio que tenían a Delphi como su idioma favorito?

Casi todos mencionan a Borland y 2/3 de las personas consideran que Delphi ha pateado el cubo. Bueno, lo siento amigos, Embarcadero compró la unidad CodeGear de Borland hace unos años (por dinero, no por caridad) y han estado haciendo cosas bastante sorprendentes, amalgamando algunas herramientas increíbles en su IDE increíble y creando una plataforma increíble. para desarrollo multiplataforma EN OBJETO PASCAL. Sin mencionar Lazarus y FreePascal en el lado de código abierto de las cosas.

Entonces, si esta es una pregunta histórica por la que C prevaleció sobre Pascal, entonces OK, esa es una afirmación aceptable para comenzar una pregunta. Pero la autoría del código en Object Pascal ha ido creciendo, no sé si el índice TIOBE significa mucho para ello, pero debe quedar claro que la gente todavía está escribiendo código en Object Pascal y picos de interés cada vez que Embarcadero lanza nuevas herramientas, por lo tanto, los humanos reales interesados ​​en escribir código nuevo (no solo mantener el antiguo) están interesados ​​en Delphi.

No estoy seguro de que puedas decir lo mismo para cualquier cosa relacionada con C.

Peter Turner
fuente
3
Debería estar muerto. Las únicas personas que todavía tienen una razón para usarlo son aquellas como yo, que están atrapadas en él debido a muchas aplicaciones VCL existentes. Todo el IDE de Delphi / C ++ Builder ha decaído del estado de la técnica a un desorden de errores durante los últimos 5 años. Los archivos de ayuda y la documentación no existen. El depurador es simplemente vergonzoso. Si deja de lado el IDE, realmente no hay razón para usar la versión Object Pascal sobre C ++, a menos que necesite compatibilidad con versiones anteriores. La principal ventaja de C ++ en este caso es que le permitirá portar su código para escapar del IDE de mierda.
1
Con respecto a C, en primer lugar, es el lenguaje completamente dominante en todo el sector incrustado y todas las nuevas herramientas están hechas para C. El conjunto de Windows y Linux es C. Toda la pelusa del teléfono inteligente está escrita en sabores C. C o C ++ domina en casi todas las áreas de aplicación donde se utiliza la programación. El estándar C ++ está recibiendo una actualización importante. Los nuevos subconjuntos seguros de MISRA de C y C ++ son exitosos para aplicaciones integradas, convirtiéndose el primero en estándar de facto de la industria. Entonces no ... no hay picos de interés, hay un interés constantemente alto.
2
@Lundin, ¿estás bromeando? He estado usando Delphi 7 durante los últimos 4 años, finalmente actualizado a 2009 y trabajando también en XE2. Finalmente, no necesito reiniciar el IDE cada 5 o 6 compilaciones para mantener mis puntos de interrupción. Además, Embarcadero ha creado una forma de usar Delphi Code para los programas de Android e iOS que es nueva, pero es genial, la ventaja es que está totalmente administrada por una empresa privada, por lo que las mejoras realmente llegan a las manos de los desarrolladores. .
Peter Turner
1
Aunque en realidad no soy un programador de PC, he estado usando Builder de aquí para allá desde mediados de los 90. Estaba mejorando constantemente hasta que en algún lugar alrededor de donde giró Codegear, aparentemente se rompió algo de equipo, porque ahora es peor que hace 10 años. De todos modos, esto está fuera de tema, ya que Delphi / Builder comenzó a extinguirse mucho antes del fiasco de Codegear / Embarcadero.
1

Mi opinión es que C y los lenguajes principales derivados de él, C ++, Java y C #, fueron adoptados por las compañías de software más grandes, como Microsoft y Sun / Oracle, y en las diversas pilas de desarrollo. Como resultado, se convirtió en la 'lengua materna' de Windows, Apple OS y Unix.

Pascal, a pesar de los mejores y a menudo equivocados esfuerzos de Borland, no logró ese nivel de penetración en el mercado.

jfrankcarr
fuente
3
Esto parece plantear la pregunta: ¿por qué C se hizo cargo de las empresas más grandes? MacOS comenzó con Pascal y se volvió más amigable con C. ¿Cuál fue la razón para eso?
David Thornley
1
@DavidThornley: creo que mucho tiene que ver con la contratación de programadores experimentados de primer nivel. C, mezclado con el ensamblaje, fue el lenguaje elegido para las principales aplicaciones de PC a partir de mediados de la década de 1980. Al adoptar una base en C, hizo que la contratación de programadores calificados fuera mucho más fácil y económica (sin recapacitación, etc.).
jfrankcarr
3
Pero acabas de hacer retroceder la pregunta una capa. ¿Por qué cambiaron los programadores experimentados de primer nivel? ¿Por qué fue C el lenguaje elegido? Knuth hizo su primera programación literaria en Pascal, luego cambió a C. ¿Por qué? Puede ser útil averiguar exactamente quién dirigió la transición, pero la pregunta plantea razones.
David Thornley
Trabajé en dos compañías de software en los años 80, no en un rol de programador sino en un rol de soporte. Basado en lo que puedo recordar, sospecho que la transición de MASM a C fue más fácil para aquellos que ya están inmersos en la programación de MASM. Recuerdo que no me gustaba Turbo Pascal, que los programadores con los que trabajé llamaban lenguaje de juguete, y no querías que comenzaran con QuickBasic. Aprendí MASM y C primero debido a esa presión de grupo. Eso también podría ser un factor, aunque eso no llega a la génesis real de la misma.
jfrankcarr
A finales de los 80, principios de los 90, C ya era muy popular. Puede encontrar un compilador como módulo estándar en cualquier implementación de UNIX (y UNIX era EL sistema operativo en el que la mayoría de los programadores querían trabajar). No digo que fuera más popular que Pascal, pero fue muy popular. Entonces, C ++, Java y C # son populares porque C era, no al revés.
Giorgio el
0

Pascal solo se hizo popular en un único entorno PC / DOS bastante limitado.

Incluso entonces había tantas aplicaciones MicroFocus COBOL ejecutándose en PC como aplicaciones pascales.

C era la base del sistema operativo UNIX y de todos los sistemas operativos MS / Windows.

La combinación de ejecución eficiente en hardware limitado y el acceso nativo a las bibliotecas subyacentes del sistema operativo y la GUI fueron probablemente las principales razones del éxito de C. Pascal nunca lo pirateó en las ventanas, y, Delphi llegó demasiado tarde para hacer la diferencia.

James Anderson
fuente
Creo que su comentario "... y todos los sistemas operativos MS / Windows" puede ser incorrecto. Windows fue originalmente diseñado y codificado en PASCAL. De en.wikipedia.org/wiki/Talk:X86_calling_conventions : "Solo pensé que tendría peso aquí. Busqué la palabra clave __pascal en la Guía del usuario de Watcom C / C ++, y está claro que: __pascal llamada convención se utilizó para OS / 2 API 1.xy Microsoft Windows 3.x "
John R. Strohm
@ JohnR.Strohm Las convenciones de llamadas y los lenguajes de implementación no son necesariamente uno y lo mismo. Microsoft había estado usando C probablemente por algún tiempo ya en 1993 (Windows 3.1 fue lanzado en 1992). Fuente de un tipo
un CVn el
IIRC a principios de los años 80 Microsoft usó Xenix mucho internamente, y probablemente comenzó a usar C de esta manera. Eso, y (Turbo) Pascal, después de todo, era el producto asesino de un competidor peligroso, Borland. En aquel entonces, la diferencia de tamaño entre Microsoft y otras grandes compañías de software como Lotus, Borland ... aún no era enorme.
wazoox