Stroustrup e a admissão de complexidade C ++ [fechada]

4

Eu ouvi de um amigo que Bjarne Stroustroup admitiu que ele não conhece inteiramente a linguagem de programação C ++ devido à sua vasta complexidade

É verdade e existem algumas fontes referenciadas ou é apenas um exagero?

Esta afirmação deve estar presente em seu site, ele disse em uma entrevista / conferência há algum tempo

    
por John Smith 23.03.2013 / 10:45
fonte

6 respostas

15

Em um comentário à sua pergunta original, mencionei que havia visto algo semelhante, mas não consegui encontrá-lo. Bem, eu encontrei o que eu estava pensando.

De " entrevistas" página do Stroupstrup, há um link para um PDF (" Entrevista de Ryou Ezoe ")

Página 9 do PDF tem a citação que eu lembrei. Ele lê o seguinte (falando Stroustrup):

Even I can’t answer every question about C++ without reference to supporting material (e.g. my own books, online documentation, or the standard). I’m sure that if I tried to keep all of that information in my head, I’d become a worse programmer. What I do have is a far less detailed – arguably higher level – model of C++ in my head.

Então, se nada mais, eu encontrei o que eu estava procurando. Sua pergunta me forçou a fazer isso. Obrigado.

    
por 24.03.2013 / 02:14
fonte
17

Eu não sei se a Stroustrup disse algo assim. Eu nunca ouvi isso.

Eu assisti uma palestra de Brian Kernighan em 1992 ou por aí onde Kernighan apontou com humor que ele rotineiramente escrevia programas que usavam todos os recursos de C e nunca chegou perto de escrever um programa que usasse todos os recursos de C ++, mas seu ponto não era que o C ++ fosse incognoscível; em vez disso, a linguagem adicionou muitos recursos de propósito especial.

Mais genericamente: é muito difícil manter toda uma linguagem grande e complexa na sua cabeça de uma só vez. Se uma linguagem tiver recursos não ortogonais, haverá interações O (n 2 ) entre esses recursos.

    
por 23.03.2013 / 15:42
fonte
12

is it just an exaggeration? ...this affirmation should be present on his website

É apenas um exagero e você está certo, a afirmação disso está presente em seu site, bem na página de perguntas frequentes. A posição da Stroustrup sobre a complexidade do C ++ está claramente indicada em FAQ - > Por que o C ++ é tão GRANDE?

A citação completa desta seção é apresentada abaixo para sua conveniência, eu coloquei a fonte em negrito na parte do texto que endereça diretamente a sua pergunta (o Stroustrup não acha que o C ++ é muito complexo):

C++ isn't as big as some people imagine. It's not a tiny language designed to be a minimal language for teaching, but neither are the languages people most often compare it to, such as C, Java, C#. They too are huge compared to say, Pascal as Dr. Wirth originally defined it - for good reasons, I think. The programming world is far more complex today than it was 30 years ago, and modern programming languages reflect that.

The C++ standard is 740 pages, but that includes 400 pages of library description. The language features are described (in excruciating detail) in 340 pages. Similarly, TC++PL is 1000+ pages, but only 350 of those are devoted to the explanation of language facilities and their use; the rest discuss libraries, programming techniques, etc.

C++ directly supports (i.e., in the language) what some other languages support through libraries, so the language part will be relatively larger. On the other hand, if you want to write a "typical modern application", you need to consider operating system interfaces, GUI, databases, web interfaces, etc. the sum of language features, libraries, and programming conventions and standards that you must become familiar with dwarf the programming language. Here, C++'s size can be an advantage as far as it better supports good libraries.

Finally, the days where a novice programmer can know all of a language are gone, at least for the languages in widespread industrial use. Few people know "all of C" or "all of Java" either and none of those are novices. It follows that nobody should have to apologize for the fact that novices do not know all of C++. What you must do - in any language - is to pick a subset, get working writing code, and gradually learn more of the language, its libraries, and its tools. For my suggestion on how beginners can approach C++, see Programming: Principles and Practice using C++.

A citação errada a que seu amigo se refere provém provavelmente da mesma seção citada acima, como uma sátira sobre a declaração "os dias em que um programador iniciante pode saber toda a língua desapareceram, pelo menos para os idiomas difundidos uso industrial ".

Note que se você simplesmente soltar a palavra novato dessa citação, você pode fingir que "não pode saber tudo da língua" se aplica ao próprio Stroustrup.

Note, porém, que da maneira como é realmente declarado (com a palavra novato ), sugere que a Stroustrup acredita conhecer toda a linguagem e ainda mais, ele acredita que com experiência suficiente (suficiente para deixar de ser novato ), qualquer um pode saber.

    
por 23.03.2013 / 21:20
fonte
6

Desde 1998, o C ++ é um padrão internacional ISO, que basicamente significa que não é apenas uma pessoa que o redigita. É um comitê com muitas pessoas discutindo sobre recursos para adicionar ou coisas para mudar (depois de uma proposição ter sido preparada para revisão). Isso também significa que os detalhes da linguagem podem não ser totalmente compreendidos por todos os membros da comissão, principalmente porque o documento padrão C ++ é voltado principalmente para o implementador de compiladores.

Não vejo por que é surpreendente que o autor original não saiba todos os detalhes.

    
por 23.03.2013 / 14:03
fonte
5

Stroustrup escreve "A Linguagem de Programação C ++", que é descrita (pelo editor) como "sua referência definitiva" e "A Linguagem de Programação C ++, Quarta Edição, oferece uma cobertura meticulosa, ricamente explicada e integrada do toda a linguagem "(ênfase minha).

É possível que os editores estejam mentindo, mas também é possível que o Stroustrup compreenda o idioma todo ou possa pesquisá-lo bem o suficiente para seus propósitos em uma determinada situação. Estou inclinado a acreditar no último.

    
por 23.03.2013 / 11:52
fonte
4

É provável que seja um exagero, com o mesmo espírito da entrevista falsa com a Stroustrup, na qual ele basicamente " admite "que o C ++ foi concebido inteiramente como uma conspiração para promover a segurança do trabalho do programador.

Mesmo que seja verdade, o que isso realmente significa? O que significa "conhecer inteiramente" uma linguagem de programação? Isso significa que você conhece todas as palavras-chave? Isso significa que você conhece todas as funções da biblioteca padrão? Eu venho programando em Python há anos, e certamente não memorizei todas as funções na enorme biblioteca padrão.

Independentemente disso, afirmações sobre a complexidade do C ++ são frequentemente exageradas ou, pelo menos, enganosas. Eu regularmente programa em C ++ e Python. Ao programar em Python, muitas vezes eu tenho que examinar os documentos para encontrar os parâmetros exatos da função, ou algo assim, para alguma função na enorme biblioteca padrão do Python. Em contraste, eu mal sempre vejo qualquer documento C ++, porque praticamente tenho a sintaxe STL gravada na memória muscular, já que a biblioteca padrão C ++ é bem pequena e genérica em comparação com outras linguagens.

Sim, o C ++ tem muitos cantos obscuros, como ponteiros de função de membro, herança virtual, membros de ponteiro para dados, etc. Mas toda linguagem tem cantos obscuros. (Você sabia que o Java tem um tipo Void ? você memorizou completamente como trabalhar com memoryview objects em Python?) prática, esses recursos são tão raramente usados que você provavelmente precisará abrir uma referência, não importa se você decidir usá-los ou encontrá-los no código de alguém. Mas isso dificilmente mata a produtividade geral, porque, mais uma vez, esses recursos raramente são usados.

    
por 23.03.2013 / 18:04
fonte

Tags