Hacer cosas sin librerias

Iniciado por patilanz, 19 Febrero 2014, 22:54 PM

0 Miembros y 3 Visitantes están viendo este tema.

patilanz

Hola estoy estudiando c++ con un libro pero siempre te dicen que tienes que utilizar por ejemplo para obtener flujo por el teclado tienes que utilizar la librería iostream
Pero yo quiero saber hacer lo sin utilizar ninguna librería. Osea conectarme con el teclado y esperar a que el usuario introduzca teclas o conectar me con la pantalla y imprimir algo.

Como hacer esto?

Saludos

rir3760

Cita de: patilanz en 19 Febrero 2014, 22:54 PMestoy estudiando c++ con un libro pero siempre te dicen que tienes que utilizar por ejemplo para obtener flujo por el teclado tienes que utilizar la librería iostream
Ello porque la biblioteca estándar de C++ esta garantizada en aplicaciones que se ejecutan sobre un anfitrión (el SO).

Cita de: patilanz en 19 Febrero 2014, 22:54 PMPero yo quiero saber hacer lo sin utilizar ninguna librería. Osea conectarme con el teclado y esperar a que el usuario introduzca teclas o conectar me con la pantalla y imprimir algo.
Un SO moderno (por ejemplo MS Windows) no te permite acceder directamente a recursos como el hardware[1], en su lugar utilizas su API, siguiendo el ejemplo si deseas utilizar la Win32 API para aplicaciones de consola la referencia del fabricante se encuentra a partir de la pagina Consoles.

Para lo que deseas debes utilizar un SO como MS-DOS o bien, en el caso de MS Windows, [1]Getting started with drivers.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

patilanz

Hola ppr lo que he entendido todo se realiza con librerías del sistema operativo o estándares ? Si quiero reproducir un sonido que se conecta con los drives de sonido no puedo sin usar una api?
Pero si es asi entonces si quiero hacer un drive que tambien es un programa o no?

Saludos

engel lex

CitarHola ppr lo que he entendido todo se realiza con librerías del sistema operativo o estándares ? Si quiero reproducir un sonido que se conecta con los drives de sonido no puedo sin usar una api?

las standares enlazan las de sistema para su uso...

CitarPero si es asi entonces si quiero hacer un drive que tambien es un programa o no?
driver*

también es un programa, algo más complejo y que tienes que tomar en cuenta que depende de la tarjeta de sonido independientemente (es decir posiblemente si la usas en otra pc no sirva), solo por nombrar uno de cientos de problemas que te dará...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

eferion

Cita de: patilanz en 20 Febrero 2014, 07:48 AM
Hola ppr lo que he entendido todo se realiza con librerías del sistema operativo o estándares ? Si quiero reproducir un sonido que se conecta con los drives de sonido no puedo sin usar una api?

Hay mecanismos para comunicarse directamente con los drivers... lo que sucede es que si bajas a ese nivel te encontrarás con el problema de que tus aplicaciones no van a funcionar en equipos diferentes al tuyo.

La razón es que los drivers son algo que está muy cercano al hardware y, por tanto, es muy dependiente del mismo. Quiero decir, si cambia el hardware cambian los drivers... y si tú en tu programa no añades la compatibilidad necesaria para detectar, reconocer y utilizar al menos los drivers más comunes del mercado tu aplicación no servirá para mucho.

El sistema software de un equipo se estructura en capas. Las capas más bajas y más cercanas al hardware son altamente dependientes del mismo... la finalidad de las capas más altas es proporcionar un entorno independiente y aislado a través del cual sabes que tu código siempre va a funcionar, independientemente de lo que haya por debajo.

PD.: no vas a aprender más por programar a bajo nivel, son cosas distintas y cada una tiene su lugar y sus usos.

ivancea96

Si buscas bajo nivel, te diría ensamblador. Pero hasta ensamblador, usa api de windows y otras.

Enviado desde mi ST21i mediante Tapatalk

Gh057

Hola patilanz, basícamente la programación es modular, es basa en "divide y vencerás" sea mediante estructuras o funciones, o hasta en el paradigma del POO el código se divide en diferentes partes, formando nuestra solución al problema planteado, según el algoritmo implementado.

El origen y la parte de más bajo nivel es el lenguaje máquina, luego el ensamblador como comúnmente se conoce; pero hasta él tienes diferentes sentencias ya definidas para poder operar... mas en todos los conocidos como lenguaje de medio o alto nivel (porque son más entendibles al humano, no por facilidad o dificultad de implementarlo) tienes funciones implementadas en bibliotecas (verdadera traducción a "library") para utilizar o bien crear las tuyas propias... con ello no solo resuelvas más rápidamente el prolema sino que puedes reutilizar código, ganas tiempo y es más fácil luego mejorar y depurar la aplicación.

Puedes irte creando tus propias funciones, entiéndase implementar algoritmos propios o ya definidos; pero en un futuro entenderás que no sirve "reinventar la rueda" y el usar métodos o funciones desde bibliotecas te permitirá hacer aplicaciones de mejor calidad. Saludos!
4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...

patilanz

Hola gracias por sus respuestas ya me ha quedado mas claro. Voy a intentar bajar a un nivel mas bajo para conocer los drivers y lo demás. Pero voy a utilizar las librerías ya existentes aunque siempre quiero conocer como funcionan por dentro ya que en la mayoría de los libros o tutoriales te dice que no se necesario pero yo creo que asi se aprende mucho mas ya que si no sabes como funcionan nunca aprenderás a crear tus propias librerías mas complejas.

Y otra cosa si quieres editar un programa ya existente o crear un exploit para el tendrás que conocer las cosas mas a fondo osea ensamblador y el lenguaje maquina supongo. O por ejemplo cuando creas un programa que necesita utilizar un hardware creado por mi mismo que se conecta por usb necesitas crear tus drivers y todo.

Muchas gracias

amchacon

#8
Cita de: patilanz en 22 Febrero 2014, 10:57 AM
Hola gracias por sus respuestas ya me ha quedado mas claro. Voy a intentar bajar a un nivel mas bajo para conocer los drivers y lo demás. Pero voy a utilizar las librerías ya existentes aunque siempre quiero conocer como funcionan por dentro ya que en la mayoría de los libros o tutoriales te dice que no se necesario pero yo creo que asi se aprende mucho mas ya que si no sabes como funcionan nunca aprenderás a crear tus propias librerías mas complejas.
En la librería estándar hay muchas cosas que puedes intentar implementar sin necesidad de meterte en el tema de hardware o APIS.

En C++ puedes intentar recrear las STL (vector,list,map...).

Cita de: patilanz en 22 Febrero 2014, 10:57 AMya que si no sabes como funcionan nunca aprenderás a crear tus propias librerías mas complejas.
Pues te equivocas completamente, no hay ninguna necesidad de saber como se implementan las librerías estándares (sobre todo las que van vía hardware). Tan solo tienes que aprender que hacen y como funcionan.

Es un paradigma que se llama "encapsulamiento".
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

patilanz

Bueno si creo que tienes razón pero si tendrás que entrar en APIS ya que por ejemplo para cambiar el fondo de escritorio de windows no creo que exista una librería para esto o cosas así de los sistemas operativos no comunes.

Saludos