Comentários

  • Acho que isso depende muito da pessoa que está aprendendo o assunto e da pessoa que o ensina

Resposta

“Existem 2 problemas difíceis na ciência da computação: cache, nomenclatura e erros off-by-1”

Comentários

  • I

d adicionar threading …

Resposta

Honestamente, construção do compilador!

Comentários

  • +1 Compilers era o mais difícil e o mais recompensador.
  • Estava lá com o mais geral funciona e uma boa preparação para uma codificação bruta, mas não ' acho que foi tão difícil. Talvez seja mais difícil sem usar YACC ou quaisquer ferramentas que usamos, não sei.
  • Os compiladores são realmente difíceis porque a maioria da teoria data de tempos de restrições de hardware insanamente severas e muitas das instruções formais não ' t avançado muito além disso. Dê uma olhada em Vamos ' s Construir um Compilador para ver como a escrita de um compilador pode ser fácil se você se aproximar dela de um ângulo diferente.
  • @Martin York, como redator de compiladores, acho que a complexidade da implementação de compiladores foi superestimada. Em geral, um compilador é muito mais simples do que um interpretador. Eu suspeito que ' um Dragon Book e seu tipo são os culpados, eles ' estão propondo as maneiras mais complicadas de fazer coisas simples e pagar muita atenção ao passo menos importante, ou seja, análise.
  • @Martin York, existem técnicas para manter um AST o mais simples e sustentável possível, não importa o quão complicado seja o idioma de origem. Também há uma série de técnicas muito simples, mas poderosas, para manter cada estágio de compilação trivial e isolado.

Resposta

Design & Análise de Algoritmos

Acho que essa pergunta depende do professor que você teve e de como essa disciplina foi organizada em sua carreira.

Analisar algoritmos pode ser tão difícil quanto alguém deseja. Considere que existem problemas não resolvidos, e não apenas isso: problemas que não podem ser resolvidos.

A questão é que você pode ter um problema e, se souber que não pode ser resolvido, isso é perfeito. Mas e se você não fizer isso? Você pode gastar muito tempo tentando demonstrar que é NP-Completo ou tentando encontrar uma solução de tempo polinomial para resolvê-lo.

Demonstrar NP-Completude não é fácil. Sim, muitos problemas são conhecido, mas a questão é encontrar as reduções para demonstrar que é NP-Completo. E se você passar muitas horas / dias / meses tentando demonstrá-lo e puder ser resolvido em tempo polinomial? 🙂

Existem também outros assuntos, como Compiladores , Teoria de grupos e Funções primitivas recursivas que podem ser tão tanto quanto o plano de disciplinas ou o professor deseja;)

Comentários

  • s / Analisis / Analysis … caso contrário, exatamente o que eu penso … funções recursivas primitivas, uargh !!
  • Concordo, eu me atrapalhei em meu diploma de bacharel sem nunca ter certeza de que jamais ' provei ' qualquer coisa (embora minha aula de Algoritmos fosse muito simples, devido ao professor)
  • Eu vou mostrar a você hoje em dia como os algoritmos podem ser difíceis 🙂

Resposta

Reconhecimento de padrão ie Inteligência artificial. Isso se refere à computação inteligente junto com outras ferramentas de reconhecimento de padrões, como reconhecimento óptico de caracteres, voz para texto, identificação facial, etc.

Muitas das coisas “legais” que você pode fazer ou gostaria de fazer com computadores dependem desses algoritmos, e temos tentado aperfeiçoá-los por décadas, sem muito sucesso.

Comentários

  • É ' é difícil porque ' não é algo que ' seja determinístico. O desenvolvimento de um bom reconhecimento de padrão de IA requer experimentação para cada aplicativo em que você deseja usá-lo, para garantir que você escolha o algoritmo certo, os recursos certos, etc …
  • Estou apenas começando a escalar esta montanha em particular (reconhecimento de padrões). É ' difícil. MUITA matemática. Grandes, enormes e intimidantes pilhas de matemática, olhando para mim, me desafiando a entrar.
  • bem … o reconhecimento de padrões também pode ser visto como estatística aplicada, ' não é apenas um problema na faixa de CS

Resposta

Minha escolha é teoria da computabilidade

(Hmm … talvez não seja tão importante, mas com certeza foi difícil)

Comentários

  • Eu concordo e pessoalmente generalizaria como en.wikipedia.org/wiki/Theory_of_computation .
  • Eu ' concordo que a Teoria da computação era difícil, mas também era uma das minhas disciplinas favoritas. Concedido, eu estava me especializando em matemática. ..
  • +1 Eu me especializei também. Eu poderia lidar com uma introdução a essas coisas, mas a versão de pós-graduação … que bom que eu a deixei cair!
  • foi difícil, não sabemos tanto sobre isso que não ' não importa muito.

Resposta

Existem apenas dois difíceis problemas em Ciência da Computação: invalidação de cache e nomes de coisas. – Phil Karlton

Resposta

teoria da categoria (matemática discreta), mas vale a pena

Comentários

  • Quais benefícios específicos você obteve com o aprendizado da categoria teoria?
  • @zvrba: uma compreensão mais profunda de técnicas de abstração e mapeamento de problemas
  • De onde você aprendeu isso?
  • @zvrba: I don ' t ver o livro na minha estante, ele ' provavelmente ainda está armazenado (reformando), mas acho que era este livro amazon.com/Category-Computer-Scientists-Foundations-Computing/…

Resposta

Criptografia

Se você fizer isso ligeiramente errado, pode custar milhões a uma empresa.

Comentários

  • Embora cada vez mais popular, o Cryp para isn ' t exclusivo para software.
  • Crypto isn ' t tão difícil. O problema é que a segurança não pode ' ser testada facilmente, então você só percebe seus erros quando alguém o hackear. Mas a falta de testabilidade se aplica à maioria das formas de segurança de TI, não apenas à criptografia.

Resposta

Sistemas operacionais, especialmente a parte que tem a ver com threading.

E a razão não é porque era tão difícil fazer 5 filósofos comerem pizza com um garfo. A razão é porque escrever código multithreaded está dentro e fora em si é difícil e não necessariamente fácil para a mente humana (pelo menos masculina – de acordo com minha esposa) computar.

Comentários

  • Deixe sua esposa escrever o código multithread então 🙂
  • Lembre-se, quando se trata de multithreading de memória compartilhada, o computador é um porco furtivo que está atrás de você. Duplamente quando se trata de um processador multicore; um núcleo pode ser distraindo você na frente de seus olhos onde você ' está assistindo, e o outro pode ir atrás de você e apunhalá-lo pelas costas.

Resposta

Eu também voto em Projeto do compilador. Especialmente onde entra a parte DFA e NFA. Eu também não sou tão claro sobre problemas NP e outras coisas.

Comentários

  • Sim, eu ' d teria tido mais dificuldade com compiladores se não ' estudasse a Teoria da Computação primeiro.
  • DFAs e NFAs são ração para galinhas. Espere até que você tenha que fazer a análise LALR (1).

Resposta

Teoria da Fila

Bem, tecnicamente, este é um ramo da matemática, mas é altamente relevante no CS.

Quase tudo no CS é baseado em filas (visível (óbvio) e invisível (não tão óbvio ou implícito)).

Nos primeiros dias do CS, as filas eram óbvias.
Uma fila de programas (cada programa um baralho de cartas).

Hoje em dia as filas não são tão óbvias. A internet, por exemplo: uma rede de comutação de pacotes, mas os pacotes formam filas e o roteamento dos pacotes é uma forma de minimização da fila.

Comentários

  • Ei ! (?Você é um (programador Lisp)
  • Não (tanto quanto (Pode-se (ver), Mas ((já foi conhecido)). Para acontecer)).

Resposta

Análise numérica

Não é muito difícil para os problemas dos brinquedos que você recebe no curso, mas quando você começa a considerar os problemas reais, eles se transformam em um trabalho penoso.

Resposta

Interpretar os requisitos do cliente quando o cliente não sabe realmente o que deseja. Isso não é ensinado na faculdade e é uma das habilidades mais essenciais para se ter.

Comentários

  • Eu ' não tenho certeza se concordo com este como sendo um conceito de Ciência da Computação. Eu também não ' veja como pode ser resolvido usando o método científico.
  • @ jmort253 – Isso é verdade, mas a ciência da computação tenta (sem sucesso na minha opinião) investigar este campo com métodos formais de desig ne validação.
  • Concordo que não é um conceito de " ciência da computação " – mas quando comecei minha carreira Eu não sabia / não sabia que os clientes não ' sabem o que querem. Achei que TODOS os projetos de software vinham com algum tipo de documento de requisitos formais. Talvez um tópico de aula para um curso de engenharia de software (talvez minha faculdade não ' o tenha abordado)?

Resposta

Pessoalmente, o meu era Lógica Formal. Foi difícil no início, mas assim que você definir as regras e conseguir brincar com elas o suficiente, seu cérebro vai Logic++;, o que no desenvolvimento é uma coisa muito boa.

Como observação, estou respondendo à pergunta diretamente – esse definitivamente não foi o assunto mais difícil quando me formei, mas provavelmente foi o assunto “aplicável na vida real” mais difícil.

Comentários

  • Lógica formal é algo com o qual eu tive uma relação de amor / ódio. Eu gostava de pensar sobre os conceitos, mas nunca consegui entender como isso estava me ajudando até mais tarde, quando encontrei problemas do mundo real que exigiam raciocínio lógico.
  • @ jmort253 – Foi o mesmo para mim realmente. Eu até me esforcei ao ponto de pensar que ' d falharia, estudei tanto e por muito tempo até que finalmente estalou na minha cabeça. Depois disso, os benefícios foram incríveis.

Resposta

Construções do compilador. Difícil, mas preciso entender os conceitos por trás dos

Comentários

  • Você deve votar a favor da mesma resposta que foi fornecida antes de você, em vez de dando a mesma resposta novamente.

Resposta

Kernel Projetar alguém? Bem, eu realmente não sei como isso é feito e quais são os recursos direcionados para um sistema operacional, mas para mim, pensar em projetar um kernel deve ser uma tarefa difícil.

Eu também penso em segurança do computador ; Não sei realmente o que torna um sistema inseguro, exceto, é claro, estouros de buffer óbvios, injeções de XSS e SQL.

Não tenho certeza, mas parece que alguns algoritmos também não são seguros; olhe para o projeto MetaSploit, ele lista todos os tipos e tipos de violações de segurança: você pode ver que existem várias maneiras de um programa apresentar falhas.

Resposta

Existem muitos tópicos estranhos no campo, mas minhas escolhas para dificuldade persistente absoluta são aquelas envolvendo Propriedades do sistema global . Exemplos deste tópico geral incluem:

  • Multi-threading seguro e sem deadlock.
  • Segurança

Isso é difícil porque você ” re atrás de algo que só existe quando tudo está correto; você precisa de uma propriedade de sistema global e, ainda assim, virtualmente todas as ferramentas disponíveis (e todas aquelas que escalam para problemas reais em minha experiência) só realmente fazem raciocínio local . É o processo de ir do raciocínio sobre as partes do programa para a coisa toda que é difícil, principalmente porque é inteiramente possível ter partes que estão todas corretas em si mesmas, mas onde ainda existem bugs sutis porque o os componentes estão organizados incorretamente; os bugs podem ser características emergentes indesejáveis…

Resposta

Management Information Services Durante meu período na faculdade, costumava ter uma disciplina de administração a cada semestre, o que me deixava totalmente louco.
Resistente! bem, assuntos como Design do compilador , Design do sistema operacional etc são difíceis, mas são realmente interessantes e desafiadores.Eu realmente baguncei assuntos como Sistema de Informação Gerencial / Serviços etc, pois eles são entediantes e você tem que passar por muita teoria.

Comentários

  • Cheios de tédio porque ' estão falando sobre as complexidades conceituais de cada sistema, embora metade das pessoas nunca tenha escrito nenhum sistema (mas certamente usaram uma variedade de). Além disso, os seminais usam tantas palavras carregadas, mas falham em fornecer um exemplo da vida real em inglês simples. Como os sistemas de apoio à decisão … não poderia ' você simplesmente deixar algumas capturas de tela de relatórios do Google Analytics, FML, apenas para colocar os alunos na mesma página antes de você fugir com um intelectual orgasmo na frente do público.

Resposta

Se você estiver trabalhando em C / C ++, os ponteiros são mais conceito importante para saber. Mas de alguma forma eu nunca entendi totalmente na faculdade.

Comentários

  • realmente? Quer dizer, cada pessoa é diferente, mas acho que há muitos (quer dizer, muitos ) tópicos mais difíceis do que apenas dicas . Por exemplo, Arquitetura do computador ' s , Assambler que de alguma forma está relacionada a ponteiros ; )
  • Verdadeiro, mas você ' achará mais fácil entender a referência de memória por meio de montadores, porque na verdade trabalha com ponteiros brutos , enquanto em C / C ++, você trabalha com referências a ponteiros, o que confunde muito as pessoas porque a abstração nunca é falada abertamente.
  • Ah assambler, o melhor programador ' s tea
  • O cara perguntou os tópicos que são difíceis, mas importantes, portanto, ponteiros.
  • @Matt: Você acabou de fazer meu dia: D @Manoj R: Ponteiros são triviais se você apenas pensar neles como acesso à matriz. Ou o acesso à matriz é difícil?

Resposta

Projeto e análise de algoritmos. Não é tanto que seja difícil entender e analisar algoritmos conhecidos , é que projetar e analisar novos algoritmos para problemas difíceis é difícil e requer um amplo conhecimento de muitas áreas e práticas na aplicação de muitas técnicas diferentes.

Resposta

Programação de restrição. que lida com problemas combinatórios, problemas NP-completos.

Resposta

Otimização de Algoritmo é um tópico desafiador.

Resposta

Qual é o assunto / teoria de CS mais difícil que você estudou, mas importante para o campo?

Matemática discreta.

Foi difícil porque as teorias são vagamente relacionadas entre si, mas elas “são usadas no CS. Muita memorização, eu acho …

Prova por indução, Big O, recursão, dividir e conquistar, Teoria dos grafos, blá blá .. argh!

Compilar para mim foi fácil, porque tivemos que estudar a Teoria dos Autômatos. ^^

Resposta

Notação Z / métodos formais usados para machucar meu cérebro na faculdade. Principalmente porque eu odiava. Difícil é muito mais fácil quando você gosta do que está fazendo e muito mais difícil quando você não gosta.

Resposta

Gosto de suas respostas (e não esqueci de votá-las), como compilador, kernel, etc., mas a maioria dos programadores nunca encontrou esses problemas. Há um problema um pouco mais fácil, mas mais comum: simultaneidade – threads, bloqueio. É muito fácil escrever um programa que produz erros mágicos, se cometermos até mesmo um pequeno bug na arquitetura de simultaneidade.

Então, eu digo, não é o problema mais difícil na computação, mas porque é comumente usado, é perigoso.

Resposta

Programação Orientada a Objetos

Provavelmente porque comecei a trabalhar com FORTRAN e APL, mas a mudança de linguagens estritamente procedurais para objetos tem sido algo que eu “tenho lutado por anos. Não ajuda que os chamados “especialistas” escrevam artigos e tutoriais conflitantes sobre o que significa ser orientado a objetos e as melhores / adequadas maneiras de construir programas orientados a objetos.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *